Caminante, que tal haciendo lo que comentabas de sacar la sentencia next fuera de los condicionales If termina en la primer lectura del lector de codigo.
Código Delphi
[-] if (key = #13) then
begin
Nprod:=Edit1.Text;
DataModule1.ADOQuery8.Close;
DataModule1.ADOQuery8.Open;
DataModule1.ADOQuery8.SQL.Clear;
DataModule1.ADOQuery8.Close;
DataModule1.ADOQuery8.SQL.Add('SELECT CVE_DOC,NUM_PAR,CVE_ART,CANT,CVE_ALTER,USUARIO,AREA,NIVEL');
DataModule1.ADOQuery8.SQL.Add('FROM PAR_FACTF_CLASS');
DataModule1.ADOQuery8.SQL.Add('WHERE CVE_DOC=:Fact');
DataModule1.ADOQuery8.Parameters.ParamByName('Fact').Value:=Nfact;
DataModule1.ADOQuery8.ExecSQL;
DataModule1.ADOQuery8.Open;
DataModule1.ADOQuery8.First;
DBGrid1.Columns[0].Visible:= True;
DBGrid1.Columns[1].Visible:= True;
DBGrid1.Columns[2].Visible:= True;
DBGrid1.Columns[3].Visible:= False;
DBGrid1.Columns[4].Visible:= False;
DBGrid1.Columns[5].Visible:= False;
DBGrid1.Columns[6].Visible:= False;
DBGrid1.Columns[7].Visible:= False;
Cuser:='NOMBRE USUARIO';
Carea:='SISTEMAS';
Nnivel:=0;
Ncuenta:=0;
While Not DataModule1.ADOQuery8.Eof Do
Begin
If Not (DataModule1.ADOQuery8.Fields[0].Value<>Nfact) Then
Begin
Nprod:=DataModule1.ADOQuery8.Fields[4].Value;
If (DataModule1.ADOQuery8.Fields[4].Value=Nprod) Then
Begin
Ncant:=DataModule1.ADOQuery8.Fields[3].Asinteger;
If (DataModule1.ADOQuery8.Fields[3].Value<>Ncuenta) Then
Begin
Ncuenta:=Ncuenta+1;
End
End;
End; DataModule1.ADOQuery8.Next;
Ncuenta:=0;
Nprod:=DataModule1.ADOQuery8.Fields[4].Value;
Form5_suite_factura.Show;
Form5_suite_factura.Edit1.Clear;
Form5_suite_factura.Edit1.SetFocus;
End; Form5_suite_factura.Close;
ShowMessage('Se termino la lectura de productos para su salida.');
end;
end;
como podras observar ya esta fuera de los If solo dentro de While Eof pero se sale inmediatamente.
Gracias