estou com uma duvida em try e except

Delphi

08/08/2006

segue o codigo abaixo:

 try
  Tabela.Post;
  Tabela.ApplyUpdates;
  Trans.CommitRetaining;
 except
  Trans.RollbackRetaining;  
 end;


onde coloque um locate, ou algo que teste se o registro existe, nao gravando de forma nenhuma para que n perca o generator? ate mesmo que perca, mas nao quero gravar um registro repetido. A tabela possui somente 2 campos (ID_EXAME, TIPO_EXAME) e estou usando DBEDIT para inserir os campos

obrigado pela força


Njuniorba

Njuniorba

Curtidas 0

Respostas

Jáder Medeiros

Jáder Medeiros

08/08/2006

O certo é você inserir um índice único nessa tabela. Impossibilitando gravar um registro duplicado. Vou explicar o porquê: O método Locate da classe TDataSet move o cursor para localizar o registro e com o DataSet em modo de edição isso não será possível.

Se deseja fazer uma coisa mal feita, mas sem o uso de índice único, o certo é você executar uma consulta ao banco antes de salvar o registro. Mas isso abriria outro cursor com o banco e consumiria mais recurso de memória para o procedimento.[/code]


GOSTEI 0
Njuniorba

Njuniorba

08/08/2006

[quote=´Jáder´]O certo é você inserir um índice único nessa tabela. Impossibilitando gravar um registro duplicado. Vou explicar o porquê: O método Locate da classe TDataSet move o cursor para localizar o registro e com o DataSet em modo de edição isso não será possível.

Se deseja fazer uma coisa mal feita, mas sem o uso de índice único, o certo é você executar uma consulta ao banco antes de salvar o registro. Mas isso abriria outro cursor com o banco e consumiria mais recurso de memória para o procedimento.[/code]


Ola amigo.. o campo eh unico mesmo, ja q n pode ser repetido.. vou fazer uma SP mesmo, acho a forma mais relativa e robusta pra isso.. o sistema n roda em rede remota e sim local, entao a demora n sera tanta. Mesmo assim, obrigado pela ajuda!


GOSTEI 0
Marco Salles

Marco Salles

08/08/2006

sinceramente eu não entendi o final :cry: :cry: :cry:

Ola amigo.. o campo eh unico mesmo, ja q n pode ser repetido


..... nao quero gravar um registro repetido.


se o campo é unico , mesmo que voce quisesse , com voce faria para gravar un numero repedito...Parece ser redunte.. Voce querer evitar uma coisa que por si so ja seria evitada pela construçao do campo no banco

:?: :?: :?:


GOSTEI 0
POSTAR