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…
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!