FUNCTION PARA GERAR CODIGO
boa tarde,
preciso criar um função para gerar código automático para cadastro,
sei gerar o código, porem quero criar um função em módulo para gerar o código ao invés de
fazer a mesma rotina para todos os formulários.
se alguem puder me ajudar!!!!
vlw[ô]s
preciso criar um função para gerar código automático para cadastro,
sei gerar o código, porem quero criar um função em módulo para gerar o código ao invés de
fazer a mesma rotina para todos os formulários.
se alguem puder me ajudar!!!!
vlw[ô]s
Altem alguma idéia de como se faz!?!!??????????????????
Cara nao precisa gerar codigo automatica, se você tiver uma Chave Primaria na sua tabela ira fazer isso automaticamente
ABDON, BOA TARDE.
SE ESTE CÓDIGO FOR SEQUENCIAL E ESTIVER GRAVADO EM UM BANCO BASTA UTILIZAR ESTE CÓDIGO:
[txt-size=2][ô]Visualização do código
lblCodigo.Text = GeraCodigo
[ô]Função
Function GeraCodigo() As Long
Dim sql As String
[ô]Função que retorna o próximo codigo de da tabela
sql = [Ô]SELECT MAX(Codigo) [Ô]
sql = sql & [Ô] AS codigo [Ô]
sql = sql & [Ô] FROM tabela[Ô]
If Not rs.EOF Then
GeraCodigo = CLng(rs!Codigo) + 1
End If
[ô]Depois é só inserir[/txt-size]
ATT.
RICK
SE ESTE CÓDIGO FOR SEQUENCIAL E ESTIVER GRAVADO EM UM BANCO BASTA UTILIZAR ESTE CÓDIGO:
[txt-size=2][ô]Visualização do código
lblCodigo.Text = GeraCodigo
[ô]Função
Function GeraCodigo() As Long
Dim sql As String
[ô]Função que retorna o próximo codigo de da tabela
sql = [Ô]SELECT MAX(Codigo) [Ô]
sql = sql & [Ô] AS codigo [Ô]
sql = sql & [Ô] FROM tabela[Ô]
If Not rs.EOF Then
GeraCodigo = CLng(rs!Codigo) + 1
End If
[ô]Depois é só inserir[/txt-size]
ATT.
RICK
Citação:...sei gerar o código, porem quero criar um função em módulo para gerar o código ao invés de
fazer a mesma rotina para todos os formulários.
Como está gerando o código?
A aplicação rodando em ambiente de rede, a forma como está gerando é segura quanto à anti-duplicidade?
If TTurmas.Recordset.RecordCount = 0 Then
Num = 1
Else
TTurmas.RecordSource = [Ô]SELECT * FROM Turmas ORDER BY Codigo[Ô]
TTurmas.Refresh
TTurmas.Recordset.MoveLast
Num = TTurmas.Recordset([Ô]Codigo[Ô]) + 1
End If
Dessa forma não é totalmente eficas à duplicidade de código, uso esse código porque
permito o usuário decidir se vai reaproveitar código ou não.
Num = 1
Else
TTurmas.RecordSource = [Ô]SELECT * FROM Turmas ORDER BY Codigo[Ô]
TTurmas.Refresh
TTurmas.Recordset.MoveLast
Num = TTurmas.Recordset([Ô]Codigo[Ô]) + 1
End If
Dessa forma não é totalmente eficas à duplicidade de código, uso esse código porque
permito o usuário decidir se vai reaproveitar código ou não.
if TTurmas.Recordset.RecordCount = 0 Then
Num = 1
Else
TTurmas.RecordSource = [Ô]SELECT MAX(Codigo) as XCodigo FROM Turmas ORDER BY Codigo[Ô]
TTurmas.Refresh
Num = TTurmas.Recordset([Ô]XCodigo[Ô]) + 1
End If
Poderia usar assim também.
Num = 1
Else
TTurmas.RecordSource = [Ô]SELECT MAX(Codigo) as XCodigo FROM Turmas ORDER BY Codigo[Ô]
TTurmas.Refresh
Num = TTurmas.Recordset([Ô]XCodigo[Ô]) + 1
End If
Poderia usar assim também.
Alias nem precisa do SELECT poderia ser assim:
If TTurmas.Recordset.RecordCount = 0 Then
Num = 1
Else
Num = TTurmas.Recordset.RecordCount + 1
End If
If TTurmas.Recordset.RecordCount = 0 Then
Num = 1
Else
Num = TTurmas.Recordset.RecordCount + 1
End If
Citação:Dessa forma não é totalmente eficas à duplicidade de código, uso esse código porque
permito o usuário decidir se vai reaproveitar código ou não.
Partindo deste princÃpio, tente assim:
Public Function GerarCod() As Double
if TTurmas.Recordset.RecordCount = 0 Then
GerarCod = 1
Else
TTurmas.RecordSource = [Ô]SELECT MAX(Codigo) as XCodigo FROM Turmas ORDER BY Codigo[Ô]
TTurmas.Refresh
GerarCod = CDbl(TTurmas.Recordset([Ô]XCodigo[Ô])) + 1
End If
End Function
Para chamar...
Text1 = GerarCod
Funciona desde que o RECORDSET esteja acessÃvel no escopo da função.
mas com SELECT MAX e com o RECORDCOUNT + 1 vai dar erro tava analisando aqui, por exemplo tenho os seguintes registro:
Código | Nome
1 A
2 B
3 C
deleto o segundo registro,
Código | Nome
1 A
3 C
quando for add mais um vai dar duplicidade de código, o geito que fasso é mais correto
Código | Nome
1 A
3 C quantidade de resgistros = 2 + 1 = 3 , código é chave primaria, não funciona.
3 D
Código | Nome
1 A
2 B
3 C
deleto o segundo registro,
Código | Nome
1 A
3 C
quando for add mais um vai dar duplicidade de código, o geito que fasso é mais correto
Código | Nome
1 A
3 C quantidade de resgistros = 2 + 1 = 3 , código é chave primaria, não funciona.
3 D
Pergunta basica está usando o controle DataControl, é isto?
Tópico encerrado , respostas não são mais permitidas