Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
jfranco.delphi Novato
Registrado: Sábado, 20 de Junho de 2009 Mensagens: 86
|
Enviada: Sex Mai 31, 2013 5:56 pm Assunto: Como usar generator/trigger no Delphi - [Resolvido] |
|
|
Boa tarde a todos,
Estou desenvolvendo uma aplicação em Delphi 7 com banco Firebird 2.5. Já criei os generators e triggers para as tabelas cujas chaves primárias são do tipo autoincremento. No IBExpert estão funcionando corretamente quando incluo registros manualmente, mas não sei como implementar o uso desses recursos no código. Suponho que seja no evento OnClick da barra de navegação do DBGrid, mas não sei como executo o procedimento (acho que deve ser a "chamada" do trigger). Alguém tem alguma sugestão? Obrigado.
Editado pela última vez por jfranco.delphi em Qua Jun 05, 2013 8:50 am, num total de 2 vezes |
|
Voltar ao Topo |
|
|
Ghost_Rider Colaborador
Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Sex Mai 31, 2013 6:00 pm Assunto: |
|
|
Cara, via SQL vc tem que passar 0 para o id da tabela, que ele adicionar normalmente...via dbgrid não faço ideia amigo..abraço... |
|
Voltar ao Topo |
|
|
Batera Colaborador
Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Mai 31, 2013 6:41 pm Assunto: |
|
|
Acho que na DBGrid o código somente será mostrado quando você sair da linha e der um ApplyUpdates.
Se eu não me engano, quando você insere na DBGrid os dados estão em memória, portanto, somente quando você executar o ApplyUpdates é que eles de fato serão gravados no banco de dados.
Alguém me corrija se eu estiver errado, ok? |
|
Voltar ao Topo |
|
|
jfranco.delphi Novato
Registrado: Sábado, 20 de Junho de 2009 Mensagens: 86
|
Enviada: Sex Mai 31, 2013 7:24 pm Assunto: |
|
|
Ghost_Rider escreveu: | Cara, via SQL vc tem que passar 0 para o id da tabela, que ele adicionar normalmente...via dbgrid não faço ideia amigo..abraço... |
Parece que não fui claro com a minha dúvida: o que preciso saber é se preciso "chamar" o trigger que defini no IBExpert - e se tiver que chamar, como faço isso - ou se ele é executado automaticamente no evento OnClick da barra de navegação associada ao dbgrid. Ficou mais claro agora? |
|
Voltar ao Topo |
|
|
Deganutti Aprendiz
Registrado: Terça-Feira, 24 de Janeiro de 2012 Mensagens: 244
|
Enviada: Sáb Jun 01, 2013 8:31 am Assunto: |
|
|
jfranco.delphi escreveu: | Ghost_Rider escreveu: | Cara, via SQL vc tem que passar 0 para o id da tabela, que ele adicionar normalmente...via dbgrid não faço ideia amigo..abraço... |
Parece que não fui claro com a minha dúvida: o que preciso saber é se preciso "chamar" o trigger que defini no IBExpert - e se tiver que chamar, como faço isso - ou se ele é executado automaticamente no evento OnClick da barra de navegação associada ao dbgrid. Ficou mais claro agora? |
Vamos aos conceitos basicos.
Trigger e um gatilho que e disparado quando incrementamos/excluímos/alteramos dados da tabela em questão.
Generetor são apenas incrementos que podem ser utilizados ou em procedures ou em triggers.
Levando em consideração que nosso colega Ghost_Rider nos passou sua trigger de ser mais ou menos assim
Código: |
if (new.id = 0) then new.id = GEN_ID(SEU_GENERETOR,1);
|
e mais ou menos isso.
[]'s _________________ "Se quiser testar o caráter de alguém, dê-lhe o poder" - Abraham Lincoln |
|
Voltar ao Topo |
|
|
Ghost_Rider Colaborador
Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Sáb Jun 01, 2013 3:27 pm Assunto: |
|
|
Complemetando o que o amigo Deganutti postou, não tem "chamar" trigger, ele é executado dentro do banco, quando vc faz um um insert, update ou delete, entendeu ??? |
|
Voltar ao Topo |
|
|
jfranco.delphi Novato
Registrado: Sábado, 20 de Junho de 2009 Mensagens: 86
|
Enviada: Sáb Jun 01, 2013 7:38 pm Assunto: |
|
|
Ghost_Rider escreveu: | Complemetando o que o amigo Deganutti postou, não tem "chamar" trigger, ele é executado dentro do banco, quando vc faz um um insert, update ou delete, entendeu ??? |
Entendi. É que tive a impressão de ter visto em alguma mensagem algo que me pareceu a "chamada" de um trigger na inserção de um registro. É que como vi a mensagem de relance devo ter feito confusão com o que estava sendo discutido. Então, em resumo, é só eu fazer a inserção dos conteúdos nos campos da tabela, dar um ApplyUpdate e um abraço? |
|
Voltar ao Topo |
|
|
marcocunhasilva Profissional
Registrado: Segunda-Feira, 21 de Agosto de 2006 Mensagens: 740 Localização: Porto Alegre
|
Enviada: Dom Jun 02, 2013 1:27 am Assunto: |
|
|
Olá!
Gostaria de aproveitar este tópico para saber como se pega o valor de um Generator via código no Delphi?
Desde já, agradeço a todos.
T++ |
|
Voltar ao Topo |
|
|
Ghost_Rider Colaborador
Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Dom Jun 02, 2013 10:01 am Assunto: |
|
|
Pra pegar o código do generator é igual ao código de dentro da trigger, mas passando zero, assim :
select max(gen_id(gen_tabela, 0)) from tabela
onde gen_tabela é o nome do generator, e tabela o nome da tabela daquele generator |
|
Voltar ao Topo |
|
|
pestana Colaborador
Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sáb Jun 08, 2013 11:53 am Assunto: |
|
|
Eu faço assim:
SELECT GEN_ID(nome_generator,0)
FROM RDB$DATABASE
Interessante o código do Ghost eu não a conhecia! _________________ Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso. |
|
Voltar ao Topo |
|
|
|