REVELAR

Fórum dúvida de iniciante(DBExpress Firebird) #325707

20/07/2006

0

Caros colegas,

Estou desenvolvendo uma aplicação com Delphi 7+DBExpress+Firebird , meu banci possui 2 tabelas e um relacionamento Mestre/Detalhe. Na hora em q mando gravar, eu recebo uma mensagem de erro : violation of Foreign Key constraint ´INTEG_20´ on table ´VISITA´. Acredito q esse erro está ocorrendo porq ele tenta gravar primeiro na tabela filha p/depois gravar na tabela pai. Pergunto, como fazer p/gravar primeiro na tabela filha? Desculpem, já estou há quase 1 semana com esse problema, e já ficando desesperado.
Desde já agradeço pela atenção de todos!
Abçs...


Fabiano_aprendiz

Fabiano_aprendiz

Responder

Posts

20/07/2006

Fabiano_aprendiz

E na verdade, a minha pergunta é, como gravar primeiro na tabela pai? Andei lendo algumas coisas na rede e vi pessoas q tiveram o mesmo problema, e vi um conselho dizendo q no caso, teria q fazer isso no evento BeforoPost do ClientDataSet Mestre. Gostaria de um exemplo de como fazer isso? Alguem sabe?


Responder

Gostei + 0

20/07/2006

Fabiano_aprendiz

To usando o DataSetFild e mesmo assim ocorre o erro. Uma observação q naum fiz e parece importante é a seguinte: O erro só ocorre qdo defino os campos Codigos como Autoincrement(crio os generators e triggers) Se deixar o campo como integer mesmo e deixar o usuario informar o valor, funciona sem problema algum. O problema é q naum posso deixar o usuario informar um campo codigo. Como faço p/pegar no banco o valor do campo codigo , incrementar + 1 e depois gravar? Essa é a 1º aplicação q to fazendo usando DBEXpress+Firebird, antes usava BDE/Paradox e lá eu fazia da seguinte forma, no botão incluir eu jogava o valor do campo numa variavel, e depois do metodo Append eu somava + 1 ao valor dessa variavel p/depois armazenar. Dessa forma aki:

Num := TTable1.FieldByName(´Cod_Cli´).AsString;
.
.
TTable1.Append;

TTable1.FieldByName(´Cod_Cli´).AsString := IntToStr(StrToInt(Num) + 1);

Só q com ClienteDataSet isso naum funciona, tem algum exemplo de como posso fazer isso?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar