[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