Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Comparar fechas en Access (https://www.clubdelphi.com/foros/showthread.php?t=54338)

janexa 14-03-2008 20:40:08

Comparar fechas en Access
 
hola tengo una aplicacion hecha en delphi 7 y uso una BDatos en ACcEss 2003 estoy haciendo una consulta Código Delphi [-]
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra=a2.folio_compra and a2.cve_art=c.idarticulo and and a.fecha>=:param1 and
a.fecha<dateadd(dd,1,:param1)');
datamodule1.QC.SQL.Add('order by fecha');
datamodule1.QC.ParamByName('param1').AsDatetime:=Picker1.Datetime;
datamodule1.QC.ExecSQL;





Me marca un error del Access que le falta parametros!!!!!!
HElp Me PLease

Caral 14-03-2008 20:58:31

Hola
No lo entiendo bien, pero por lo menos hay un error:
Código Delphi [-]
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra=a2.folio_compra and a2.cve_art=c.idarticulo and and a.fecha >= Param1 and
a.fecha <  dateadd(dd,1, Param1)');
datamodule1.QC.SQL.Add('order by fecha');
datamodule1.QC.ParamByName('Param1').AsDatetime:=Picker1.Datetime;
datamodule1.QC.ExecSQL;
Saludos

janexa 14-03-2008 21:46:00

Asi:
 
Ke no entiendes???

janexa 14-03-2008 21:46:43

Asi:
 
Código Delphi [-]
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra=a2.folio_compra and ');
datamodule1.QC.SQL.Add('a2.cve_art=c.idarticulo and and a.fecha>=:Xfecha ');
datamodule1.QC.SQL.Add(' and (a.fecha);
datamodule1.QC.SQL.Add('order by fecha ');
datamodule1.QC.ParamByName('Xfecha').AsDatetime:=Picker1.Datetime;
datamodule1.QC.ExecSQL;

Caral 14-03-2008 22:07:12

Hola
Pregunto:
Con que componente enlazas con access?
Bde , ado , etc.
Saludos

janexa 15-03-2008 17:00:28

uso BDE y quiero que el resultado de la consulta en un quickreport o dbgrig no se si sea la sintaxis para mandar la fecha en access
Código Delphi [-]
procedure TExistencias.GenerarClick(Sender: TObject);
var fecha,fecha2:variant;
begin
fecha:=picker1.DateTime;
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra=a2.folio_compra and a2.cve_art=c.idarticulo and a.fecha=:valor and a.fecha); ---->NO SE SI MANEJE ESO EN ACCESS
datamodule1.QC.ParamByName('valor').Value:=fecha;  datamodule1.QC.ExecSQL;
suiDBGrid2.DataSource:=datamodule1.JD2;
end;

Caral 15-03-2008 17:52:25

Hola
No se que pretendes hacer, la verdad sigo sin entender.
Para empezar te aconsejo que cambies de bde a ado.
Veamos, se supone que estas haciendo una comparacion de fechas, el campo debe ser, supongo de tipo datetime en la tabla.
Entonces podriamos colocar dos datetimepicker en el form y hacer esto:
Con bde:
Código Delphi [-]
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra = a2.folio_compra and a2.cve_art = c.idarticulo and and a.fecha >= :Fecha1 and
a.fecha <=  :Fecha2');
datamodule1.QC.SQL.Add('order by fecha');
datamodule1.QC.ParamByName('Fecha1').Value:=Picker1.Datetime;
datamodule1.QC.ParamByName('Fecha2').Value:=Picker2.Datetime;
datamodule1.QC.Open;
Con ado:
Código Delphi [-]
datamodule1.QC.Parameters.ParamByName('Fecha1').Value:=Picker1.Datetime;
datamodule1.QC.Parameters.ParamByName('Fecha2').Value:=Picker2.Datetime;
o con cualquiera:
Código Delphi [-]
datamodule1.QC.Parameters[0].Value:=Picker1.Datetime;
datamodule1.QC.Parameters[1].Value:=Picker2.Datetime;
Saludos

janexa 18-03-2008 16:20:25

no funciona
 
hola graxs por la respuesta pero aun asi puse ese codigo y no funciona, solo quiero que cuando el usuario escoga la misma fecha en fecha1 y fecha2 muestre solo la de ese dia ya ke si uso el between NO sale nada en el reporte ni en el dbgrid.
Código Delphi [-]
 
datamodule1.QC.Close;
datamodule1.QC.SQL.Clear;
datamodule1.QC.SQL.Add('select a.*,c.nombre as Nombre_Articulo, a2.compra_lts ');
datamodule1.QC.SQL.Add('from doctos_compras a, partidas_compras a2, articulos c ');
datamodule1.QC.SQL.Add('where a.folio_compra=a2.folio_compra and a2.cve_art=c.idarticulo and a.fecha between :param1 and :param2');
datamodule1.QC.ParamByName('param1').Value:=fecha;
datamodule1.QC.ParamByName('param2').Value:=fecha2;
 datamodule1.QC.open;

coso 23-05-2008 17:39:46

Tuve cierto problema con BDE y Access y un driver concreto, segun el formato de las fechas ... me parseaba el sql pero no funcionaba a veces. Dejo mi solución por si alguien tiene ese problema otra vez.

Código Delphi [-]
fmt := '"#"mm"/"dd"/"yyyy"#"';
cadena_a_incluir_en_sql := FormatDateTime(fmt, strtodate(date))

juriberuiz 22-04-2009 17:41:09

Carnal, gracias, lo que pusiste en el post 4281 me funciono, gracias

Código Delphi [-]
        MdlDatos.QPedidos.SQL.Clear;
        MdlDatos.QPedidos.SQL.Add('select * from pedidos');
        MdlDatos.QPedidos.SQL.Add('where fechapedido>=:fecha1 and fechapedido<=:fecha2');
        MdlDatos.QPedidos.Parameters.ParamByName('fecha1').Value:=DateTimePicker1.DateTime;
        MdlDatos.QPedidos.Parameters.ParamByName('fecha2').Value:=DateTimePicker2.DateTime;

        if RadioGroup1.ItemIndex = 0 then
        begin
                MdlDatos.QPedidos.SQL.Add('and status=''Pendiente''');
        end
        else if RadioGroup1.ItemIndex = 1 then
        begin
                MdlDatos.QPedidos.SQL.Add('and status=''Entregado''');
        end;
        MdlDatos.QPedidos.Active:=True;


La franja horaria es GMT +2. Ahora son las 20:40:01.

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