[firebase-br] Off-Topic - Master/detail no TClientDataSet

michel michelsugimoto em yahoo.com.br
Ter Jun 20 17:30:03 -03 2006


Jeferson,

Valeu pelo artigo. Consegui, embora usei o ibx (todo o sistema estava em 
ibx)

Francisco Thiago,

Valeu pela ajuda, embora soh leia os registros. Mas se um dia precisar 
inserir, ja sei, hehe.

[]s, valeu gente!

Michel Sugimoto

Francisco Thiago wrote:
> Só mais uma coisa:
> 
> A não ser que você atribua a chave no lado do cliente, o cds não irá fazer 
> as ligações corretamente (no caso do mestre ser auto-incremento ou algo 
> assim).
> 
> Eu escrevi o seguinte código para solucionar isso:
> 
> 
> No BeforeUpdateRecord do DataSetProvider...
> 
> const
>   {$J+} //Ativa constantes modificáveis
>   qg    :Integer = 1;
>   {$J-}//Desativa
> begin
>   inherited;
>   if UpdateKind = ukInsert then //estamos inserindo?
>   begin
>     if SourceDS = sqlCad_Crediario then //Trabalhando com o mestre
>     begin
>       UpdateRecordAutoInc(DeltaDS,UpdateKind,DeltaDS.FieldByName('CCRED_CODIGO').Index); 
> //Procedure encarregado do auto incremento
>       //guardo o valor do auto-incremento na constante. Na próxima vez que o 
> provider chamar esta funcao, a constante vai ter o valor
>       // do campo. Prefiro isso a uma variavel global :S
>       qg := DeltaDS.FieldByName('CCRED_CODIGO').NewValue;
>     end
>     else if SourceDS = sqlCad_Cred_Item then //Trabalhando com o detalhe
>     begin
>       if (DeltaDS.FieldByName('CCRED_CODIGO').IsNull) or
>          (DeltaDS.FieldByName('CCRED_CODIGO').AsInteger = -1)
>       then
>         DeltaDS.FieldByName('CCRED_CODIGO').NewValue := qg;//Valor da chave 
> mestre
>       UpdateRecordAutoInc(DeltaDS,UpdateKind,DeltaDS.FieldByName('CCIT_CODIGO').Index); 
> //auto-incremento
>     end;
>   end;
> 
> 
> Se no DataSetProvider você habilitar a opção poPropagateChanges, você vai 
> vizualizar estas modificações após o retorno do ApplyUpdates
> 
> 
> Espero ter ajudado
> 
> []'s
> 
> Francisco Thiago de Almeida
> Enter & Plug Informática
> Divisão: Desenvolvimento e Banco de dados
> Franca / SP
> msn: thiago em enterplug.com.br
> http://enterplug.no-ip.com/sistema_ctrc/
> 
> ----- Original Message ----- 
> From: "Jeferson Oliveira" <jefersonfoliveira em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, June 19, 2006 5:05 PM
> Subject: Re: [firebase-br] Off-Topic - Master/detail no TClientDataSet
> 
> 
> Michel,
> 
> Acredito que esse artigo lhe ajudará:
> http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=58&mode=thread&order=0&thold=0
> .
> 
> Abraço!
> Jeferson Oliveira
> 
> 
> Em 19/06/06, michel <michelsugimoto em yahoo.com.br> escreveu:
>> Pessoal, estou com um problema... nao consigo fazer a relacao
>> master/detail com o componente TClientDataSet. há algum segredo? com
>> tabela funciona, mas com o TClientDataSet nao... uso uma query como
>> fonte de dados do provider.
>>
>> Estou usando o Filter... mas demora d+.
>>
>> []s, t+
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> 
> 
> 





Mais detalhes sobre a lista de discussão lista