Fórum Ajuda com ApplyUpdate(0) #411717
19/01/2012
0
Tenha um Grid onde mostro os dados do select seguinte:
zqPedItens.SQL.Add(select ei.produto, pf.prodforn, pd.descricao, tq.estq_atual, ei.qtd_sug, ei.qtd_ped);
zqPedItens.SQL.Add(, ei.entradacab, ei.prcfabrica from entradaitens01 ei );
zqPedItens.SQL.Add(left join codprodforn pf on ei.produto = pf.produto and pf.fornecedor = :forn);
zqPedItens.SQL.Add(inner join produto pd on ei.produto = pd.codigo);
zqPedItens.SQL.Add(inner join estoque01 tq on ei.produto = tq.produto);
zqPedItens.SQL.Add(where ei.entradacab = :codcab order by descricao);
zqPedItens.ParamByName(codcab).AsInteger := NroPedido;
zqPedItens.ParamByName(forn).AsInteger := CodFornecedor;
zqPedItens.Open;
Estou utilizando conectados Query, DataSetProvider, ClientDataSet e DataSource -> DBGrid.
É um Grid de pedido de compra com as seguintes colunas:
Cód.Prod | Cód.Prod no Fron. | Descrição | Qtd_Estq | Qtd_Sug. | Qtd_Ped.
Só quem sofre alterações é a coluna Qtd_Ped.
No Evento AfterPost do ClientDataSet eu coloquei o seguinte código:
procedure Tfrm_pedidodecompra.AtualizarPedido(DataSet: TDataSet);
begin
with Dataset as TClientDataSet do
ApplyUpdates(0);
end;
Quando eu coloco uma quantidade na Qtd_Ped. que dou enter para ira para a próxima linha ele aplica o Post e consequentemente o ApplyUpdate(0), mas toda vez que é executado o ApplyUpdate(0) é apresentado um erro:
Project EasyPharma.exe raised exception class EZSQLException with message Connot update a complex query with more then one table.
Sei que é por causa da consulta que eu fiz, utilizando mais de uma tabela. Gostaria de saber se alguém poderia me ajudar, se haveria a possibilidade de atualizar a tabela entradaitens01, que é o objetivo, com a query utilizada.
Alguém poderia me ajudar?
Vagner Almeida
Curtir tópico
+ 0Posts
19/01/2012
Rafael Ribeiro
Ao invés de chamar essa função que vc criou para applyupdate tente o seguinte: no Evento AfterPost do ClientDataSet digite o seguinte código:
TClientDataSet(DataSet).ApplyUpdates(0);
Depois direcione também, o evento AfterDelete para o evento acima.
Espero ter ajudado.
Rafael
Gostei + 0
19/01/2012
Rafael Ribeiro
Gostei + 0
19/01/2012
Marco Salles
providerfalg VAzio com exceção do campo chave que deve ter [pfInKey] e o campo que sofrera modificação
com a propriedade [pfInUpdate,pfInWhere,pfInKey]
Não esqueça que talves tem que alterar a propriedade UpdateMode do TdataSetProvider para upWhereKeyOnly
È que eu estou sem o Delphi aqui e sem as Revistas, mas tem um Excelente artigo do Guinther
publicado em uma dessas Ediçoes que ele mostra passo apasso a modificar valores em
consultas resultante de Inner Join , se eu entendi bem o seu problema
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)