domingo, 28 de fevereiro de 2021
DVD
ConteÚdo
DOWNLOADS
Interação
dicas aleatórias
Artigos

Numeração incremental controlada pelo seu sistema

A função “NovaCotação” tem por finalidade criar um novo código para uma cotação. Pode ser usada para criar código para qualquer coisa, até um novo imposto (arghhh)!"

Por: Amaral (amaral@ativoaccess.com.br)
Publicado: 12/07/2007  Visitas: 3860
Dificuldade: Intermediário

Indicação de Artigo  Imprimir

A função “NovaCotação” tem por finalidade criar um novo código para uma cotação. Esse código é incremental de 1 a partir do código de maior valor pré-existente na tabela de cotações e ainda é acrescido de 2 dígitos representativos do ano em curso. Se nada existe na tabela a função cria o código 0001AA (onde AA é o ano). Se houver “quebra” de ano a função reinicia do código 0001.

Id_Cotação...Cód_Cotação

1....................COT-0001/06
...
500................COT-0479/06
501................COT-0001/07
...
980................COT-0458/07
981................COT-0001/08
...

Imagine uma tela de cotações que tem o botão de comando NovaCotação. O código está no evento “Ao Clicar”. O comentário é o texto iniciado por uma aspa simples. No seu código deverá ficar com cor verde.

NR: É claro que existem outras maneiras de se obter o mesmo processamento. Essa é só uma dessas maneiras.

Private Sub NovaCotação_Click()

On Error GoTo Err_NovaCotação_Click ‘se houver erro a função desvia o processamento para a rotina Err_NovaCotação_Click.


DoCmd.GoToRecord , , acNewRec ‘cria um novo registro

Dim strcotatual As Double ‘esta variável irá receber o código atual eventualmente existente.
strcotatual = Nz(DMax("[Id_Cotação]", "tblCotação")) ‘Aquí o pulo do gato: obtem o código atual do Id_Cotação que é do tipo autonumeração, isto é, a função DMax busca o maior Id_Cotação, que por sua vez contem o maior código da cotação atual. A função Nz serve para zerar um campo vazio ou nulo.

If strcotatual = 0 Then ‘testa o código atual obtido e se for zero move zero para o campo Código da Cotação.
Me.Cód_Cotação = 0
Else ‘senão move o valor encontrado. Veja como usar parâmetro na função Dlookup. Preste bem atenção que o valor do parâmetro foi obtido antes: strcotatual = Nz(DMax("[Id_Cotação]", "tblCotação")).
Me.Cód_Cotação = DLookup("[Cód_Cotação]", "tblCotação", "[Id_Cotação] =" & strcotatual) ‘aquí o código move o código da cotação que está no registro do Id_Cotação para o código da cotação da tela.
End If

If Me.Cód_Cotação = 0 Or Mid(Me.Cód_Cotação, 5, 2) <> Mid(Year(Date), 3, 2) Then ‘testa se houve quebra de ano. Quebra de ano significa mudar de 2007 para 2008. Para isso usou a função Mid para separar o ano do código.
Me.Cód_Cotação = "0001" & Mid(Year(Date), 3, 2) ‘se quebrou o ano reinicia a numeração.
Else
Me.Cód_Cotação = Format(Int(Mid(Me.Cód_Cotação, 1, 4) + 1), "0000") & Mid(Year(Date), 3, 2) ‘se não quebrou o ano incrementa 1.
End If

Exit_NovaCotação_Click: ‘se o processamento cair aqui o comando Exit Sub encerra a rotina.

Exit Sub

Err_NovaCotação_Click: ‘havendo qualquer tipo de erro o sistema emite uma mensagem com o número do êrro.

MsgBox Err.Description
Resume Exit_NovaCotação_Click ‘envia o processamento para a saída.

End Sub

A seguir o código livre dos comentários:

===========================================================

Private Sub NovaCotação_Click()
'Amaral - amaral@ativoaccess.com.br. A reprodução está liberada. Apenas cite a fonte.
On Error GoTo Err_NovaCotação_Click
DoCmd.GoToRecord , , acNewRec
Dim strcotatual As Double
strcotatual = Nz(DMax("[Id_Cotação]", "tblCotação"))
If strcotatual = 0 Then
Me.Cód_Cotação = 0
Else
Me.Cód_Cotação = DLookup("[Cód_Cotação]", "tblCotação", "[Id_Cotação] =" & strcotatual)
End If
If Me.Cód_Cotação = 0 Or Mid(Me.Cód_Cotação, 5, 2) <> Mid(Year(Date), 3, 2) Then
Me.Cód_Cotação = "0001" & Mid(Year(Date), 3, 2)
Else
Me.Cód_Cotação = Format(Int(Mid(Me.Cód_Cotação, 1, 4) + 1), "0000") & Mid(Year(Date), 3, 2)
End If
Exit_NovaCotação_Click:
Exit Sub
Err_NovaCotação_Click:
MsgBox Err.Description
Resume Exit_NovaCotação_Click
End Sub

=============================================================

Para exibir o código use a máscara: "COT-"0000/00;;_

=============================================================

Lembre-se: ao copiar e colar códigos de outros programadores sempre cite a fonte. E o mais importante: se vc souber "ler" um código provavelmente saberá escrevê-lo. Vc também pode ter o seu código comentado publicado no AtivoAccess. Escolha aquele código que vc criou e na sua opinião ficou "matador". Faça todos os comentários como está no exemplo atual. Lembre-se que é preciso circunstanciar o código, ou seja, dar todas as informações para que o leitor entenda o que se pretende fazer. Em seguida envie para nós (ativoaccess@ativoaccess.com.br), com o subject "Código Comentado".

Links relacionados:
http://

Artigos relacionados:
  Nenhum artigo relacionado



 

   Copyright © Ativo Access 2003 - 2021- Todos os direitos reservados   Política de Privacidade | Fale conosco