Pues sí que he visto algo, aunque puede que no sea relevante: Haces el "clear" sin cerrar la base de datos. Yo, por precaución siempre la cierro antes.
Código Delphi
[-]
miBD.Close;
miBD.SQL.Clear;
miBD.SQL.Add('lo que sea');
miBD.Open;
Además suelo asegurarme de que la consulta tiene datos antes de ejecutar cualquier tipo de bucle (lo sé, soy un poco maniática).