ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como usar generator/trigger no Delphi - [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
jfranco.delphi
Novato
Novato


Registrado: Sábado, 20 de Junho de 2009
Mensagens: 86

MensagemEnviada: Sex Mai 31, 2013 5:56 pm    Assunto: Como usar generator/trigger no Delphi - [Resolvido] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Sex Mai 31, 2013 6:00 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Sex Mai 31, 2013 6:41 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
jfranco.delphi
Novato
Novato


Registrado: Sábado, 20 de Junho de 2009
Mensagens: 86

MensagemEnviada: Sex Mai 31, 2013 7:24 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Deganutti
Aprendiz
Aprendiz


Registrado: Terça-Feira, 24 de Janeiro de 2012
Mensagens: 244

MensagemEnviada: Sáb Jun 01, 2013 8:31 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Sáb Jun 01, 2013 3:27 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
jfranco.delphi
Novato
Novato


Registrado: Sábado, 20 de Junho de 2009
Mensagens: 86

MensagemEnviada: Sáb Jun 01, 2013 7:38 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
marcocunhasilva
Profissional
Profissional


Registrado: Segunda-Feira, 21 de Agosto de 2006
Mensagens: 740
Localização: Porto Alegre

MensagemEnviada: Dom Jun 02, 2013 1:27 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Dom Jun 02, 2013 10:01 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sáb Jun 08, 2013 11:53 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB