Fórum Auto incremento delphi - firebird #456155

22/09/2013

0

Ola a todos!
Com dbExpress tenho um clientDataSet, usando banco firebird, neste tenho um generator (gen_clientes_id) e uma trigger
as
begin
  if (new.id_clientes is null) then
    new.id_clientes = gen_id(gen_clientes_id,1);
end


Preciso que no meu formulário, seja feito um auto incremento nesse campo, usando justamente a trigger e o generator, ou não...

Desde já agradeço a todos.
Lg Embarcadero

Lg Embarcadero

Responder

Posts

22/09/2013

Claudio Andrade

No evento OnNewRecord do seu clientdataset coloque a função a baixo.


procedure seuClientDatasetNewRecord(DataSet: TDataSet);
function GetID(NameGenerators: String): Integer;
var
sqlAutoInc: TSQLQuery;
begin
sqlAutoInc := TSQLQuery.Create(Self);
sqlAutoInc.SQLConnection := SQLConnection1;
sqlAutoInc.SQL.Add('SELECT GEN_ID ('+NameGenerators+', 1) FROM RDB$DATABASE');
sqlAutoInc.Open;
Result := sqlAutoInc.Fields[0].AsInteger;
end;
begin
seuClientDatasetCHAVE_PRIMARIA.AsInteger := GetID('SEU_GENERATOR');
end;



Essa função irá retornar o valor do generator.

Abraço.
Responder

Gostei + 0

31/12/2013

Mauro Brondi

Obrigado Cláudio Andrade!

Estou vendo uma vídeo-aula do Rodrigo Carreiro Mourão e no Delphi 2007 (com Firebird 2.0) funciona somente com um DataSet.ApplyUpdates(0).
Mas no Delphi XE5 (com FB 2.5) não deu. (ou talvez eu tenha deixado passar alguma coisa...)

Nota: o curso a que me refiro é este: [url:descricao=Curso Rad Studio 2007, DBExpress 4 e Firebird 2.0]https://www.devmedia.com.br/curso/rad-studio-2007-dbx4-e-firebird-2-0-aplicacao-comercial-de-vendas-basico-do-inicio-ao-fim/117[/url]
Um ótimo curso.

Mas de qualquer forma a sua função me salvou. Muito obrigado.

Responder

Gostei + 0

19/02/2014

Jonny Moraes

AO FAZER O PROCEDIMENTO FUNCIONOU O AUTO INCREMENTO MAS AO FECHAR A FORM OS DADOS DIGITADOS NÃO SÃO SALVOS COMO PROCEDER MEU BOTÃO GRAVAR ESTA ASSIM :DTS.DataSet.Post; E NO EVENTO ON CLOSE DO FORMULARIO ESTA ASSIM :dmdados.CdsProdutos.applyupdates(0);
Responder

Gostei + 0

19/02/2014

Marco Salles

com certeza tem erro .. O ApplyUpdates a exceção é silenciosa

Pesquise por econcileError para verificar o erro do seu Commit

[]sds
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar