dbExpress Firebird Delphi 7

Delphi

23/06/2006

Amigos, bom dia!!!
Estou migrando minha aplicação que hj é em IBX pra dbExpress.
Comecei com um cadastro de Uf´s(ID_UF, UF), usando os componentes conforme manda a regra:
SqlConnection + SqlDataSet + DataSetProvider + ClientDataSet
Mudei os providerflags, sendo o TField ID_UF [pfInkey] e o TField UF [pfInUpdate]. Alterei tb o required field p/ False.
No meu BD tenho uma trigger pra autonumerar o campo ID_UF, até ai tudo ok.
Abro a tela, cadastro um registro, tudo ok. Em seguinda vou cadastrar o segundo e dá o seguinte erro : ´Key Violation´. Isso ocorre sempre.
O q será que estou fazendo de errado? Já tentei desativar a trigger e colocar o valor na mão pra ver, mas o erro persiste...
Qq ajuda é bem vinda!

Marcelo
[/img]


Mvicente

Mvicente

Curtidas 0

Respostas

Andreaskaquino

Andreaskaquino

23/06/2006

Após gravar o primeiro registro verifica qual o valor que gerou no campo ID, derepente ele esta gerando um código 0(zero) e ao inserir um novo registro ocorre a violação de chave primária.

Att,


GOSTEI 0
Paullsoftware

Paullsoftware

23/06/2006

É que vc deve dar um Comit na transação em questão ou dar um refresh no seu CDS, pois, o mesmo guarda as informações em Cache local... exemplo básico de como eu faço hoje:

var
 TranDesc : TTransactionDesc; // declare DbXpress na uses
begin
 Try
   Transacao.TransactionID  := 1;
   Transacao.IsolationLevel := xilREADCOMMITTED;
   Conn.StartTransaction(Transacao);
   CdsClientes.Post;
   CdsCliente.ApplyUpdates(0);
   Conn.Commit(TranDesc);
 Except
   Conn.RollBack(TranDesc);
 end;

para maiores informações sobre transações com DbExpress tem dois links abaixo que são muito uteis...
http://forum.clubedelphi.net/viewtopic.php?t=75421&highlight=dbexpress+iniciante
http://forum.clubedelphi.net/viewtopic.php?t=58547
espero ter ajudado :wink:


GOSTEI 0
Mvicente

Mvicente

23/06/2006

Amigos consegui, conforme a dica do companheiro Paulo Ricardo eu apenas estou dando um refresh no ClientDataSet no evento AfterApplyUpadades.
Valeu pela dica...

Sucesso a todos!!!


GOSTEI 0
POSTAR