Eita. Vamos do início....
Se eu entendi vc quer cancelar uma atualização de dados.
Pergunta:
Antes ou depois do usuário clicar em gravar?
Se for antes é só limpar os campos pois vc não usou o "INSERT INTO"
Se for depois vc vai ter que utilizar transações:
Conexao.BeginTrans 'Abre a transação
Conexao.Execute "INSERT INTO..."
if msgbox ("deseja cancelar a gravação?",vbyesno) =vbyes then
Conexao.RollBack 'Volta ao estado anterior
Else
Conexao.CommitTrans 'fecha a transação
Endif
Lembrando que transações são da sua conexão e vc não pode abrir um monte delas. Geralmente eu trabalho com uma de cada vez:
1ª vez: abro-fecho
2ª vez: abro-volto
3ª vez :abro-fecho
EVITAR fazer isso com as transações:
1ª vez: abro
2ª vez: abro
3ª vez: fecho <= qual vc fechou a primeira ou a segunda?? Por isso evitar abrir mais que 1 de uma vez
Se não me engano não pode abrir mais que 5 transações ao mesmo tempo.
Em relação ao tratamento para verificar dados com o mesmo ID você pode fazer 2 coisas:
1) Gravar um ID seqüencial (chave primária). Uma tabela controlará o número do ID para evitar concorrência na rede:
tabela cliente
ID NOME
1 JOAO
Tabela de controle de ID_cliente => o próximo ID a ser gravado
ID
2
Isso serve para você não consultar uma tabela "kilométrica" para buscar o último registro, você acessa uma tabela de apenas 1 registro, muito rápido!!
Então fica assim a ordem:
busca código na tabela de controle -> grava o registro na tabela de cliente com o código buscado na tabela de controle-> grava o próximo registro na tabela de controle
SEGUNDA OPÇÃO
2) Colocar um campo autonumeração de chave primária.
É igual ao outro praticamente só que vc não precisará fazer código para o código seqüencial.
...
Se você tentar inserir o mesmo código na tabela X vai acontecer um erro. Depois é só tratar.
Entendeu?
Qualquer coisa postae
at+