[firebase-br] Obter valor do GENERATOR no momento da

Carlos Andrade krlosgilson em gmail.com
Qui Maio 29 19:13:22 -03 2008


Se vc pretende adquiri o valor do Generator no Banco de Dados crie um
trigger...

 

Ex:

 

CREATE TRIGGER TRI_LAUDOS_BEF_INS FOR LAUDOS

ACTIVE BEFORE INSERT POSITION 0

AS

Begin

            /* Gera e atribui um código sequencial */

            if (new.CAMPOQUEVAIRECEBEROGENERATOR is null) then

            new.CAMPOQUEVAIRECEBEROGENERATOR = gen_id(GEN_LAUDOS,1); /* <<=
0 = Pega o valor atual  |  1 = atribui um novo valor */

end

 

Se vc pretende adquirir o valor do Generator na Aplicação crie uma
Function...

 

Ex (em Delphi)

 

function NewGen(GenName: String; aConexao:TSQLConnection): integer;

var

  ResultSet: TCustomSQLDataSet; 

  SQLstmt: string; 

begin 

  SQLStmt := 'SELECT CAST(gen_id(' + GenName + ',0)as integer) as NewValor
from RDB$DATABASE;'; 

  ResultSet := nil;

  try

    aConexao.Execute(SQLstmt, nil, @ResultSet); 

    if Assigned(ResultSet) then 

    begin 

      Result := ResultSet.FieldByName('NewValor').AsInteger; 

    end; 

  finally 

    ResultSet.Free; 

  end;

end;

 

******** Fim da Function **********

 

Para utilizá-la:

 

cds_laudos CAMPOQUEVAIRECEBEROGENERATOR.Value :=
NewGen('GEN_LAUDOS',CONEXAO);




Mais detalhes sobre a lista de discussão lista