Componente TZUpdateSQL

MySQL

Delphi

03/04/2018

Estou trabalhando com esse componente para fazer update dos items de venda do caixa do meu sistema.
Ele funciona que é uma beleza porém, estou fazendo um modulo de comandas e estou tentando utilizar este componente porém, quando tento adicionar os items na comanda 2 ele simplesmente adiciona na comanda 1...
tentei de diversas maneiras resolver esse problema porém me esgotaram as ideias por isso peço ajuda a vocês.

tables:

zqrComandaItem

SELECT
 vi.*,
 v.*,
 p.p_nome,
 p.p_preco,
 p.p_quantidade,
 p.p_peso,
 p.p_atividade
FROM
 vi_comanda_item vi,
 p_produto p,
 v_comandas v
WHERE
 vi.vi_produto = p.p_id AND vi.vi_comanda = :comanda AND p.p_atividade = 'S'


updComandaItem:

Modify:

UPDATE vi_comanda_item SET
  vi_produto = :vi_produto,
  vi_cliente = :vi_cliente,
  vi_comanda = :vi_comanda,
  vi_valor = :vi_valor,
  vi_quantidade = :vi_quantidade,
  vi_peso = :vi_peso,
  vi_total = :vi_total
WHERE
  vi_comanda_item.vi_id = :OLD_vi_id AND
  vi_comanda_item.vi_produto = :OLD_vi_produto AND
  vi_comanda_item.vi_cliente = :OLD_vi_cliente AND
  vi_comanda_item.vi_comanda = :OLD_vi_comanda


Insert
INSERT INTO vi_comanda_item
  (vi_produto, vi_cliente, vi_comanda, vi_valor, vi_quantidade, vi_peso, vi_total)
VALUES
  (:vi_produto, :vi_cliente, :vi_comanda, :vi_valor, :vi_quantidade, :vi_peso, :vi_total)


delete:

DELETE FROM vi_comanda_item
WHERE
  vi_comanda_item.vi_id = :OLD_vi_id AND
  vi_comanda_item.vi_produto = :OLD_vi_produto AND
  vi_comanda_item.vi_cliente = :OLD_vi_cliente AND
  vi_comanda_item.vi_comanda = :OLD_vi_comanda


Como estou adicionando o item na comanda:

dsvendaitem = dmCantina.zqrComandaItem;

      with dsvendaitem.dataset do
      begin
      Append;
      if (peso >= 1) then
      begin
      pesooo := strtofloat(Inputbox('Digite o peso','Qual é o peso da venda?',''));
      if (pesooo = 0) or (pesooo > dmcantina.ztrProdutosp_peso.AsFloat) then
      begin
      showmessage('Quantidade Invalida!');
      end
      else
      begin
      fieldbyname('vi_produto').Value := dmcantina.ztrProdutosp_id.Value;
      fieldbyname('vi_cliente').Value := frmopencommand.idcliente;
      fieldbyname('vi_valor').Value := dsprodutos.DataSet.FieldByName('p_preco').Value;
      FieldByName('vi_peso').Value := pesooo;
      fieldbyname('vi_total').Value := fieldbyname('vi_peso').value * fieldbyname('vi_valor').Value;
      Post;
      dmcantina.ztrProdutos.Active;
      dmcantina.ztrProdutos.Edit;
      dmcantina.ztrProdutosp_peso.Value := dmcantina.ztrProdutosp_peso.Value - dsvendaitem.dataset.fieldbyname('vi_peso').Value;
      dmcantina.ztrProdutos.Post;
      peso := peso-FieldByName('vi_peso').Value;
      end
      end
      else if (qtd >= 1) then
      begin
      fieldbyname('vi_produto').Value := dsprodutos.DataSet.FieldByName('p_id').Value;
      fieldbyname('vi_cliente').Value := frmopencommand.idcliente;
      fieldbyname('vi_valor').Value := dsprodutos.DataSet.FieldByName('p_preco').Value;
      fieldbyname('vi_quantidade').Value := 1;
      fieldbyname('vi_total').Value := fieldbyname('vi_quantidade').Value * fieldbyname('vi_valor').Value;
      Post;
      dmcantina.ztrProdutos.Active;
      dmcantina.ztrProdutos.Edit;
      dmcantina.ztrProdutosp_quantidade.Value := dmcantina.ztrProdutosp_quantidade.Value - dsvendaitem.dataset.fieldbyname('vi_quantidade').Value;
      dmcantina.ztrProdutos.Post;
      qtd := qtd-1;
      end
      else if (dsprodutos.DataSet.FieldByName('p_peso').Value = 0) then
      begin
         showmessage('Produto Não Disponivel em Estoque!');
      end
      else if (dsprodutos.DataSet.FieldByName('p_quantidade').Value = 0) then
      begin
         showmessage('Produto Não Disponivel em Estoque');
      end;
     end;


Estou passando por parâmetro para saber qual comanda está:

dmCantina.zqrComandaItem.Params[0].Value := dsvenda.DataSet.FieldByName('v_id').Value;

os dbgrids funcionam muito bem, porém na hora de adicionar o produto sempre vai para a comanda 1 que seria a v_id 1
Michel

Michel

Curtidas 0

Respostas

Michel

Michel

03/04/2018

Na verdade agora até consegui adicionar o item na comanda certa porém está dando esse erro após adicionar items em uma das comandas:

https://ibb.co/iXwLsH
GOSTEI 0
Michel

Michel

03/04/2018

está dando erro por causa dessa tabela:

SELECT
 v.*,
 c_nome,
 f_nome
FROM
 v_comandas v
INNER JOIN
 c_cliente
ON
 v.v_cliente = c_cliente.c_id
INNER JOIN
 f_funcionario
ON
 v.v_caixa = f_funcionario.f_id
WHERE
 v.v_status = 'ABERTA'
GOSTEI 0
POSTAR