Alguém entende de Delphi aqui?

Ai galerinha será que alguém entende de delphi aqui???
sei que não é o melhor lugar para mim pedir ajuda mas ta dificil de resolver meu problema… é relacionado a campo de autonumeração para aplicações utilizando o Interbase.

Caso alguém se interesse, ou entenda, por favor entre em contato comigo, pode ser por aqui mesmo, via msn, icq, email, hahaha qqr coisa…

Obrigado e até mais!

Procure no na documentação do Interbase/Firebird sobre Tiggers, que são gatilhos acionados por eventos, por exemplo: quando vc insere um registro aciona o chama evento insert que que aciona o gatilho para adicionar + 1 a tabela.
Espero que te ajude!

Olá Sérgio,

na verdade, as trigger eu sei fazer na moral e sei bem como usá-las, o problema eh que a trigger funciona se eu faço a sql diretamente no IBConsole, mas pela minha aplicação quando eu vou fazer uma inserção ele diz qeu o campo que será auto-incremental precisa ter um valor, porém, deve ser passado ele sem valor para que a trigger entre em ação porém ele não está permitindo isso… é esse o problema…

Bom, pessoal só estou postando essa dúvida aqui, pois eu sei qeu normalmente o pessoal qeu sabe java ja passou por algumas outras linguagens…

Bom, caso alguem possa me ajudar… é só encontrar em contato.

Você tá usando os generators?

jujo, eu conheço duas saídas.

– Fazer um generator como foi dito pelo willianguisi, neste caso se vc apagar algum registro do seu BD aquela chave não será reutilizada.

– A outra saida seria com uma store procedure, assim vc conseguiria reutilizar os registros apagados.

===================================

Fala ai Jujo

Seguinte:

Considerando que vc ja tenha criado os generators e os triggers tenta usar a query assim:

query := 'INSERT INTO SUA_TABELA(CAMPO_AUTOINCREMENTO, ';
query := query + ' CAMPO1,...)' VALUES( NIL, valor1, ...)';

Eu tb já passei alguns apuros com campos de auto-incremento, se não me engano foi assim q eu resolvi. Eu precisava pesquisar nos meus trabalhos da facul pra lembrar se era assim mesmo… :wink:

Se não funcionar me avisa, q eu procuro nas minhas coisas, blz? :roll:
[]'s T+

PS: quais componentes de conexão vc ta usando??

Ae Jujo

Você cria primeiro um generator:

create generator gera_cod_cliente

depois liga o generator com a tabela, usando uma trigger:

set term^;
create trigger inc_cod_clientes for Clientes
active before insert position 0
as
begin
new.codigo = gen_id(gera_cod_clientes,1);
end
^
set term; ^

esse 1 depois de gen_id(gera_cod_clientes,1); é
o valor que será incrementado na tabela.

Agora é só fazer a inserção normal

insert into clientes values (‘3012381’, nome, endereco);

No campo onde vai o codigo você pode colocar qualquer valor,
a trigger vai colocar o valor sozinha, incrementando o que estiver
no generator.

Jujo o problema já foi resolvido ou ainda persiste… Qualquer coisa tenho algumas alternativas se as q o pessoal disse não funcionarem…

Valeuz…

Qualquer coisa to na área

O ideal é vc criar um Trigger do tipo before insert no interbase , mas para isso será preciso criar primeiramente um generator. Daí todo vez que vc inserir um novo registro o autoincremento é executado automaticamente. Mas tem um porém caso vc exclua um registro aconselho a não decrementar o generator …

Nossa…

desenterraram essa thread aqui hein…

caraleoooooo
haeiuhaieuhaiehaiueh
aconteceu isso am fevereiro de 2004… hehehehe
bom, em todo o caso eu resolvi o problema sim… hehehe
as soluçoes propostas são válidas sim…
a minha solução foi algo parecido com o que o williamguisi propos…

é isso ai pessoas… valeu pela ajuda… meio tarde mas valew… fica ai uma soluçao caso alguem precise aheuaheuiah

abraços!