ACESS AUTO NUMERACAO
Ola! estou com problemas em meu programa ao gerar codigo do cliente e ele gera ate o numero 10 e nao vai mais doque isso, ou as vezes ele repete o numero.
meu codigo que eu uso é esse
[txt-backcolor=#006600]Private Sub GeraCod()
Dim cod As Long
If Rsproduto.RecordCount = 0 Then
cod = "0001"
Else
Rsproduto.MoveLast
cod = Rsproduto("ID") + 1
End If
txt_Codigo.text = cod
End Sub[/txt-backcolor]
eu achei a solução de deixar na tabela Auto Numeração, mas não consigo deletar pelo meu codigo.
Codigo pra deleta
[txt-color=#006600]Public Sub Apaga()
Dim Rsproduto As New ADODB.Recordset
Dim str As String
Set Rsproduto = New ADODB.Recordset
If Rsproduto.State = 1 Then Rsproduto.Close
str = "Delete from tb_Produto where ID = '" & Trim(ID) & "'"
Rsproduto.Open str, Conexao, adOpenDynamic, adLockBatchOptimistic
Exit Sub
Err_Apaga:
MsgBox "Erro na Tabela do banco de dados!" & Err.Description & " - " & Err.Number, vbCritical, "Erro"
Exit Sub
End Sub[/txt-color]
esse codigo eu uso pra deleta em modo Texto na tabela deleta normalmente., mas em Auto Numeração nao deleta.
alguem tem uma solução pra isso?
muito obrigado pela atenção.....
meu codigo que eu uso é esse
[txt-backcolor=#006600]Private Sub GeraCod()
Dim cod As Long
If Rsproduto.RecordCount = 0 Then
cod = "0001"
Else
Rsproduto.MoveLast
cod = Rsproduto("ID") + 1
End If
txt_Codigo.text = cod
End Sub[/txt-backcolor]
eu achei a solução de deixar na tabela Auto Numeração, mas não consigo deletar pelo meu codigo.
Codigo pra deleta
[txt-color=#006600]Public Sub Apaga()
Dim Rsproduto As New ADODB.Recordset
Dim str As String
Set Rsproduto = New ADODB.Recordset
If Rsproduto.State = 1 Then Rsproduto.Close
str = "Delete from tb_Produto where ID = '" & Trim(ID) & "'"
Rsproduto.Open str, Conexao, adOpenDynamic, adLockBatchOptimistic
Exit Sub
Err_Apaga:
MsgBox "Erro na Tabela do banco de dados!" & Err.Description & " - " & Err.Number, vbCritical, "Erro"
Exit Sub
End Sub[/txt-color]
esse codigo eu uso pra deleta em modo Texto na tabela deleta normalmente., mas em Auto Numeração nao deleta.
alguem tem uma solução pra isso?
muito obrigado pela atenção.....
Tem um erro conceitual de sua parte com relação ao uso ADO e comandos SQL.
O comando SQL passado no método Open do objeto recordset obrigatoriamente tem que ser um SELECT.
Use o método Execute no objeto Connection:
O comando SQL passado no método Open do objeto recordset obrigatoriamente tem que ser um SELECT.
Use o método Execute no objeto Connection:
Conexao.Execute str, , adCmdText
Citação:JOSE.NIZ escreveu:
Tem um erro conceitual de sua parte com relação ao uso ADO e comandos SQL.
O comando SQL passado no método Open do objeto recordset obrigatoriamente tem que ser um SELECT.
Use o método Execute no objeto Connection:Conexao.Execute str, , adCmdText
o Codigo do amigo naum ta errado naum.....teria essa obrigatoriedade se ele estivesse fazendo um select, mas naum eh o caso.....
E alem disso ele esta usando o recordset para executar a instrução.
agora se ele fosse executar a instrução atraves da conexão ae seria assim.
str = "Delete from tb_Produto where ID = '" & Trim(ID) & "'"
Conexão.Execute (Str)
Tente mudar o Seguinte
Dim cod As Long >> para Dim cod As INTEGER
FOXMAN & JOSE.NIZ valeu pela dica, mas o seguinte
no creador de ID agora funcionou com
Dim cod As INTEGER
mas quando eu fecho o form ou o programa e abro novamente
o contador começa do 0 denovo coimo q eu teria q fazer pra continuar da casa maior que ja
existe na tebela?
no creador de ID agora funcionou com
Dim cod As INTEGER
mas quando eu fecho o form ou o programa e abro novamente
o contador começa do 0 denovo coimo q eu teria q fazer pra continuar da casa maior que ja
existe na tebela?
KIDEBR,
Se seu sistema or trabalhar de forma multi usuário , essa forma de criar codigo deve ser bem estruturada.
Pois para você gerar o novo codigo você captura o maior valor de registro da tabela e depois acresce +1 e grava certo ?
Só que nesse intervalo de segundos um outro usuario pode ter feito
a mesma operação e ira gravar o mesmo codigo que você.
Se seu sistema or trabalhar de forma multi usuário , essa forma de criar codigo deve ser bem estruturada.
Pois para você gerar o novo codigo você captura o maior valor de registro da tabela e depois acresce +1 e grava certo ?
Só que nesse intervalo de segundos um outro usuario pode ter feito
a mesma operação e ira gravar o mesmo codigo que você.
bom brigado aew pela dica, vou pesquisar no google se acho algo sobre isso.
Tópico encerrado , respostas não são mais permitidas