[firebase-br] TClientDataSet + Generator

Sandro sandro_rebelo em ibest.com.br
Qua Out 29 01:09:21 -03 2008


Esse exemplo usa generator. Gostaria de saber como a função do Helio 
(HPensador) funciona.

Mas valeu mesmo assim.

Sandro

----- Original Message ----- 
From: "Fausto" <fausto.s.a em uol.com.br>
To: <lista em firebase.com.br>
Sent: Tuesday, October 28, 2008 11:25 PM
Subject: Re: [firebase-br] TClientDataSet + Generator


Fabrício Fadel Kammer escreveu:
> Boa tarde à todos,
>
> Estou iniciando o desenvolvimento com TClientDataSet e gostaria de uma 
> dica do pessoal que trabalha com esse componente.
>
> Até então só utilizei os componentes IBX para acesso ao firebird e os 
> cadastros todos eram feitos com componentes TIBDataSet. Nesses 
> componentes, para fazer a geração das chaves primárias eu utilizava a 
> propriedade GeneratorField, a qual incrementava um generator no momento do 
> Post no componente. Com TClientDataSet qual seria a melhor forma de se 
> fazer essa mesma operação?
Simples..
Utilize esta função aqui.. ela também vai servir para múltiplas inserções:
function RetunId(Tabela: string;DB:TSQLConnection): Integer;
Var
   SqlAux:TSQLDataSet;
begin
   SqlAux := TSQLDataSet.Create(nil);
   SqlAux.Connection := DB;
   SqlAux.CommandText := 'SELECT GEN_ID(GEN_' + Tabela + '_ID, 1) AS
CODIGO FROM RDB$DATABASE';
   SqlAux.Open;
   Result := SqlAux.FieldByName('CODIGO').asInteger;
   SqlAux.Close;
   SqlAux.Destroy;
end;
Agora você a chama no evento BeforePost do seu ClientDataSet:
procedure TSeuDM.SeuClientDataSetBeforePost(DataSet: TDataSet);
begin
   if SeuClientDataSet.State = dsInsert then
     SeuClientDataSetSEUCAMPO.AsInteger := ReturnId('SuaTable',SuaConexao);
end;

Em tempo, a idéia deste código foi retirada do livro *Firebird Essencial*
-- 
Fausto Alves
Msn:faustoalves em com4.com.br
Skype:faustoalves
Franca-SP
Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista