Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andre.vetor

Delphi + Firebird + Auto-Incremento

Recommended Posts

Boa tarde a todos,

 

Gostaria de ver se alguem poderia me ajudar..

 

Estou na seguinte situação, criei um banco de dados para uma plicação que estou desenvolvendo, ela ja esta gravando os cadastros, alterando, pesquisando, etc..

 

porem ele nao está incrementando automaticamente..

 

Gostaria de saber se alguem poderia me ajudar nessa situação.. pois não tenho conhecimento de como fazer, até usei alguns outros topicos criados nesse mesmo assunto porem nenhum deles me serviu para a maneira que eu estava tentando fazer

 

Ex: no Banco de dados eu criei o Generator

 

Create Generator Codent

 

mas a partir dai nao sei como proceder no delphi para que eu consiga chamar esse generator ou como ele funcionará

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Delphi http://forum.imasters.com.br/public/style_emoticons/default/seta.gif InterBase / Firebird / PostgreSQL / Outros Bancos de Dados > InterBase / Firebird

 

andre.vetor, seja bem vindo ao Fórum iMasters, conheça nossas regras: Regras do Fórum

 

Quando faço auto numeração no Firebird utilizo Generator e Trigger para gerar os códigos.

De uma olhada: http://forum.imasters.com.br/index.php?/topic/231096-firebird-como-fazer-campo-autonumeracao/

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro...

Eu costumo fazer o incremento com o generator dentro de uma stored procedure, como no exemplo abaixo:

 

begin
  par_cod_ccusto = GEN_ID(gen_ccusto, 1 );
  INSERT INTO ccusto VALUES(
  :par_cod_ccusto,
  :par_descricao,
  :par_responsavel
  );
end

O Executável do sistema envia apenas as os valores a serem gravados e a stored procedure faz o resto.

Funciona perfeitamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

 

Adicione uma Trigger na tabela no evento Before Insert, isso vai permitir disparar o generator automaticamente quando você inserir algum dado na tabela.

No exemplo abaixo, a Trigger fica acoplada a tabela CUSTOMER e dispara toda vez que um insert for executado incrementando o cust_no_gen com 1 e adicionando ao campo cust_no .

 

 

CREATE OR ALTER TRIGGER SET_CUST_NO FOR CUSTOMER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
   if (new.cust_no is null) then
   new.cust_no = gen_id(cust_no_gen, 1);
END

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.