Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Consulta entre fechas con ADO (https://www.clubdelphi.com/foros/showthread.php?t=71353)

radenf 15-12-2010 01:03:46

Consulta entre fechas con ADO
 
Hola amigos:

Tengo el siguiente código desarrollado en Delphi 2007, para buscar entre fechas (campos tipo date) en una base de datos Access 2003, a la que accedo mediante ADOQuerys:

Código SQL [-]
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select * from examenes where fechaexamen between :F1 And :F2');
Query2.Parameters.ParamByName('F1').Value:= DateEdit1.Date;
Query2.Parameters.ParamByName('F2').Value:= DateEdit2.Date;
Query2.Open;

y al ejecutarlo me arroja el siguiente error:

"No coinciden los tipos de datos en la expresión de criterios"

¿Puede alguien por favor decirme en qué me estoy equivocando?

Saludos y desde ya muchas gracias

marcoszorrilla 15-12-2010 08:12:47

Prueba:

Código Delphi [-]
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select * from examenes where fechaexamen between :F1 And :F2');
Query2.Parameters.ParamByName('F1').AsDate:= DateEdit1.Date;
Query2.Parameters.ParamByName('F2').AsDate:= DateEdit2.Date;
Query2.Open;

O esta otra
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select * from examenes where fechaexamen between :#F1# And :#F2#');
Query2.Parameters.ParamByName('F1').Value:= DateEdit1.Date;
Query2.Parameters.ParamByName('F2').Value:= DateEdit2.Date;
Query2.Open;
Un Saludo.

radenf 15-12-2010 11:30:16

Muchas gracias marcoszorrilla por tu pronta respuesta.

Al usar el primer código no me acepta la declaración asDate (Identificador no declarado) y al utilizar la segunda me entrega un error de Query2. parámetro F1 no encontrado, a pesar de que si aparece en el AdoQuery.
Tengo en el uses las Dateutils.

Salu2

microbiano 15-12-2010 18:47:16

prueba
 
Código Delphi [-]
qry_ventas.SQL.Add('SELECT FACTURA.Idfactura, FACTURA.nofactura, FACTURA.Fecha,');
    qry_ventas.SQL.Add('FACTURA.CodCliente, clientes.RAZON_SOCIAL, FACTURA.Terminos,');
    qry_ventas.SQL.Add('FACTURA.CodVendedor, FACTURA.montosubtotal, FACTURA.descuento,');
    qry_ventas.SQL.Add('FACTURA.montodescuento, FACTURA.iva, FACTURA.montoiva, FACTURA.montototal,');
    qry_ventas.SQL.Add('FACTURA.pagacon, FACTURA.cambio FROM FACTURA LEFT JOIN clientes ON FACTURA.CodCliente=clientes.Idcliente');

    qry_ventas.SQL.Add('where fecha between : pfechainicio and : pfechafin ORDER BY 1');

    qry_ventas.Parameters.ParamByName('pfechainicio').Value : =FormatDateTime('dd/mm/yyyy',freporte_ventas.dtp_fecha_ini.Date);
    qry_ventas.Parameters.ParamByName('pfechafin').Value: = FormatDateTime('dd/mm/yyyy',freporte_ventas.dtp_fecha_fin.Date);
    qry_ventas.Open;

recuerda que ests linesas tiene que los paramentros tienen que ir juntos es decir, dospunto y la variabel lo separe para que aparecieran correctamente

radenf 16-12-2010 00:19:03

Muchas gracias microbiano, probé tu código y ya no me arroja error, pero selecciona todos los registros de la tabla, sin importar la fecha.

Salu2

microbiano 16-12-2010 00:36:54

que tal si pones el codigo que ahora usas? para ver como esta

radenf 16-12-2010 11:37:32

Solucionado.

Modifiqué el código de acuerdo a sus sugerencias y borré el string del AdoQuery. No fue necesario usar el carácter # ni dar un formato inverso a la fecha.

Código utilizado:

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from examenes where fechaexamen between :F1 And :F2'+ ' and ucase (nombre) like ''%'+UpperCase(Edit1.Text)
+'%''order by nombre');
Query1.Parameters.ParamByName('F1').Value:= FormatDateTime('dd/mm/yyyy',Date1.Date);
Query1.Parameters.ParamByName('F2').Value:= FormatDateTime('dd/mm/yyyy',Date2.Date);
Query1.Open;

Saludos y muchas gracias microbiano y marcoszorrilla.

marcoszorrilla 16-12-2010 12:06:35

Lo veo lógico, yo no me había fijado que Date1 y 2 eran Edits, es lógico que te diera error.

Yo en estos casos utilizo DateTimePicker.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 15:23:58.

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