query loop infinito - Lógica errada?
28/04/2003
0
A lógica está errada? Como posso fazer um loop que ele faça alguma coisa até chegar ao final da query?
[color=red:e9764e2efa] while not (qryVeiculo.Eof) do begin[/color:e9764e2efa] // copia os registros pra POTMV
HoraTH :=0 ; MinTH:=0; MSegTH:=0;
tblTempVeiculo.Insert;
tblTempVeiculoTMCARRO.AsString := qryVeiculoSSCOD.AsString;
tblTempVeiculoTMDATA.AsDateTime := qryVeiculoCSDATA.AsDateTime;
tblTempVeiculoTMTOTALHORA.AsString := qryVeiculoCSHORAS.AsString;
tblTempVeiculo.Post;
qryVeiculo.Next;
while qryVeiculo.FieldByName(´SSCOD´).Value = tblTempVeiculo.FieldByName(´TMCARRO´).Value do begin
tblTempVeiculo.Edit;
auxiliar := tblTempVeiculoTMTOTALHORA.AsString;
SomaHor := StrToTime(auxiliar) + StrToTime(qryVeiculoCSHORAS.AsString);
tblTempVeiculoTMTOTALHORA.AsString := TimeToStr(SomaHor);
tblTempVeiculo.Post;
qryVeiculo.Next;
end;
end;
Debora
Posts
28/04/2003
Rodrigo Ferreira
qryVeiculo.First;
while not (qryVeiculo.Eof) do
begin
HoraTH :=0 ; MinTH:=0; MSegTH:=0;
tblTempVeiculo.Insert;
tblTempVeiculoTMCARRO.AsString := qryVeiculoSSCOD.AsString;
tblTempVeiculoTMDATA.AsDateTime := qryVeiculoCSDATA.AsDateTime;
tblTempVeiculoTMTOTALHORA.AsString := qryVeiculoCSHORAS.AsString;
tblTempVeiculo.Post;
if qryVeiculo.FieldByName(´SSCOD´).Value = tblTempVeiculo.FieldByName(´TMCARRO´).Value then
begin
tblTempVeiculo.Edit;
auxiliar := tblTempVeiculoTMTOTALHORA.AsString;
SomaHor := StrToTime(auxiliar) + StrToTime(qryVeiculoCSHORAS.AsString);
tblTempVeiculoTMTOTALHORA.AsString := TimeToStr(SomaHor);
tblTempVeiculo.Post;
end;
qryVeiculo.Next;
end;
:wink:
28/04/2003
Schumacher
Reparei que você esta utilizando um loop dentro do outro utilizando a mesma Query. Isso trava o seu sistema, você precisa encerrar um loop antes de começar o outro.
Exemplo com seu código arrumado:
while not (qryVeiculo.Eof) do begin // copia os registros pra POTMV
HoraTH :=0 ; MinTH:=0; MSegTH:=0;
tblTempVeiculo.Insert;
tblTempVeiculoTMCARRO.AsString := qryVeiculoSSCOD.AsString;
tblTempVeiculoTMDATA.AsDateTime := qryVeiculoCSDATA.AsDateTime;
tblTempVeiculoTMTOTALHORA.AsString := qryVeiculoCSHORAS.AsString;
tblTempVeiculo.Post;
qryVeiculo.Next;
[b:ed9a7891b5]end;[/b:ed9a7891b5] // Faltava este END
// Aqui começa a segunda Query
while qryVeiculo.FieldByName(´SSCOD´).Value = tblTempVeiculo.FieldByName(´TMCARRO´).Value do begin
tblTempVeiculo.Edit;
auxiliar := tblTempVeiculoTMTOTALHORA.AsString;
SomaHor := StrToTime(auxiliar) + StrToTime(qryVeiculoCSHORAS.AsString);
tblTempVeiculoTMTOTALHORA.AsString := TimeToStr(SomaHor);
tblTempVeiculo.Post;
qryVeiculo.Next;
end;
28/04/2003
Rodrigo Ferreira
qryVeiculo.First;
HoraTH :=0 ; MinTH:=0; MSegTH:=0;
while not (qryVeiculo.Eof) do
begin
tblTempVeiculo.Insert;
tblTempVeiculoTMCARRO.AsString := qryVeiculoSSCOD.AsString;
tblTempVeiculoTMDATA.AsDateTime := qryVeiculoCSDATA.AsDateTime;
tblTempVeiculoTMTOTALHORA.AsString := qryVeiculoCSHORAS.AsString;
tblTempVeiculo.Post;
if qryVeiculo.FieldByName(´SSCOD´).Value = tblTempVeiculo.FieldByName(´TMCARRO´).Value then
begin
tblTempVeiculo.Edit;
auxiliar := tblTempVeiculoTMTOTALHORA.AsString;
SomaHor := StrToTime(auxiliar) + StrToTime(qryVeiculoCSHORAS.AsString);
tblTempVeiculoTMTOTALHORA.AsString := TimeToStr(SomaHor);
tblTempVeiculo.Post;
end;
qryVeiculo.Next;
end;
Clique aqui para fazer login e interagir na Comunidade :)