Fórum ZEOS - Realizando update com TZUpDateSQL #263277
23/12/2004
0
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
Curtir tópico
+ 0Posts
23/12/2004
Douglasf
Gostei + 0
24/12/2004
Douglasf
Gostei + 0
24/12/2004
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
27/12/2004
Douglasf
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
27/12/2004
Douglasf
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
Clique aqui para fazer login e interagir na Comunidade :)