Problema con ADOQuery y SQL

Básicamente mi problema es el siguiente: para hacer una consulta por el Código de barras hago lo siguiente:
DataModuleJCC.ADOQueryProductos.Close;
DataModuleJCC.ADOQueryProductos.SQL.Clear;
DataModuleJCC.ADOQueryProductos.SQL.Add('SELECT ... ;'); (la consulta que uso se que funciona)
DataModuleJCC.ADOQueryProductos.Open;
Pues bien, la primer vez que ejecuto esto funciona perfectamente pero la segunda me da un error diciendo que BOF o EOF son igual a true y se queda bloqueado.
1

1 Respuesta

8.075 pts.
Si te cuento que este es un problema muy común.
Lo que puedes hacer es lo siguiente:
try
MyAdoQuery.Close;
MyAdoQuery.SQL.Text:='select.....';
MyAdoQuery.Open;
Except
FalloMyAdoquery:=true;
End;
Esto atrapará el error al cerrar el Query y evitará que tu programa se corte o mande mensajes, sin embargo verás que si quieres mandar otra consulta, que aunque funcione, no devuelva registros(es decir recordcount=0) luego no podrás volver a realizar otra consulta y que funcione, aunque lo cierres y lo vuelvas a abrir o aunque hagas un requery, el ADOQUERY SE HA BLOQUEADO Y YA NO FUNCIONA.
Entonces conviene hacer esto.
Declarar en algún otro lado...
var MyAdoQuery:TadoQuery;
Dentro del método...
Begin
MyAdoquery:=TAdoQuery.Create(nil);
MyAdoquery.Connection:=MyConnection;
try
MyAdoQuery.Close;
Except
try
MyAdoquery.free;
except
falloelfree:=true;
end;
MyAdoquery:=TAdoQuery.Create(nil);
MyAdoquery.Connection:=MyConnection;
End;
MyAdoQuery.SQL.Text:='select.....';
MyAdoQuery.Open;
end;
Saludos y espero que te sirva, esto ocurre con Delphi 6 aunque tengas el Pack2 en el 5 no me ha ocurrido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas