Fórum NestedDataSet #421504

13/08/2012

0

Galera

Estou com um problema em NestedDataSet, por exemplo:

Vamos dizer que tenho a tabela Transportadora(master) onde vou ter o Placa(detalhe).
Os selects estão com WHERE ID_TRANSPORTADORA = :ID_TRANSPORTADORA.
Em NewRecord de cada Client seto o ID de cada tabela com -1(ID_TRANSPORTADORA = -1 e ID_TRANSPORTADORA_PLACA = -1).

cdsTransportes.FieldByName(ID_TRANSPORTADORA).AsInteger := -1;

cdsTransportes.FieldByName(ID_TRANSPORTADORA_PLACA).AsInteger := -1;


No BeforeUpdate do Provider eu mudo o valor verificando a tabela.

   if UpdateKind = ukInsert then
   begin
      if SourceDS = sdsTransportadoras then
         DeltaDS.FieldByName(ID_TRANSPORTADORA).NewValue := 1
      else if SourceDS = sdsTransportes then
         DeltaDS.FieldByName(ID_TRANSPORTADORA_PLACA).NewValue := 1;
   end;


Lembrando que coloquei os valores fixo só como exemplo.

Dai o que me aparece nos grids é:

Grid de Transportadora
id_transportadora = 1
razao_social = RAPIDO JA

Gride de Placa
id_transporte_placa = 1
id_transporte = -1
placa = QEX1945

O que acontece e que o ID_TRANSPORTE continua com -1, sendo que no master atualizei ele com 1.
Já deixei o poPropogateChages = True.
Tem alguma coisa a mais a ser feita?
Huelbert Oliveira

Huelbert Oliveira

Responder

Posts

13/08/2012

Marco Salles

Mas porque que o ID_TRANSPORTE mudaria o seu valor ???

Pelo que estou entendendo nesta arquitetura o ID_TRANSPORTE é o campo Incremento da tabela Detalhe e não faz
parte do relacionamento ...

Fiz um artigo sobre isto porém utilizando Generics . Talves possa lhe ser útil

http://marcosalles.wordpress.com/?s=Mestre+Detalhe

Responder

Gostei + 0

13/08/2012

Huelbert Oliveira

Tabela Transportadora
ID_TRANSPORTADORA - PK (Chave primária)
RAZAO_SOCIAL VARCHAR(60)

Tabela Placa
ID_TRANSPORTADORA_PLACA - PK (Chave primária)
ID_TRANSPORTADORA - FK (Chave estrangeira)
PLACAR VARCHAR(8)

Por exemplo:
Para identificar as placas da transportadora 1 - RAPIDO JA preciso seta 1 no campo ID_TRANSPORTADORA da tabela de placas.

Minha estrutura não está correta?
Responder

Gostei + 0

13/08/2012

Marco Salles

Tabela Transportadora
ID_TRANSPORTADORA - PK (Chave primária)
RAZAO_SOCIAL VARCHAR(60)

Tabela Placa
ID_TRANSPORTADORA_PLACA - PK (Chave primária)
ID_TRANSPORTADORA - FK (Chave estrangeira)
PLACAR VARCHAR(8)

Por exemplo:
Para identificar as placas da transportadora 1 - RAPIDO JA preciso seta 1 no campo ID_TRANSPORTADORA da tabela de placas.

Minha estrutura não está correta?


eu acho que esta errada . Pois ID_TRANSPORTADORA_PLACA pode ser campo auto incremento do proprio Cds
o que tem que alterar no Provider é o ID_TRANSPORTADORA - FK (Chave estrangeira)

Vc teve curiosidade de ler o artigo . Modestia a parte ficou muito bom
Responder

Gostei + 0

14/08/2012

Huelbert Oliveira

Cara li seu artigo e entendi perfeitamente, vou resumir o que eu quero saber.

Quero saber se tem alguma maneira de quando no BeforeUpdate do Provider mudar o valor do ID da tabela Master, alterar os registros detalhe.

Alguém sabe como fazer isso?
Responder

Gostei + 0

14/08/2012

Marco Salles

Desculpe , mas o artigo faz exatamente isto.

Não estou entendendo vc dizer que leio o artigo o entendeu e ter dúvida exatamente nisso

o Artigo é para isto. alaterar o valores das chaves primárias no Mestre e respctivamente alterar
os valores das chaves extrangeiras na tabela Detalhe

Porém se vc quiser alterar os valores da Chave Primaria na Tabela Detalhe tb é possivel porém Desnecessário

[]sds

Responder

Gostei + 0

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

Aceitar