[firebase-br] ... um problema simples... para quem sabe !(Mestre/Detalhe)

Francisco Thiago jeandeadlucky em yahoo.com.br
Qui Mar 3 09:42:30 -03 2005


Estou encaminhando para quem interessar possa, o e-mail que mandei para o nosso colega.


[]'s

Thiago



===========


Olá!

Olha, eu apanhei muito pra fazer isso funcionar. Eu confiava que o relacionamento por masterFields do ClientDataSet já era o bastante, mas é sucetível a bugs. Pra isso eu gerei esta rotina aqui:

Evento BeforeUpdateRecord

const
  {$J+} //Permite constantes tipadas (variaveis)
  qg:Integer = -1;
  {$J-}
begin
  if UpdateKind in [ukInsert] then // Se for um insert
  begin
    // Se estiver atualizando o SQLMaster
    if SourceDS = sqlCad_Condicao then
    begin
     
      // Esta procedure pega o valor da chave da tabela master
      UpdateRecordAutoInc(Sender,SourceDS,DeltaDS,UpdateKind,Applied,
        DeltaDS.FieldByName('CCOND_CODIGO').Index);
     
      //Armazeno na CONSTANTE o valor da chave
      qg := DeltaDS.FieldByName('CCOND_CODIGO').NewValue
    end
    // Não estou atualizando o mestre e foi informado uma chave
    else if qg <> -1 then
      // Atribuo a chave para o Detail
      DeltaDS.FieldByName('CCOND_CODIGO').NewValue := qg;
  end;
end;

Estou usando esta rotina em uma aplicação SOAP e funciona normalmente. Mas os SQLDataSets devem estar ligados por DataSource (sabe aquele lance de Nested?)..

É isso ae!

QQr coisa me fala

Francisco Thiago de Almeida
Enter&Plug Informática
Divisão: Desenvolvimento e Banco de dados
MSN: thiago em enterplug.com.br



  ----- Original Message ----- 
  From: Adelson R. Longo 
  To: Francisco Thiago 
  Sent: Thursday, March 03, 2005 8:48 AM
  Subject: ... um problema simples... para quem sabe !


Thiagão,

Estou na expectativa desta tua rotina para se trabalhar com Master/Detail ! ! !
Lembrando que eu uso os componentes...

SQLConnection +  SQLDataSet + DataSetProvider + ClientDataSet

...e preciso atualizar tanto a tabela Master quanto a Detail.

Obrigado pela atenção,

Adelson.


kra, esse erro eu tive quando fiz um insert que violava uma chave única..
pode ser isso....

Em relação aos e-mails que vc ainda vai escrever (q eu já li... mas...
enfim....)

Mestre Detalhe com ClientDataSet  não precisa nem do D2005 pra dar dor de
cabeça não... no entando, eu criei um jeito "interessante" de fazer
funcionar. Me cobra amanha que te passo a rotina okay?

[]'s

Thiago
----- Original Message ----- 
From: "Ivan" <ich em via.com.br>
To: <lista em firebase.com.br>
Sent: Wednesday, March 02, 2005 1:06 PM
Subject: Re: [firebase-br] ... um problema simples... para quem sabe !


> Este erro ocorre qdo vc instala o D2005 em uma maquina que tem D7.
>
> Instale o update1 do D7 para corrigir e apresentar o erro que realmente
> ocorre.
>
>
> Adelson R. Longo escreveu:
  > >           Olá PessoALL,
> >
> >            Tenho um problema que, talvez, nem fosse bem nessa lista a
> > ser lançado, mas, como me simpatizei muito com este "pessoal aplicado" e
> > que conhece muito de Delphi, então, faço a pergunta:
> >
> >             Quando uso os componentes dbExpress (SQLConnection +
> > SQLDataSet + DataSetProvider + ClientDataSet) para manutenção de uma
> > tabela eu atribuo ao componente/propriedade:
> > SQLDataSet.CommandText uma string SQL ( select campo1, campo2, campo3
> > from tabela where campo1 =  Valor )
> >
> > ... a dúvida,     Quando faço isso em tempo de programação funciona tudo
> > bem ( Insert, Update, Delete... ) mas, quando faço isso ( alterar a
> > string SQL) em tempo de execução e tento alterar os dados da tabela
> > ocorre erro no ClientDataSet.ApplyUpdates(0).....  "DBX Error: No
> > Mapping for Error Code Found"  ? ? ? ?
> >
> >          Alguém poderia me explicar o que estou fazendo de errado ? ! ?
> > ! ? ! ?
> >
> > Grato,
> >
> > Adelson.
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
    >
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
  http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br




Mais detalhes sobre a lista de discussão lista