ACESS AUTO NUMERACAO

USUARIO.EXCLUIDOS 10/08/2007 19:54:51
#230442
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.....
USUARIO.EXCLUIDOS 10/08/2007 22:14:30
#230450
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

LCSD 11/08/2007 00:07:27
#230458
Resposta escolhida
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



USUARIO.EXCLUIDOS 11/08/2007 07:35:37
#230466
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?
USUARIO.EXCLUIDOS 11/08/2007 07:46:55
#230467
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ê.


USUARIO.EXCLUIDOS 11/08/2007 07:51:34
#230468
bom brigado aew pela dica, vou pesquisar no google se acho algo sobre isso.

Tópico encerrado , respostas não são mais permitidas