ZEOS - Realizando update com TZUpDateSQL

Delphi

23/12/2004

Pessoal estou tentando fazer um UpDate numa tabela porem não dá erro algum e também não atualiza os valores olha o código que estou escrevendo.



No caso estou criando um UpdateSQL no momento em que clico no Botão.
A query faço da mesma forma porem quando é criado o FORM.



procedure TfrmEditCria.btnConfirmaClick(Sender: TObject);

var  updEdita : TZUpdateSQL;

begin
  qryPedido.RequestLive := True;

  updEdita := TZUpdateSQL.Create(self);
  qryPedido.UpdateObject := updEdita;
  with updEdita.ModifySQL do
  begin
    Add(´UPDATE pedido SET EmpresaID= :EmpresaID,´);
    Add(´RevendaID= :RevendaID, PABXID= :PABXID, Versao= :Versao,´);
    Add(´TipoPedidoID= :TipoPedidoID, Quantidade= :Quantidade,´);
    Add(´NumeroSerie= :NumeroSerie, desconto= :Desconto,´);
    Add(´Data= :Data, DataFim= :DataFim, Observacao= :Observacao,´);
    Add(´Preco= :Preco, FaixaVenda= :FaixaVenda, ProdutoID = :ProdutoID´);
    Add(´WHERE PedidoID=:PedidoID´);
  end;
  with updEdita.Params do
  begin
    ParamByName(´EmpresaID´).AsInteger := lcbCliente.KeyValue;
    ParamByName(´RevendaID´).AsInteger := lcbRevenda.KeyValue;
    ParamByName(´PABXID´).AsInteger := lcbPABX.KeyValue;
    ParamByName(´Versao´).AsString  := edtVersao.Text;
    ParamByName(´TipoPedidoID´).AsInteger := lcbTipo.KeyValue;
    ParamByName(´Quantidade´).AsString := edtQuantidade.Text;
    ParamByName(´NumeroSerie´).AsString := edtNumeroSerie.Text;
    ParamByName(´Desconto´).AsString := edtDesconto.Text;
    ParamByName(´Data´).AsDate := dtInicio.Date;
    ParamByName(´DataFim´).AsDate := dtFim.Date;
    ParamByName(´Observacao´).AsMemo := mmObservacao.Text;
    ParamByName(´Preco´).AsFloat := StrToFloat(edtPreco.Text);
    ParamByName(´FaixaVenda´).AsInteger := StrToInt(edtFaixaVenda.Text);
    ParamByName(´ProdutoID´).AsInteger := lcbProduto.KeyValue;
  end;
  qryPedido.Append;
  qryPedido.Edit;
  qryPedido.Post;
  Try
    qryPedido.ApplyUpdates;
  except
    qryPedido.CancelUpdates;
    ShowMessage(´Não foi possivel fazer a edição.´);
  end;
end;





Douglasf

Douglasf

Curtidas 0

Respostas

Douglasf

Douglasf

23/12/2004

sobe


GOSTEI 0
Douglasf

Douglasf

23/12/2004

sobe


GOSTEI 0
Rgvx

Rgvx

23/12/2004

Caro colega,

Se não estou enganado você se esqueceu de passar o valor para o partâmetro da clausula where para o :PedidoID e como é a condição para básica para o retorno da informação Provavelmente o sql está retornando vazio por isso o update não ocorre.

Atc,

RGVX


GOSTEI 0
Douglasf

Douglasf

23/12/2004

Muito obrigado pela resposta, realmente tinha me esquecido de passar este parametro, o problema é que ainda não resolveu.

Irei descrever todo o funcionamente aqui:

tenho um formulário com nome de frmPedido.

Nele tenho a qryPedido que é criada desta forma:

var
  frmPedidos: TfrmPedidos;
  qryPedido: TZQuery;
  qryTipo_Pedido: TZQuery;

implementation

uses uEmpresas;

{$R *.dfm}


...
procedure TfrmPedidos.FormCreate(Sender: TObject);
begin
  if Self <> nil then
    self.Show;

  qryPedido:=TZQuery.Create(Self);
  qryPedido.Connection:=conBanco;
...
  baseSQL(qryPedido);//uma função onde coloquei o SQL Base desta Query 
  qryPedido.Active:=True;
...


função BaseSQL

procedure baseSQL (var qryPedido : TZQuery);

begin
  with qryPedido, qryPedido.SQL do
  begin
    Close;
    Clear;
    Add(´select PedidoID, cli.Nome as Cliente, rev.Nome as Revenda, pabx.nome as PABX,´);
    Add(´produto.nome as Produto, versao as Versão, tipo_pedido.nome as Tipo,´);
    Add(´pedido.quantidade, pedido.NumeroSerie, pedido.desconto,´);
    Add(´pedido.data, pedido.datafim, pedido.preco, pedido.FaixaVenda, pedido.Observacao´);
    Add(´from pedido´);
    Add(´left join tipo_pedido on (tipo_pedido.TipoPedidoID=pedido.TipoPedidoID)´);
    Add(´left join empresa cli on (cli.EmpresaId=pedido.EmpresaID)´);
    Add(´left join empresa rev on (rev.EmpresaId=pedido.RevendaID)´);
    Add(´left join pabx on (pabx.numero=pedido.pabxID)´);
    Add(´left join produto on (produto.produtoId=pedido.produtoID)´);
  end;
end;


E tenho o frmEditaCria onde é criado o TZUpdateSQL ao ser clicado em no botão confirma.

procedure TfrmEditCria.btnConfirmaClick(Sender: TObject);

var  updEdita : TZUpdateSQL;

begin
  qryPedido.RequestLive := True;
  qryPedido.CachedUpdates := True;
  conBanco.ReadOnly := False;


  updEdita := TZUpdateSQL.Create(self);
  qryPedido.UpdateObject := updEdita;

  with updEdita.ModifySQL do
  begin
    Add(´UPDATE pedido SET EmpresaID= :EmpresaID,´);
    Add(´RevendaID= :RevendaID, PABXID= :PABXID, Versao= :Versao,´);
    Add(´TipoPedidoID= :TipoPedidoID, Quantidade= :Quantidade,´);
    Add(´NumeroSerie= :NumeroSerie, desconto= :Desconto,´);
    Add(´Data= :Data, DataFim= :DataFim, Observacao= :Observacao,´);
    Add(´Preco= :Preco, FaixaVenda= :FaixaVenda, ProdutoID = :ProdutoID´);
    Add(´WHERE PedidoID=:PedidoID´);
  end;
  with updEdita.Params do
  begin
    ParamByName(´EmpresaID´).AsInteger := lcbCliente.KeyValue;
    ParamByName(´RevendaID´).AsInteger := lcbRevenda.KeyValue;
    ParamByName(´PABXID´).AsInteger := lcbPABX.KeyValue;
    ParamByName(´Versao´).AsString  := edtVersao.Text;
    ParamByName(´TipoPedidoID´).AsInteger := lcbTipo.KeyValue;
    ParamByName(´Quantidade´).AsString := edtQuantidade.Text;
    ParamByName(´NumeroSerie´).AsString := edtNumeroSerie.Text;
    ParamByName(´Desconto´).AsString := edtDesconto.Text;
    ParamByName(´Data´).AsDate := dtInicio.Date;
    ParamByName(´DataFim´).AsDate := dtFim.Date;
    ParamByName(´Observacao´).AsMemo := mmObservacao.Text;
    ParamByName(´Preco´).AsFloat := StrToFloat(edtPreco.Text);
    ParamByName(´FaixaVenda´).AsInteger := StrToInt(edtFaixaVenda.Text);
    ParamByName(´ProdutoID´).AsInteger := lcbProduto.KeyValue;
    ParamByName(´PedidoID´).AsInteger := PedidoID;
  end;

  qryPedido.Edit;
  qryPedido.Post;
  try
    qryPedido.ApplyUpdates;
    ShowMessage(´Atualização concluida.´);
  except
    qryPedido.CancelUpdates;
    ShowMessage(´Não foi possivel realizar a edição do registro.´);
  end;



só isso....

Muito obrigado desde já....


GOSTEI 0
Douglasf

Douglasf

23/12/2004

consegui.....

Me parece que ele só realiza o UpDate na segunda vez que clico no botão, quer dizer ele faz todo o procedimento e não realiza nada, porem quando clico no botão pela segunda vez é que realmente faz o UpDate.

Alguem saberia me dizer o que seria isto?


GOSTEI 0
POSTAR