Como saber o código Generator após o insert ?

15/12/2005

Pessoal

Uilizo FB 1.5

Tenho uma tela com uma query.

Esta query tem um insert:
  INSERT INTO PEDIDO (CD_CLIENTE,DATA,HORA) 
  VALUES (:CD_CLIENTE,:DATA,:HORA) 


a tabela PEDIDO tem uma chave primária CODIGO que é preenchida através de um genenrator:

Após executar o seguinte código, preciso exibir num Edit o valor que o campo CODIGO recebeu, [b:c621e072b1]como ?[/b:c621e072b1]

with QPedido do
begin
  close;
  parambyname(´cd_cliente´).AsInteger := EdtCdCliente.Value;
  parambyname(´data´).AsDate := EdtData.Value;
  parambyname(´hora´).AsTime := EdtHora.Value;
  execsql;
end;




obs.: tenho vários micros na rede executando essa operação ao mesmo tempo.

obrigado
Diogo


Diogoalles

Respostas

15/12/2005

Edilcimar

após o append ou insert, pegue o valor do generator e jogue dentro de uma variável, aí vc faz o que quiser


Responder Citar

15/12/2005

Diogoalles

certo...
mas é isso que não sei fazer...
tenho a procedure q tem o código acima que executa a QPedido.
após dar o execsql e ter inserido o registro preciso deste código que foi gerado...
precisa saber como identificá-lo.

obrigado

Diogo


Responder Citar

15/12/2005

Edilcimar

With IBQuery1 do
Begin
Close;
SQL.Clear;
SQL.Add(´Select gen_id(NOMEGERADOR_GEN, 1) from RDB$DATABASE´);
IBQuery1.Open;
NumerpDesejado := IBQuery1.Fields[0].AsInteger;
End;
Coloque isto depois do append e antes do post, o fields[0] é pq é o 1° campo


Responder Citar

15/12/2005

William Thiago

Você preenche o codigo com uma trigger BI?
A solução que eu encontrei foi a seguinte. Utiliza a SPO para pegar o valor do generator.

COD = GEN_ID(nomedogenerator,1)

INSERT INTO blablabla (cod, nome, ...) VALUES (COD, ´OI EU SOU FULANO´, ...)

E faça o retorno da procedure, pra pegar no Delphi...
Não me lembro muito bem da sintaxe, há muito não programo no FB/IB. Mas, ta dada a dica ;)

[]´s


Responder Citar

15/12/2005

Diogoalles

UHMM.. Blz...

não utilizo trigger de BI.

Vou ver se consigo..

obrigado !


Responder Citar

15/12/2005

Technos

Aew diogo...

Dá uma sacada nesse código:

...
select gen_id(SOMA_CONTAGEM, 1) as Cod from rdb$database
...

cria uma variavel global por exemplo, e faz isso:

minhavariavel := query.fieldbyname(´COD´).value

é mais ou menos assim, só pra ter uma ideia do que fazer.

Falowww


Responder Citar