Fórum Inserir, Alterar no Mesmo Botton / Campo Código recebe o valor do generator #521140

27/05/2015

0

Boa noite estou desenvolvendo um sistema de clinica médica, sou novato em delphi por obter ferramentas muito mais elaboradas e fáceis

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

Thiago Santos

Responder

Posts

28/05/2015

Gabriel Baltazar

Seu raciocícinio está certo, qual seria sua dificuldade?

O que precisa é antes de executar a operação verificar se o id é 0

if id = 0 then
  inserir 
else
  alterar;
Responder

Gostei + 0

28/05/2015

Thiago Santos

Bom dia amigo,

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
Responder

Gostei + 0

28/05/2015

Marcos P

cadastrei o primeiro elemento antes de clicar em salvar já aparece o numero 1 cadastrando o segundo aparece 2 e assim por diante.


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.
Responder

Gostei + 0

28/05/2015

Gabriel Baltazar

Exatamente.
Responder

Gostei + 0

28/05/2015

Thiago Santos

quero gerar o código automático a partir do generator...
Responder

Gostei + 0

28/05/2015

Marcos P

Sim... essa é a ideia !

Gere a partir do generator no banco e informe ao usuário o sequencial gerado, antes de finalizar o cadastro !
Responder

Gostei + 0

28/05/2015

Thiago Santos

como que eu implemento isso na prática?

tenho quatro componentes: ib database, ib table1, idTransaction e Data source

adiciono mais algum componente
Responder

Gostei + 0

28/05/2015

Marcos P

Você pode fazer, imediatamente depois do insert, o select que coloquei acima [ ( select max(id)+1 from tabela ) ].

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/
Responder

Gostei + 0

29/05/2015

Thiago Santos

mas ainda não compreendo se está correto:

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!!!');
Responder

Gostei + 0

29/05/2015

Thiago Santos

mas ainda não compreendo se está correto:

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar