Ver Mensaje Individual
  #1  
Antiguo 06-08-2007
Avatar de radiohead
radiohead radiohead is offline
Miembro
 
Registrado: may 2004
Ubicación: Oliva (Valencia)
Posts: 34
Reputación: 0
radiohead Va por buen camino
Cool 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 vida es un desliz. Después, te mueres.

Última edición por delphi.com.ar fecha: 06-08-2007 a las 14:58:56. Razón: Agregué Etiquetas
Responder Con Cita