Componente para trabalhar em master/detail
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.
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
Curtidas 0
Respostas
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
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?
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
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
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
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.
tenta preencher os campos de ligação... eu coloco sempre no OnAfterInsert do detalhe a atribuição dos valores.
GOSTEI 0
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