Fw: [firebase-br] GEN_ID x dbExpress - RESOLVIDO
Almir Fiorio
almirfiorio em ig.com.br
Ter Dez 14 17:54:47 -03 2004
> Dicas sobre Generators
>
> (95 total de palavras neste texto)
> (802 vizualização(ões))
>
>
>
> Como o FireBird não possui campo AutoIncremento, é usado nele um "gatilho"
> chamado Generator que é um gerador de numeros do FireBird.
>
> **Criar um Generator**
> CREATE GENERATOR "NOME_GENERATOR";
>
> **Trocar um valor de um Generator**
> SET GENERATOR "NOME_GENERATOR" TO 0;
>
> **Incrementar 1 em um Generator**
> select gen_id(NOME_GENERATOR, 1) from RDB$GENERATORS where
> RDB$GENERATOR_NAME = 'NOME_GENERATOR';
>
> **Apagar um generator**
> delete from rdb$generators where rdb$generator_name = 'NOME_GENERATOR';
> ou
> drop "NOME_GENERATOR";
>
> **Uso do Generator dentro de uma Trigger**
> CREATE TRIGGER CLIENTESTRIGGER1 FOR CLIENTES BEFORE INSERT POSITION 0 AS
> BEGIN
> NEW.CODIGO = GEN_ID(NOME_GENERATOR,1);
> END
>
>
> Rodrigo B Marcondes
> rodrigod6 em yahoo.com.br
>
>
>
> ----- Original Message -----
> From: "Álvaro Vieira" <arcoverdeneto em yahoo.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, December 14, 2004 4:14 PM
> Subject: Re: [firebase-br] GEN_ID x dbExpress - RESOLVIDO
>
>
> > Álvaro Vieira wrote:
> > > Pessoal,
> > >
> > > Tentei usar a função abaixo para me retornar o próximo valor de um
> > > GENERATOR, mas não está funcionando.
> > >
> > > Uso: Delphi 6 / Firebird 1.5 / dbExpress
> > >
> > > 01 function TDataMod.GetNextID : Integer;
> > > 02 var
> > > 03 qry : TSQLQuery;
> > > 04 begin
> > > 05 qry := TSQLQuery.Create(nil);
> > > 06 qry.SQLConnection := DataMod.DB;
> > > 07 qry.SQL.Text := 'select gen_id(GN_GERAL, 1) from rdb$database';
> > > 08 qry.Open;
> > > 09 Result := qry.Fields[0].AsInteger;
> > > 10 qry.Close;
> > > 11 FreeAndNil(qry);
> > > 12 end;
> > >
> > > Na linha 12, apresenta a mensagem: "... EConvertError with message
> > > "6029=' is not a valid floating point value'".
> > >
> > > Alguém pode me passar alguma dica? Será incompatibilidade do dbExpress
> > > com o Firebird???
> > >
> >
> > Resolvi o problema adicionando a função CAST ao comando sql.
> > Ficou assim:
> > 'select cast(gen_id(GN_GERAL, 1) as integer) from rdb$database'
> >
> > Obrigado à todos que enviaram dicas.
> >
> > Álvaro Vieira.
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
>
Mais detalhes sobre a lista de discussão lista