Fórum Inserir, Alterar no Mesmo Botton / Campo Código recebe o valor do generator #521140
27/05/2015
0
e comecei a implementar os códigos de cadastros agora e irei resumir.
a minha primeira tabela é a de Categoria de Procedimentos do qual está no banco de dados (Firebird 2,5) com os campos id e nome
e quero realizar o seguinte:
- no form cadastro tenho o button salvar, porém ele também servirá para alterar o que eu quero é implementar que o mesmo button insere e altere, ou seja verificará se o código no id é 0 se sim irá inserir se não irá alterar.
- no mesmo form o campo id será auto incrementado no ib expert já criei o generator, a trigger e o procedure e quero que no campo edit do ID apareça o código do respectivo cadastro. Exemplo: cadastrei o primeiro elemento antes de clicar em salvar já aparece o numero 1 cadastrando o segundo aparece 2 e assim por diante.
Me ajudem e Obrigado
Thiago Cavalcante Santos
Thiago Santos
Curtir tópico
+ 0Posts
28/05/2015
Gabriel Baltazar
O que precisa é antes de executar a operação verificar se o id é 0
if id = 0 then inserir else alterar;
Gostei + 0
28/05/2015
Thiago Santos
isso mesmo no meu está da seguinte maneira que eu consegui fazer:
if (edtIDCategProced <> 0) then
Begin
Alterar;
End
else
Begin
Inserir;
end;
e lá nos procedures criei os dois citados acima.
agora só me resta saber esse do generator.
Obrigado
Gostei + 0
28/05/2015
Marcos P
O sequencial real, você somente vai ter depois da gravação física no banco.
Se você quiser "estimá-lo", faça ( select max(id)+1 from tabela ).
Eu não faria isso... informaria o código, somente depois do registro gravado.
Gostei + 0
28/05/2015
Gabriel Baltazar
Gostei + 0
28/05/2015
Thiago Santos
Gostei + 0
28/05/2015
Marcos P
Gere a partir do generator no banco e informe ao usuário o sequencial gerado, antes de finalizar o cadastro !
Gostei + 0
28/05/2015
Thiago Santos
tenho quatro componentes: ib database, ib table1, idTransaction e Data source
adiciono mais algum componente
Gostei + 0
28/05/2015
Marcos P
Ou , dependendo da sua versão do Firebird, o ideal seria trabalhar com o "returning" do próprio insert.
Dê uma olhada em : http://www.firebirdfaq.org/faq243/
Gostei + 0
29/05/2015
Thiago Santos
olha o codigo que eu fiz
frmCCategProced.tblCategProced.Insert;
//frmCCategProced.tblCategProced.fieldByname('ID_CATEGPROCED').AsString := edtIDCategProced.Text;
frmCCategProced.tblCategProced.FieldByname('CATEGPROCED').AsString := edtNomeCategProced.Text;
frmCCategProced.tblCategProced.Post;
tblCategProced.Close;
tblCategProced.Open;
ShowMessage('Categoria de Procedimento Cadastrada com Sucesso!!!');
Gostei + 0
29/05/2015
Thiago Santos
olha o codigo que eu fiz
frmCCategProced.tblCategProced.Insert;
//frmCCategProced.tblCategProced.fieldByname('ID_CATEGPROCED').AsString := edtIDCategProced.Text;
frmCCategProced.tblCategProced.FieldByname('CATEGPROCED').AsString := edtNomeCategProced.Text;
frmCCategProced.tblCategProced.Post;
tblCategProced.Close;
tblCategProced.Open;
ShowMessage('Categoria de Procedimento Cadastrada com Sucesso!!!');
ai colocaria depois da message ou antes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)