Fórum Pegar generator com query dbexpress #345428

02/09/2007

0

Como pegar o valor do generador com query do dbexpress?
estou fazendo

with query1 do begin
close;
sql.clear;
sql.add(´select gen_id(nomedogenerator,0) from rdb$database´)
open;
end;
showmessage(query1.fields[0].asstring);

Esta retornando um ?

Alguem já fez isso?


Rinez

Rinez

Responder

Posts

02/09/2007

Wendell

sql.add(´select gen_id(nomedogenerator,[b:f272ba5a81]1[/b:f272ba5a81]) from rdb$database´)

voce deve colocar o numero 1 para executar a função GEN_ID que se refere ao número que será incrementado no generator


Responder

Gostei + 0

03/09/2007

Rinez

Prezado wendell:
Fiz como explicou, mas ao inves de trazer o valor do generator ele aumenta 1 no generador que esta no banco.
Eu quero somente saber o valor do generator.
Fiz dessa forma:
WITH QPROCURA DO BEGIN
CLOSE;
SQL.Clear;
SQL.Add(´select GEN_ID(´+TRIM(COMBOBOX3.TEXT)+´,0) AS QUANT from RDB$DATABASE´);
OPEN;
end;
showmessage(´O generator ´+trim(combobox3.text+
´ Tem valor ´+qprocura.FieldBYNAME(´QUANT´).AsString);

No combobox3.text tenho o nome do generator.
As vezes vem o valor correto outras vezes vem um sinal de =
sabes o porque disso?


Responder

Gostei + 0

06/09/2007

Rinez

up


Responder

Gostei + 0

06/09/2007

Joaoshi

Colega, você colocou a [b:b3813a3d83]DLL[/b:b3813a3d83] cliente do banco de dados no [b:b3813a3d83]USES[/b:b3813a3d83] do seu form? Se colocou tire e teste.

Espero ter ajudado.


Responder

Gostei + 0

12/09/2007

Rinez

Prezado Joaoshi:
Desculpe, que dll cliente é essa? Explique melhor.

Agradeço a gentileza.


Responder

Gostei + 0

12/09/2007

Paullsoftware

amigo eu uso essa rotina para disparar o gerador... funciona perfeitamente! 8)
function NewGen(GenName: String; aConexao:TSQLConnection): integer; 
var 
  ResultSet: TCustomSQLDataSet; 
  SQLstmt: string; 
begin 
  SQLStmt := ´SELECT CAST(gen_id(´ + GenName + ´,1)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; (* NewGen *)
espero ter ajudado :wink:


Responder

Gostei + 0

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

Aceitar