Ajuda em criação de tela de Vendas no Delphi

19/07/2019

0

Olá pessoal da comunidade, estou com dificuldades na criação do meu formulário de vendas, não consigo relacionar o id gerado no cabeçalho pai para repassar o id gerado na tabela de produtos (filho) quando eu clico em adicionar o item e clico em salvar, ele pede para eu digitar o id da venda, que no caso era pra ser repassado da tabela de venda (pai), como eu faço para passar automaticamente o código gerado da tabela de vendas para a de itens da venda?

Estou utilizando Delphi, obrigado e abraços!
Rodrigo

Rodrigo

Responder

Posts

19/07/2019

Rafael Bosco

Se caso você esteja usando o FireBird como banco de dados, abaixo tem um código com as SQL de demonstração, caso seja outro banco de dados, só pesquisar referente a atribuição do RETURNING para cada banco de dados:

procedure CommitVenda;
const
    SQLInsertVenda = 'INSERT INTO TESTEVENDA (ID) VALUES (GEN_ID(GEN_ID_TESTEVENDA, 1)) RETURNING ID';
   SQLInsertVendaProduto = 'INSERT INTO TESTVENDAPRODUTO (ID, ID_VENDA,) VALUES (GEN_ID(GEN_ID_TESTEVENDA_PRODUTO, :ID_VENDA)';
var
    IDVenda: Int64;
    Query: TQuery; //usarei hipoteticamente uma query 
begin
    Query := TQuery.Create;
    try
        Query.SQL.Add(SQLInsertVenda); 
        Query.Open; // Por que Open? o método RETURNING vai retornar o campo que você solicitar, por isso deve ser uma query de abertura

       if (not Query.IsEmpty) then
         IDVenda := Query.FieldByName('ID').AsLargeInt; // aqui tem o código da venda que você inseriu
       else
          IDVenda := 0;  //significa que a query está vazia e não foi possível obter o identificador da venda

      if IDVenda > 0 then
      begin
         Query.CloseAndClear;
         Query.SQL.Add(SQLInsertVendaProduto);
         Query.ParamByName('ID_VENDA').AsLargeInt := IDVenda;
         Query.Exec; // como não é uma query de abertura, utiliza o EXEC
      end;
    finally
      FreeAndNil(Query);
    end;
end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar