Alguém entende de Delphi aqui?

9 respostas
J

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!

9 Respostas

S

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!

J

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.

W

Você tá usando os generators?

B

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.

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

D

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??

W

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.

A

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

R

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 …

J

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!

Criado 26 de fevereiro de 2004
Ultima resposta 15 de dez. de 2004
Respostas 9
Participantes 7