FUNCAO VBA PARAR GERAR AUTO NUMERACAO
Preciso criar uma função para gerar auto incremento de um campo. Estou usando access, gostaria que a função fosse ativada no evento ao clicar de um botão e que este evento crie um numero sequencial (sem repetição). A minha maior dificuldade é de usar sql no VBA access.
Aguardo ajuda!
Aguardo ajuda!
Dentro do modulo coloque:
Public Function geracodigo(texto As String, quantidade As Integer)
If Len(texto) < quantidade Then
geracodigo = String(quantidade - Len(LTrim(texto)), [Ô]0[Ô]) + LTrim(texto)
Else
geracodigo = texto
End If
End Function
dentro do evento ao clicar o botão coloque:
Data1.RecordSource = [Ô]Select * from clientes order by codigo[Ô]
Data1.Refresh
If Data1.Recordset.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 6)
Else
Data1.Recordset.MoveLast
text1.Text = geracodigo(Data1.Recordset!codigo + 1, 6)
End If
Uso a função geracodigo para completar com zeros os espaços vazios. Por exemplo, em vez de aparecer o nº 1 aparecerar 000001.
Espero ter ajudado.
Até mais.
Public Function geracodigo(texto As String, quantidade As Integer)
If Len(texto) < quantidade Then
geracodigo = String(quantidade - Len(LTrim(texto)), [Ô]0[Ô]) + LTrim(texto)
Else
geracodigo = texto
End If
End Function
dentro do evento ao clicar o botão coloque:
Data1.RecordSource = [Ô]Select * from clientes order by codigo[Ô]
Data1.Refresh
If Data1.Recordset.EOF = True Then
text1.Text = geracodigo([Ô]1[Ô], 6)
Else
Data1.Recordset.MoveLast
text1.Text = geracodigo(Data1.Recordset!codigo + 1, 6)
End If
Uso a função geracodigo para completar com zeros os espaços vazios. Por exemplo, em vez de aparecer o nº 1 aparecerar 000001.
Espero ter ajudado.
Até mais.
Tente o código abaixo, quando maior o valor entre os iniciais e finais, menor a chance de gerar um numero que jah existe, afinal deve existir um número maximo de registros no seu banco de dados, não?
--------------------------------------------------------------------------------------------------------------------------
Dim MyValue
Randomize [ô][ô] Inicializa o gerador de número aleatório.
MyValue = Int((6 * Rnd) + 1) [ô][ô] Gera um valor aleatório entre 1 e 6.
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
Dim MyValue
Randomize [ô][ô] Inicializa o gerador de número aleatório.
MyValue = Int((6 * Rnd) + 1) [ô][ô] Gera um valor aleatório entre 1 e 6.
--------------------------------------------------------------------------------------------------------------------------
Obrigada amigos por responderem!
Achei este código e deu certo:
Dim MyDB As DAO.Database
Dim MyTB As DAO.Recordset
Set MyDB = CurrentDb()
Set MyTB = MyDB.OpenRecordset([Ô]Select Max(Codigo) as Cod From Teste[Ô])
If MyTB.RecordCount > 0 Then
Codigo = Int(MyTB!Cod) + 1
Else
Codigo = 1
End If
Codigo é o Nome do Campo e Teste é o nome da Tabela.
Valeu!
Achei este código e deu certo:
Dim MyDB As DAO.Database
Dim MyTB As DAO.Recordset
Set MyDB = CurrentDb()
Set MyTB = MyDB.OpenRecordset([Ô]Select Max(Codigo) as Cod From Teste[Ô])
If MyTB.RecordCount > 0 Then
Codigo = Int(MyTB!Cod) + 1
Else
Codigo = 1
End If
Codigo é o Nome do Campo e Teste é o nome da Tabela.
Valeu!
Tópico encerrado , respostas não são mais permitidas