Query da erro e trava a rotina
02/09/2004
0
Pessoal,
preciso de uma ajuda ..., tenho o seguinte codigo:
// dmtabelas.TProduto.First;
// ProgressBar2.Max := dmtabelas.TProduto.RecordCount;
// ProgressBar2.Position := 0;
// while not DMTabelas.TProduto.Eof do
// begin
// dmtabelas.TProduto.Edit;
// frmprod.atualizaPreco;
// dmtabelas.TProduto.Post;
// ProgressBar2.Position := ProgressBar2.Position + 1;
// dmtabelas.TProduto.Next;
// end;
// dmtabelas.TProduto.close;
// dmtabelas.TProduto.FreeOnRelease;
Em frmprod.atualizaPreco , tenho uma Query onde seleciono o preciso e faco a alteracao na tabela de PRodutos (do item que esta no dataset).
Qdo a tabela de produtos tinha pouco registro ... ia q era uma beleza ..., so que agora que tem muitos registro , inicio a rotina e qdo esta +/- no meio dos registros da um erro
´Access Violation ´ e numero do endereco de memoria e trava a maquina.
Naum sei mais que faco pra resolver isso..
alguem poderia me dar alguuma ajuda ?
Obr
Marcel
preciso de uma ajuda ..., tenho o seguinte codigo:
// dmtabelas.TProduto.First;
// ProgressBar2.Max := dmtabelas.TProduto.RecordCount;
// ProgressBar2.Position := 0;
// while not DMTabelas.TProduto.Eof do
// begin
// dmtabelas.TProduto.Edit;
// frmprod.atualizaPreco;
// dmtabelas.TProduto.Post;
// ProgressBar2.Position := ProgressBar2.Position + 1;
// dmtabelas.TProduto.Next;
// end;
// dmtabelas.TProduto.close;
// dmtabelas.TProduto.FreeOnRelease;
Em frmprod.atualizaPreco , tenho uma Query onde seleciono o preciso e faco a alteracao na tabela de PRodutos (do item que esta no dataset).
Qdo a tabela de produtos tinha pouco registro ... ia q era uma beleza ..., so que agora que tem muitos registro , inicio a rotina e qdo esta +/- no meio dos registros da um erro
´Access Violation ´ e numero do endereco de memoria e trava a maquina.
Naum sei mais que faco pra resolver isso..
alguem poderia me dar alguuma ajuda ?
Obr
Marcel
Scandolara
Curtir tópico
+ 0
Responder
Posts
02/09/2004
Scandolara
conforme pedido :
chamada
dmtabelas.QrySelMpProd.close;
dmtabelas.QrySelMpProd.Params[0].asstring := dmtabelas.TProdutoCodigo.AsString;
dmtabelas.QrySelMpProd.execsql;
dmtabelas.QrySelMpProd.open;
sql :
select distinct(c.codigo), a.codprod, a.codmp, a.qtduti, (c.custor * a.qtduti) as custoprod
from tmpprod a, tproduto b, tmatprim c
where a.codprod = :paramCodProd and
a.codprod = b.codigo and
a.codmp = c.codigo
é isso
obr
chamada
dmtabelas.QrySelMpProd.close;
dmtabelas.QrySelMpProd.Params[0].asstring := dmtabelas.TProdutoCodigo.AsString;
dmtabelas.QrySelMpProd.execsql;
dmtabelas.QrySelMpProd.open;
sql :
select distinct(c.codigo), a.codprod, a.codmp, a.qtduti, (c.custor * a.qtduti) as custoprod
from tmpprod a, tproduto b, tmatprim c
where a.codprod = :paramCodProd and
a.codprod = b.codigo and
a.codmp = c.codigo
é isso
obr
Responder
02/09/2004
Sandra
Marcel,
De acordo com o text da sua SQL: você está utilizando o [b:7f2aa2d547]Select[/b:7f2aa2d547] (apenas buscando, selecionando dados); neste caso, não se usa o comando [b:7f2aa2d547]execsql[/b:7f2aa2d547] (dmtabelas.QrySelMpProd.execsql;)... basta o open (dmtabelas.QrySelMpProd.open;).
O ExecSQL é utilizado quando se faz um Insert, Update ou Delete (manutenção de dados).
Portanto, elimine a linha que contém esse método e verifique se o problema não está aí. Boa sorte!
De acordo com o text da sua SQL: você está utilizando o [b:7f2aa2d547]Select[/b:7f2aa2d547] (apenas buscando, selecionando dados); neste caso, não se usa o comando [b:7f2aa2d547]execsql[/b:7f2aa2d547] (dmtabelas.QrySelMpProd.execsql;)... basta o open (dmtabelas.QrySelMpProd.open;).
O ExecSQL é utilizado quando se faz um Insert, Update ou Delete (manutenção de dados).
Portanto, elimine a linha que contém esse método e verifique se o problema não está aí. Boa sorte!
Responder
Clique aqui para fazer login e interagir na Comunidade :)