Jump to content

dev botao

Recuperar ultimo cadastro do banco Firebird


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

Recommended Posts

Posted

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 !

Posted
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
Posted

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 !

Posted
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;

 

  • Solution
Posted (edited)
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
Posted
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 !

  • Este tópico foi criado há 1517 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.

The popup will be closed in 10 seconds...