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

Jorge Augusto Correa dos Reis jorgeaugustoreis em gmail.com
Qui Maio 29 17:34:43 -03 2008


Bem meu amigo eu fiz o seguinte:

Crio o procedimento abaixo para cada tabela q eu precisar fazer o
autoincremento e ao msm tempo ter acesso ao "ID" novo sem ter q dar um
refresh:

SET TERM ^ ;

CREATE PROCEDURE GERAR_NOVO_CLIENTE_ID
RETURNS (
NOVO_ID INTEGER)
AS
BEGIN
NOVO_ID = GEN_ID(GEN_TAB_CLIENTES_ID, 1);
SUSPEND;
END
^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE GERAR_NOVO_CLIENTE_ID TO SYSDBA;

e então no delphi crioa a seguinte função:


//---[gera um novo id do cliente...]---
function TfrmCadastroDeClientes.GerarNovoID(): integer;
var id : integer;
begin
try
dmCadastroDeClientes.IBStoredProcGerarNovoClienteID.ExecProc();
id :=
dmCadastroDeClientes.IBStoredProcGerarNovoClienteID.Params[0].AsInteger;
except
Result := -1; // então teste se o id for < 0 então deu erro...
Exit;
end;

Result := id;
end;

ai quando crio um novo registro chamo a função e testo o valor de retorno
dela, dai então se tiver ok coloco esse valor no campo desejado... existem
um procedimento, um generator e uma função para cada tabela q eu precisar
fazer o autoincremento e reter acesso a ele sem ter q chamar refresh, para
as demais tabelas eu uso o gatinho para gerar valores antes de inserir como
de costume.

AS
BEGIN
IF (NEW.CLIENTE_ID IS NULL) THEN
NEW.CLIENTE_ID = GEN_ID(GEN_TAB_CLIENTES_ID,1);
END

t+ e espero ter ajudado...


2008/5/29 Andrei Luís <compuvale.software em gmail.com>:

> Isso é IBO, correto? O generatorLinks é executado no momento que você der o
> Insert, ou seja, após o insert o campo já recebe o valor do generator
> acrescido de 1.
>
> Em suma: Faça a leitura do valor do campo LAUDOS_TI.LAUDO_ID após o insert
> e
> antes do post e pronto.
>
> []
> Andrei
>
> 2008/5/29 Cleidson <cleidson em zmed.com.br>:
>
> > Alguem sabe como faço pra obter o valor do generator no momento que dou
> > um insert na tabela ?
> >
> > Obs. estou usando IB_Query com generator links
> > LAUDOS_TI.LAUDO_ID=GEN_LAUDOS
> >
> > Eu preciso passar o valor do registro para uma outra tabela e apos o
> > POST quando leio o valor do campo chave, ele me retorna um NULL.
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> []s
> Andrei
>
> Win XP Pro + Delphi 2006 Pro + FB 1.5.5 + IBO 4.7.16
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Somente os mortos verão o fim da guerra!



Mais detalhes sobre a lista de discussão lista