NestedDataSet

Delphi

13/08/2012

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

Curtidas 0

Respostas

Marco Salles

Marco Salles

13/08/2012

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

GOSTEI 0
Huelbert Oliveira

Huelbert Oliveira

13/08/2012

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?
GOSTEI 0
Marco Salles

Marco Salles

13/08/2012

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
GOSTEI 0
Huelbert Oliveira

Huelbert Oliveira

13/08/2012

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?
GOSTEI 0
Marco Salles

Marco Salles

13/08/2012

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

GOSTEI 0
POSTAR