ZEOS - Realizando update com TZUpDateSQL
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.
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
Curtidas 0
Respostas
Douglasf
23/12/2004
sobe
GOSTEI 0
Douglasf
23/12/2004
sobe
GOSTEI 0
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
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
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:
função BaseSQL
E tenho o frmEditaCria onde é criado o TZUpdateSQL ao ser clicado em no botão confirma.
só isso....
Muito obrigado desde já....
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
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?
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