Ir para conteúdo
  • Cadastre-se

dev botao

Recuperar ultimo cadastro do banco Firebird


Ver Solução Respondido por datilas,
  • Este tópico foi criado há 1531 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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 !

Postado
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

  • Curtir 1
Postado

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 !

Postado
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
Postado (editado)
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;

 

Editado por datilas
Postado
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á 1531 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.