Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas: consulta por fechas con parametros (https://www.clubdelphi.com/foros/showthread.php?t=46658)

radiohead 06-08-2007 13:07:37

Problemas: consulta por fechas con parametros
 
Hola!

Estoy conectando a una base de datos access mediante ADOConnection.
En el TAdoDataSet utilizo la siguiente consulta SQL:

Código SQL [-]
 
SELECT 
[_FACTURAS].FechaRecibo, 
[_FACTURAS].NumeroRecibo, 
[_FACTURAS].ID_CLIENTE, 
[_ABONADOS].Nombre1, 
[_FACTURAS].CodigoAbonado, Calles.NombreCalle & ', ' & [_ENGANCHES].NumeroFinca & ' - ' & [_ENGANCHES].EscaleraFinca & ' - ' & [_ENGANCHES].PisoFinca & ' - ' & [_ENGANCHES].PuertaFinca AS DIRECCION, [_FACTURAS].Consumo, 
[_FACTURAS].ImportePrincipal, 
[_FACTURAS].Situacion

FROM 
Calles INNER JOIN ((_ABONADOS INNER JOIN _ENGANCHES ON [_ABONADOS].CodigoAbonado = [_ENGANCHES].CodigoAbonado) 
INNER JOIN _FACTURAS ON [_ABONADOS].CodigoAbonado = [_FACTURAS].CodigoAbonado) ON Calles.CodigoPoblacion = [_ENGANCHES].CodigoPoblacionFinca

WHERE ((([_FACTURAS].FechaRecibo) BETWEEN :FIni And :FFin))

Utilizo 2 DateTimePicker para seleccionar la fecha de inicio y la fecha de fin, y lanzo la consulta en el siguiente código:


Código Delphi [-]
procedure TfrmFacturacion.actPresentarExecute(Sender: TObject);
var
  FechaIni, FechaFin: String;
begin
  FechaIni := DateToStr(DateTimePicker1.Date);
  FechaFin := DateToStr(DateTimePicker2.Date);
 
  cdsFacturacion.Close;
  ADOdsFacturacion.Close;
 
  ADODsFacturacion.Parameters[0].Value := FechaIni;     //TADODataSet
  ADODsFacturacion.Parameters[1].Value := FechaFin;
 
  ADOdsFacturacion.Open;
  cdsFacturacion.Open;
 
  mkdFactura.SetFocus;
end;

El problema es que, si introduzco un rango de fechas, en el cual no haya ningun registro, la consulta la hace inmediatamente, sin problemas y casi sin esperas. Pero si introduzco un rango en el que sí tendría que devolver valores se queda colgado. Sin mensajes de error, pero colgado.

Al seguir la traza paso a paso, veo que la instrucción de apertura del ADODataSet sí que la pasa, (aunque le cuesta), pero no así la apertura del clientDataSet.

Las consultas que devuelven valores devuelven unos 4000 registros. Esta tabla tiene actualmente unos 150.000 registros, pero en consultas a otras tablas con parecido número de registros devueltos (no hablo de totales) la respuesta es inmediata.

¿A qué se puede deber?
Salu2 anticipadamente.


La franja horaria es GMT +2. Ahora son las 02:50:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi