Jump to content

dev botao

Recuperar ultimo cadastro do banco Firebird


Ederson
Go to solution Solved by datilas,
  • Este tópico foi criado há 1484 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia !

Preciso de ajuda de como resolver uma implementação que gostaria de fazer no sistema, seria o seguinte:

Eu importo os itens do xml de uma nota fiscal, para poder fazer vinculo com o cadastro, neste caso importo numa Memtable que ligo numa DBGrid, nessa grid tem uma coluna codigo cadastro (Produto) que é mostrada quando faço o vinculo e

a partir da linha do produto importado chamo o form em tempo de execução do cadastro de produtos também, a minha dúvida como posso fazer para quando eu gravar o cadastro desse novo produto o seu código seja recuperado na Memtable (tabela temporária) que vincula o produto,

gostaria de sugestões de como posso fazer isso. o banco é firebird e componentes firedac.

Obrigado !

Link to comment
Share on other sites

2 horas atrás, Ederson disse:

Bom dia !

Preciso de ajuda de como resolver uma implementação que gostaria de fazer no sistema, seria o seguinte:

Eu importo os itens do xml de uma nota fiscal, para poder fazer vinculo com o cadastro, neste caso importo numa Memtable que ligo numa DBGrid, nessa grid tem uma coluna codigo cadastro (Produto) que é mostrada quando faço o vinculo e

a partir da linha do produto importado chamo o form em tempo de execução do cadastro de produtos também, a minha dúvida como posso fazer para quando eu gravar o cadastro desse novo produto o seu código seja recuperado na Memtable (tabela temporária) que vincula o produto,

gostaria de sugestões de como posso fazer isso. o banco é firebird e componentes firedac.

Obrigado !

você poderia criar uma variável (iCodigoProduto) no public do form de cadastro de produto e então:

No botão salvar do seu cadastro popular a variável iCodigoProduto com o código do produto cadastrado

seuform := Tseufrom.Create(Self);
Try
 seufrom.iCodigoProduto := 0;
 seufrom.ShowModal;

 If seufrom.iCodigoProduto > 0 Then
  Begin
   FDMemTable1.Edit;
   FDMemTable1.FieldByName('seucampo').AsInteger := seufrom.iCodigoProduto;
   FDMemTable1.Post;
  End;
Finally
 FreeAndNil(seufrom);
End;

lembrando que existe varias formas de se fazer isso, essa é apenas uma ideia

  • Like 1
Link to comment
Share on other sites

7 minutos atrás, Ederson disse:

Olá datilas, sua idéia me ajuda muito porque como você disse pode ter outras formas, mas com a sua pode abrir o caminho por mais simples que possa parecer  estava nebuloso aqui.

 

Obrigado !

você pode preencher o form de cadastro assim:

seuform := Tseufrom.Create(Self);
Try
 seufrom.iCodigoProduto := 0;
 seufrom.editNomeProduto.Text := seuXML.NomeProduto;
 seufrom.editNCM.Text := seuXML.NCM;
 seufrom.editCEST.Text := seuXML.CEST;
 ...
 seufrom.ShowModal;

 If seufrom.iCodigoProduto > 0 Then
  Begin
   FDMemTable1.Edit;
   FDMemTable1.FieldByName('seucampo').AsInteger := seufrom.iCodigoProduto;
   FDMemTable1.Post;
  End;
Finally
 FreeAndNil(seufrom);
End;

 

Link to comment
Share on other sites

  • Solution
5 horas atrás, Ederson disse:

Ainda estou vendo aqui como posso fazer, pois como está o sistema somente gera novo código do produto apos clicar no botão gravar !

se você estiver usando GENERATOR ou SEQUENCE

poderia retornar o codigo assim:

suaquery.Close;
suaquery.SQL.Clear;
suaquery.SQL.Add('INSERT INTO SUATABELA (SEUSCAMPOS...) VALUES (:SEUSPARAMS...) RETURNING SEUCAMPOCODIGO');
...
suaquery.Open;
iCodigoProduto := suaquery.Fields[0].AsInteger;

 

Edited by datilas
Link to comment
Share on other sites

5 horas atrás, BigWings disse:

Está usando generator e trigger pra gerar o código no banco?

Isso Generator e Trigger BigWings

3 minutos atrás, datilas disse:

se você estiver usando GENERATOR ou SEQUENCE

poderia retornar o codigo assim:


suaquery.Close;
suaquery.SQL.Clear;
suaquery.SQL.Add('INSERT INTO SUATABELA (SEUSCAMPOS...) VALUES (:SEUSPARAMS...) RETURNING SEUCAMPOCODIGO');
suaquery.open;
iCodigoProduto := suaquery.Fields[0].AsInteger;

 

Irei testar Datilas, obrigado !

Link to comment
Share on other sites

  • Este tópico foi criado há 1484 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.