Erro em Loop / Sistema ADO
Bom Dia Pessoal !
Uso FB / IB em conjunto com o sistema ADO no delphi 7 e estou com o seguinte problema em uma query:
while not qryItens.eof do begin
prazo := copy(qryItensPRAZO_ENTR.Value,10,1);
dias := StrToInt(copy(qryItensPRAZO_ENTR.Value,1,3));
if prazo = ´C´ then begin
qryItens.Edit;
qryItensPREV_ENTR.Value := date+dias;
qryItens.Post;
end; // Dias Corridos
end; // While
Mas quando ele tenta fazer o loop manda a mensagem de erro: ´A linha não pode ser encontrada para Atualização. Alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez...´
Alguem poderia ajudar, vi que o problema esta nas variaveis, sera que elas nao conseguem ganhar novos valores a cada volta do loop?
[]´s
Uso FB / IB em conjunto com o sistema ADO no delphi 7 e estou com o seguinte problema em uma query:
while not qryItens.eof do begin
prazo := copy(qryItensPRAZO_ENTR.Value,10,1);
dias := StrToInt(copy(qryItensPRAZO_ENTR.Value,1,3));
if prazo = ´C´ then begin
qryItens.Edit;
qryItensPREV_ENTR.Value := date+dias;
qryItens.Post;
end; // Dias Corridos
end; // While
Mas quando ele tenta fazer o loop manda a mensagem de erro: ´A linha não pode ser encontrada para Atualização. Alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez...´
Alguem poderia ajudar, vi que o problema esta nas variaveis, sera que elas nao conseguem ganhar novos valores a cada volta do loop?
[]´s
Neves777
Curtidas 0
Respostas
Rjun
31/08/2005
Acho que está faltando um [b:7996b83a12]qryItens.Next[/b:7996b83a12] no seu código.
while not qryItens.eof do begin prazo := Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 10, 1); dias := StrToInt(Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 1, 3)); if prazo = ´C´ then begin qryItens.Edit; qryItensPREV_ENTR.Value := date+dias; qryItens.Post; end; // Dias Corridos qryItens.Next; end; // While
GOSTEI 0
Neves777
31/08/2005
Na pressa de passar o código para ca esqueci de escrever o qryItens.Next, mas ele esta sim no codigo e nao esta dando certo
Código:
while not qryItens.eof do
begin
prazo := Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 10, 1);
dias := StrToInt(Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 1, 3));
if prazo = ´C´ then
begin
qryItens.Edit;
qryItensPREV_ENTR.Value := date+dias;
qryItens.Post;
end; // Dias Corridos
QRYITENS.NEXT;
end; // while
Código:
while not qryItens.eof do
begin
prazo := Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 10, 1);
dias := StrToInt(Copy(qryItens.FieldByName(´PRAZO_ENTR´).Value, 1, 3));
if prazo = ´C´ then
begin
qryItens.Edit;
qryItensPREV_ENTR.Value := date+dias;
qryItens.Post;
end; // Dias Corridos
QRYITENS.NEXT;
end; // while
GOSTEI 0
Rjun
31/08/2005
Não era mais fácil você criar uma query e fazer a atualização via comando SQL.
GOSTEI 0
Neves777
31/08/2005
Não consigui fazer isso por conta dos parametros que têm de ser passsado para a qry, vc podeia me dar uma ajuda???
Obrigado
Obrigado
GOSTEI 0
Rjun
31/08/2005
Quais os parâmetros que devem ser passados? No seu código não tem nada que não possa ser conseguido na própria tabela. Eu não conheço IB, então eu te passo o código pro SQL Server e vc modifica pro IB. A única diferença deve estar nas funções de conversão de string para inteiro e para pegar uma substring.
UPDATE Teste2 SET Prev_Entr = GETDATE() + CAST(SUBSTRING(Prazo_Entr, 1, 3) AS INTEGER) WHERE SUBSTRING(Prazo_Entr, 10, 1) = ´C´
GOSTEI 0
Neves777
31/08/2005
Obrigado Rjun, adaptei esse cod que vc me passou ao IB e funcionou perfeitamente, tenho que perder a mania de fazer esse tipo de atualizaco pelo delphi, e usar sempre o SQL para resolver o problema.
Obrigado
[]´s
Obrigado
[]´s
GOSTEI 0