[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