FUNCAO VBA PARAR GERAR AUTO NUMERACAO

FABIANAMELLO 25/08/2009 10:13:29
#320889
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!
ERLANMG 25/08/2009 10:25:28
#320891
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.
RRANGON 25/08/2009 10:30:46
#320892
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.
--------------------------------------------------------------------------------------------------------------------------
FABIANAMELLO 25/08/2009 10:51:18
#320898
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!
Tópico encerrado , respostas não são mais permitidas