Tabela Mestre-detalhe
Pessoal
Em uma aplicação tenho cadastro de equipamentos e cadastro de componentes - equipamentos. O cadastro de componentes-equipamentos está em uma grid, quando é dado um post para salvar os equipamentos deveria ser salvo componentes-equipamentos mas esses dados que estão na grid, simplesmente desaparecem. Eles estão relacionados através de mastersouce pelo campo cd_equip. Estou usando interbase 6.0 com conexão BDE.
Rogério
Em uma aplicação tenho cadastro de equipamentos e cadastro de componentes - equipamentos. O cadastro de componentes-equipamentos está em uma grid, quando é dado um post para salvar os equipamentos deveria ser salvo componentes-equipamentos mas esses dados que estão na grid, simplesmente desaparecem. Eles estão relacionados através de mastersouce pelo campo cd_equip. Estou usando interbase 6.0 com conexão BDE.
Rogério
Rogeranalista
Curtidas 0
Respostas
Sremulador
05/11/2004
você tem certeza que esta salvando os dados master na tabela det ???
GOSTEI 0
Gurc
05/11/2004
Não sei se é este o seu caso, mas, quando se usa um relacionamento Master Detail com mais de 2 DataSets podemos encontrar alguns problemas. Vou tentar ser mais claro.
Imagine 3 DataSets. O C é Detail do B que, por sua vez, é Detail do A. Se editamos os dados do DataSet C e dermos um Post no DataSet A, o que esperaríamos? Que o A desse um Post em A, B e C, talvez, certo? Poisé, mas não é bem isso que é feito. Quando o DataSet A recebe um pedido de Post ele verifica se os Details imediatos dele foram alterados, no caso o B. Se B tiver sido alterado ele dá um Post em B que, por sua vez, pode dar um Post em C, seguindo a mesm lógica. Agora, se C é alterado e B não, o A envia uma mensagem de Cancel para B que cancela C por sua vez. Isso tudo é testado através da propriedade, somente leitura, Modified. Para conseguirmos alterá-la, devemos usar de um artifício conhecido como o Hack de Protected e acessar o método protegido SetModified configurando o Modified de B para True.
Mais informações a respeito, me coloco a inteira disposição.
Até mais,
Gustavo Royer Chaurais
Imagine 3 DataSets. O C é Detail do B que, por sua vez, é Detail do A. Se editamos os dados do DataSet C e dermos um Post no DataSet A, o que esperaríamos? Que o A desse um Post em A, B e C, talvez, certo? Poisé, mas não é bem isso que é feito. Quando o DataSet A recebe um pedido de Post ele verifica se os Details imediatos dele foram alterados, no caso o B. Se B tiver sido alterado ele dá um Post em B que, por sua vez, pode dar um Post em C, seguindo a mesm lógica. Agora, se C é alterado e B não, o A envia uma mensagem de Cancel para B que cancela C por sua vez. Isso tudo é testado através da propriedade, somente leitura, Modified. Para conseguirmos alterá-la, devemos usar de um artifício conhecido como o Hack de Protected e acessar o método protegido SetModified configurando o Modified de B para True.
Mais informações a respeito, me coloco a inteira disposição.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0