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)
-   -   Buscar por rango de fechas en access (https://www.clubdelphi.com/foros/showthread.php?t=65157)

Kamael 24-11-2009 21:45:55

Buscar por rango de fechas en access
 
Mi problema es que al buscar con este codigo en la tabla access me da el siguiente error :" No coinciden lostipos de datos en la expresion de criterios".

Código:

El Codigo :
Query2.SQL.Text := ('SELECT * FROM Kilometros ');
Query2.sql.add('Where Fech between');
Query2.sql.add(QuotedStr(FormatDateTime('mm/dd/yyyy',Dtpc1.Date)));
Query2.sql.add('and '+QuotedStr(FormatDateTime('mm/dd/yyyy',DtpC2.Date)));

query2.SQL.Add('Order by Fech');
Query2.Open;
Query2.Filter := 'Mat = '+QuotedStr(Cb1.Text);
Query2.Filtered := True;

Como puedo hacerlo ?
En Paradox me funciona perfectamente pero en acces no.
P.D. soy novato en esto

marcoszorrilla 24-11-2009 22:18:23

En Access las fechas deben de ir entre almohadillas ##
Un Saludo.

Kamael 24-11-2009 22:33:18

Tambien las puse pero no funciona.
Gracias por tu respuesta.

gerardus 25-11-2009 09:48:52

Siempre que uses fechas en query's, sea cual sea la base de datos, te recomiendo usar parametros.
Casi cada DB tiene su formato de fecha distinto en SQL (Aunque se empiezen a estandarizar hacia ISO: "yyyy-mm-dd").
De esta forma tu codigo sera más facilemente portable entre bases de datos.

Código:

Query2.SQL.Text := ('SELECT * FROM Kilometros ');
Query2.sql.add('Where Fech between :fecha1 and :fecha2');
Query2.parambyname('fecha1').asdatetime : = dtpc1.Date
Query2.parambyname('fecha2').asdatetime : = dtpc2.Date

Saludos,

Gerard.

Kamael 25-11-2009 21:22:21

He probado tu codigo y al compilar me dice :"Undeclared identifier PramByName". Donde me estoy equivocando? .
Un saludo

marcoszorrilla 25-11-2009 22:53:09

Tienes que incluir la unidad DbTables.

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, StdCtrls, Buttons, DBCtrls, ExtCtrls, DBTables, Db;


Un Saludo.

gerardus 26-11-2009 09:21:43

Cita:

Empezado por Kamael (Mensaje 347443)
He probado tu codigo y al compilar me dice :"Undeclared identifier PramByName". Donde me estoy equivocando? .

Tu no te equivocas. Fui yo:o

Es ParamByName

A ver cuando ponemos un editor de mnesajes con comprobación de sintaxis. :D

Saludos,

Gerard.

Kamael 26-11-2009 17:03:09

La unidad DBTables ya estaba incluida pero tampoco funciona. El codigo es este :

Código:

Query2.SQL.Text := ('SELECT * FROM Kilometros ');
Query2.sql.add('Where Fech between :Fecha1 and :Fecha2');
Query2.Parameters.ParamByName('fecha1').Value := dtpc1.Date ;
Query2.Parameters.ParamByName('fecha2').Value := dtpc2.Date ;
query2.SQL.Add('Order by Fech');
Query2.Open;

Solo me queda solucionar este problema.
Perdonad mi pesadez.

gerardus 26-11-2009 17:26:04

Que es lo que no funciona exactamente? No compila o no filtra? Si hay error, cual es el mensaje?

gerardus 26-11-2009 17:32:00

Por cierto, veo que los parametros de un TADOQuery no son TParams "normales" del Delphi, sino que usan solo variantes (que miedo).
Pido disculpas, pensaba que funcionaban como todo el resto.
Podrias probar a poner un valor string en el .value del parametro (ya se que te estoy diciendo lo contrario que te dije al principio :o)

Código:

Query2.Parameters.ParamByName('fecha1').Value := FormatDateTime('dd/mm/yyyy', dtpc1.Date);
o

Código:

Query2.Parameters.ParamByName('fecha1').Value := DateToStr(dtpc1.Date);
Saludos,

Gerard.

Kamael 26-11-2009 18:06:52

Muchisimas gracias Gerardus. Sin ti no lo abria conseguido. Ahora funciona todo coreectamente.
Un saludo y repito muchas gracias.


La franja horaria es GMT +2. Ahora son las 22:31:50.

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