[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