Componente para trabalhar em master/detail

Delphi

09/05/2005

olá pessoa,
fiz uma tela de pedidos no meu sistema q usa os componentes ClientDataset (com banco firebird) eu fiz um master/detail com os ClientDatasets aninhados só q hora funciona normalmente e hora ele começa a dar uns erros q nuam era pra dar. E eu gostaria de saber se usar os ClientDatasets aninhados é seguro ou entuam usar um outro componente q funcione bem com master/detail?

obrigado.


Tap_pedroso

Tap_pedroso

Curtidas 0

Respostas

Yallebr

Yallebr

09/05/2005

gostaria de saber se usar os ClientDatasets aninhados é seguro ou entuam usar um outro componente q funcione bem com master/detail?


[b:3e6bcb04b6]Sim é seguro.[/b:3e6bcb04b6]

Fale qual é seu erro.


GOSTEI 0
Tap_pedroso

Tap_pedroso

09/05/2005

depois q eu dou um insert e daí vou incluir um item no pedido eu dou um .post e depois um .applyupdates(0) e no applyupdates ele da o erro:

VIOLATION OF PRIMARY KEY UNABLE TO FINDRECORD

só esse erro começou a dar derrepente.

toda vez q eu der um .insert na tabela detail depois de inserir os dados eu tenho q dar um .post e um .applyupdates(0) ou só um .post?


GOSTEI 0
Bruno Belchior

Bruno Belchior

09/05/2005

VIOLATION OF PRIMARY KEY UNABLE TO FINDRECORD
pelo jeito você está violando uma chave primária... ou seja algum outro registro já tem a chave primária que você está tentando inserir...


GOSTEI 0
Raserafim

Raserafim

09/05/2005

Acho que a violação de chave primária não é por causa de uma chave duplicada, mas sim por causa que ao inserir um registro ´detalhe´ este não tem correspondência no registro ´mestre´. ou seja, para inserir um registro ´detalhe´ você tem que primeiro inserir o registro do ´mestre´.


GOSTEI 0
Kotho

Kotho

09/05/2005

Uma coisa que sempre causa confusão é que, na estrutura de mestre/detalhe, quando se inclui um detalhe, as pessoas acham que o código de ligação será preenchido automaticamente (o que não deixa de ser lógico), só que não é assim que acontece. E quando se dá o post, lá vem o erro...

tenta preencher os campos de ligação... eu coloco sempre no OnAfterInsert do detalhe a atribuição dos valores.


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/05/2005

Eu uso o evento OnNewRecord do detalhe para atribuir o valor do campo chave da ligação. Outra coisa que ao entrar no grid detalhe dou um Post no dataset master para garantir que seja criado o campo chave (no caso de ser gerado pelo banco)


GOSTEI 0
POSTAR