Fórum Erro em Loop / Sistema ADO #293834

31/08/2005

0

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


Neves777

Neves777

Responder

Posts

31/08/2005

Rjun

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 



Responder

Gostei + 0

31/08/2005

Neves777

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


Responder

Gostei + 0

31/08/2005

Rjun

Não era mais fácil você criar uma query e fazer a atualização via comando SQL.


Responder

Gostei + 0

31/08/2005

Neves777

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


Responder

Gostei + 0

31/08/2005

Rjun

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´



Responder

Gostei + 0

01/09/2005

Neves777

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar