NOVO CODIGO
Como faço para gerar um novo CÓDIGO automático?
[ô]Declaração
Dim Con As Connection
Dim Rs As Recordset
Dim Diretorio As String
Private Sub cmdEditaCancela_Click()
On Error GoTo Err
TxtCod.Locked = False
TxtNome.Locked = False
TxtNome.SetFocus
Rs.CancelUpdate
Err:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description & [Ô].[Ô], vbCritical, [Ô]Erro[Ô]
End Sub
[ô]Botão Novo e Salvar
Private Sub cmdNovoGrava_Click()
On Error GoTo Err
Rs.AddNew
Call NewCod [ô]Gera Codigo automático
TxtCod.Locked = False
TxtNome.Locked = False
TxtNome.SetFocus
Rs.UpdateBatch
Exit Sub
Err:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description & [Ô].[Ô], vbCritical, [Ô]Erro[Ô]
End Sub
Private Sub Form_Load()
Set Con = New Connection
Set Rs = New Recordset
Con.CursorLocation = adUseClient
Con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Banco\Dados.mdb;Persist Security Info=False;Jet OLEDB:Database Password=;Jet OLEDB:Encrypt Database=False;Jet OLEDB:SFP=False[Ô]
Rs.Open [Ô]SELECT * FROM TabUsuario[Ô], Con, adOpenStatic, adLockOptimistic
Set TxtCod.DataSource = Rs
Set TxtNome.DataSource = Rs
End Sub
Private Sub NewCod()
Dim NewId As String
With Rs
If Rs.BOF = True And Rs.EOF = True Then
NewId = 1
Else
Rs.MoveLast
NewId = Rs!Codigo + 1 [ô]Codigo: Campo da Tabela do Banco
End If
TxtCod.Text = Format(NewId, [Ô]0000[Ô])
End With
End Sub
[ô]Declaração
Dim Con As Connection
Dim Rs As Recordset
Dim Diretorio As String
Private Sub cmdEditaCancela_Click()
On Error GoTo Err
TxtCod.Locked = False
TxtNome.Locked = False
TxtNome.SetFocus
Rs.CancelUpdate
Err:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description & [Ô].[Ô], vbCritical, [Ô]Erro[Ô]
End Sub
[ô]Botão Novo e Salvar
Private Sub cmdNovoGrava_Click()
On Error GoTo Err
Rs.AddNew
Call NewCod [ô]Gera Codigo automático
TxtCod.Locked = False
TxtNome.Locked = False
TxtNome.SetFocus
Rs.UpdateBatch
Exit Sub
Err:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description & [Ô].[Ô], vbCritical, [Ô]Erro[Ô]
End Sub
Private Sub Form_Load()
Set Con = New Connection
Set Rs = New Recordset
Con.CursorLocation = adUseClient
Con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Banco\Dados.mdb;Persist Security Info=False;Jet OLEDB:Database Password=;Jet OLEDB:Encrypt Database=False;Jet OLEDB:SFP=False[Ô]
Rs.Open [Ô]SELECT * FROM TabUsuario[Ô], Con, adOpenStatic, adLockOptimistic
Set TxtCod.DataSource = Rs
Set TxtNome.DataSource = Rs
End Sub
Private Sub NewCod()
Dim NewId As String
With Rs
If Rs.BOF = True And Rs.EOF = True Then
NewId = 1
Else
Rs.MoveLast
NewId = Rs!Codigo + 1 [ô]Codigo: Campo da Tabela do Banco
End If
TxtCod.Text = Format(NewId, [Ô]0000[Ô])
End With
End Sub
Boa tarde.
Onde está sua dúvida???
Veja esta subrotina:
é ela que gera o código automaticamente, como?
Ela checa a tabela nesta linha de conexão com o DB
Verifica se há registros, e se
Ok???
Dúvidas poste novamente.
Onde está sua dúvida???
Veja esta subrotina:
Private Sub NewCod()
Dim NewId As String
With Rs
If Rs.BOF = True And Rs.EOF = True Then
NewId = 1
Else
Rs.MoveLast
NewId = Rs!Codigo + 1 [ô]Codigo: Campo da Tabela do Banco
End If
TxtCod.Text = Format(NewId, [Ô]0000[Ô])
End With
End Sub
é ela que gera o código automaticamente, como?
Ela checa a tabela nesta linha de conexão com o DB
Rs.Open [Ô]SELECT * FROM TabUsuario[Ô], Con, adOpenStatic, adLockOptimistic
Verifica se há registros, e se
If Rs.BOF = True And Rs.EOF = True Then
ele diz que o novo código será 1, agora se for False esta verificação ele da um MoveLast na tabela para setar o ultimo registro e na Variável NewId ele soma esta ultimo registro mais 1. Feito isto ele joga o valor na TextBox txtCod nesta linha TxtCod.Text = Format(NewId, [Ô]0000[Ô])
Ok???
Dúvidas poste novamente.
Há só pra completar....
Nesta rotina a Index do Banco de Dados não pode ser AutoNumeração, porque se não vai gerar erro.
Nesta rotina a Index do Banco de Dados não pode ser AutoNumeração, porque se não vai gerar erro.
Citação::
Há só pra completar....
Nesta rotina a Index do Banco de Dados não pode ser AutoNumeração, porque se não vai gerar erro.
Não está como autonumeração, está como texto.
Aqui não conseguir. Tá dando erro.
Verifique com o anexo...
Função para o próximo código:
Public Function ProximoCodigo(vTabela As String, vCampo As String, vCondicao As String)
Dim RsCodigo As New ADODB.Recordset
Sql = [Ô]SELECT MAX([Ô] & Trim(vCampo) & [Ô]) AS CODIGO FROM [Ô] & Trim(vTabela) & [Ô] [Ô] & vCondicao & [Ô][Ô]
RsCodigo.Open Sql, dbBanco, adOpenKeyset, adLockReadOnly
If IsNull(RsCodigo([Ô]CODIGO[Ô])) = True Then
ProximoCodigo = 1
Else
ProximoCodigo = RsCodigo([Ô]CODIGO[Ô]) + 1
End If
RsCodigo.Close: Set RsCodigo = Nothing
End Function
Chamando:
ProximoCodigo([Ô]CLIENTES[Ô], [Ô]CLI_CODIGO[Ô], [Ô][Ô])
Public Function ProximoCodigo(vTabela As String, vCampo As String, vCondicao As String)
Dim RsCodigo As New ADODB.Recordset
Sql = [Ô]SELECT MAX([Ô] & Trim(vCampo) & [Ô]) AS CODIGO FROM [Ô] & Trim(vTabela) & [Ô] [Ô] & vCondicao & [Ô][Ô]
RsCodigo.Open Sql, dbBanco, adOpenKeyset, adLockReadOnly
If IsNull(RsCodigo([Ô]CODIGO[Ô])) = True Then
ProximoCodigo = 1
Else
ProximoCodigo = RsCodigo([Ô]CODIGO[Ô]) + 1
End If
RsCodigo.Close: Set RsCodigo = Nothing
End Function
Chamando:
ProximoCodigo([Ô]CLIENTES[Ô], [Ô]CLI_CODIGO[Ô], [Ô][Ô])
Citação::
Função para o próximo código:
Public Function ProximoCodigo(vTabela As String, vCampo As String, vCondicao As String)
Dim RsCodigo As New ADODB.Recordset
Sql = [Ô]SELECT MAX([Ô] & Trim(vCampo) & [Ô]) AS CODIGO FROM [Ô] & Trim(vTabela) & [Ô] [Ô] & vCondicao & [Ô][Ô]
RsCodigo.Open Sql, dbBanco, adOpenKeyset, adLockReadOnly
If IsNull(RsCodigo([Ô]CODIGO[Ô])) = True Then
ProximoCodigo = 1
Else
ProximoCodigo = RsCodigo([Ô]CODIGO[Ô]) + 1
End If
RsCodigo.Close: Set RsCodigo = Nothing
End Function
Chamando:
ProximoCodigo([Ô]CLIENTES[Ô], [Ô]CLI_CODIGO[Ô], [Ô][Ô])
Dando erro...
Dá uma olhada aÃ
Tópico encerrado , respostas não são mais permitidas