Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con el Reporte (https://www.clubdelphi.com/foros/showthread.php?t=54531)

loquillo3 22-03-2008 01:20:15

Problema con el Reporte
 
Buenas,

Tengo un ligero problema con un reporte, lo que pasa es que lo quiero hacer buscando entre dos fecha he intentado con varios codigos pero ninguno me han funcionado. Acontinuacion les dejare los codigos que he utilizado.

En este utilizo un AdoQuery y 2 DatetimePicker. Este no tira los datos.

Código Delphi [-]
Qusuarios.Close;
Qusuarios.SQL.clear;
Qusuarios.SQL.Add('SELECT * FROM tabla1 WHERE fecha between '+ (DateToStr(DTP1.Date)) + ' AND '  + (DateToStr(DTP2.Date)));
 Qusuarios.Open;
 QRVentasPorFecha.Preview;


En este otro utilizo 2 MaskEdit.


Código Delphi [-]
 
Qusuarios.Close;
Qusuarios.SQL.clear;
Qusuarios.SQL.Add('SELECT * FROM tabla1 WHERE fecha between '+ (DateToStr(StrToDate(MaskEdit1.Text))) + ' AND '  + (DateToStr(StrToDate(MaskEdit2.Text))));
if (MaskEdit1.Text = '') or (MaskEdit2.Text = '')  then
  begin
   Application.MessageBox('Complete los campos ','Aviso ',MB_OK + MB_ICONerror);
  end
else
 begin
   Qusuarios.Open;
   QuickReport.Preview;
    end;


Y he tratado con otros mas pero no lo he conseguido. Desearia una ayudita en este problema.

Saludos

eduarcol 22-03-2008 01:45:23

porq no pruebas con parametros:

Código Delphi [-]
Qusuarios.Close;
Qusuarios.SQL.clear;
Qusuarios.SQL.Add('SELECT * FROM tabla1 WHERE fecha between :fecha1 AND :fecha2';

Qusuarios.Params[0].value := DTP1.Date;
Qusuarios.Params[1].value := DTP2.Date;

 Qusuarios.Open;
 QRVentasPorFecha.Preview;

loquillo3 22-03-2008 01:54:09

saludo, eduarcol

Cuando pones :fecha1 AND :fecha2 a que te refieres.

eduarcol 22-03-2008 03:36:36

Eso es lo que se llama parametros, al momento de ejecutar la consulta se sustituiran por los valores ingresados en las lineas

Código Delphi [-]
Qusuarios.Params[0].value := DTP1.Date;
Qusuarios.Params[1].value := DTP2.Date;

Donde Fecha1 es el parametro 0 y fecha2 es el parametro 1

loquillo3 22-03-2008 15:34:00

Yo lo hice como me dijiste pero me da un error Params. Yo lo modifique de esta forma.

Código Delphi [-]
 
Qusuarios.Close;
Qusuarios.SQL.clear;
Qusuarios.SQL.Add('WHERE fecha between >= :Fecha1 AND Fecha <= :Fecha2;
Qusuarios.Parameters[0].value := DateToStr(DTP1.Date);
Qusuarios.Parameters[1].value := DateToStr(DTP2.Date);
 Qusuarios.Open;
 QRVentasPorFecha.Preview;

y me da el siguiente errol:

[Error]Unit1.pas(35): Unterminated string
[Error]Unit1.pas(36): ')' expected but identifier 'Qusuarios' found
[Fatal Error]Project1.dpr: could not compile used unit 'Unit1.pas'

eduarcol 22-03-2008 15:37:17

te falto cerrar la linea de la consulta, y es el error que te esta dando:
Código Delphi [-]
Qusuarios.Close;
Qusuarios.SQL.clear;
Qusuarios.SQL.Add('WHERE fecha between >= :Fecha1 AND Fecha <= :Fecha2');
Qusuarios.Parameters[0].value := DateToStr(DTP1.Date);
Qusuarios.Parameters[1].value := DateToStr(DTP2.Date);
 Qusuarios.Open;
 QRVentasPorFecha.Preview;

loquillo3 22-03-2008 16:19:17

eduarcol tu me vas a excusar las molestias.

Pero ahora me da el siguiente errol.

Error de sintaxis (falta operador) en la expresion de consulta 'fecha between>=? and fecha<=?"

Mi pregunta, cual es el operador que falta aqui, si utilizo el operador AND.

eduarcol 22-03-2008 16:22:24

a ver, no me habia fijado que esta el between, mejor hagamos asi:

Código Delphi [-]
Qusuarios.SQL.Add('SELECT * FROM tabla1 WHERE fecha between :fecha1 AND :fecha2');

loquillo3 22-03-2008 16:36:41

Lo modifique de esta forma:

Código Delphi [-]
 
QRVentasPorFecha.Qusuarios.Close;
QRVentasPorFecha.Qusuarios.SQL.clear;
QRVentasPorFecha.Qusuarios.SQL.Add('select * from tabla1 WHERE fecha between  fecha >=:Fecha1 AND Fecha  <=:Fecha2');
QRVentasPorFecha.Qusuarios.Parameters[0].value := DateToStr(DTP1.Date);
QRVentasPorFecha.Qusuarios.Parameters[1].value := DateToStr(DTP2.Date);
QRVentasPorFecha.Qusuarios.Open;
QRVentasPorFecha.Preview;

Pero no lanza los datos.

eduarcol 22-03-2008 16:40:31

estas haciendo un mal filtrado, o lo dejas con el between o con el rango, no los juntes. si quieres con el rango puedes hacer esto:

Código Delphi [-]
QRVentasPorFecha.Qusuarios.SQL.Add('select * from tabla1 WHERE fecha >=:Fecha1 AND Fecha  <=:Fecha2');

loquillo3 22-03-2008 16:55:52

:)Muchas gracias:)
eduarcol, sin tu ayuda no lo hubiera podido lograr.
Te lo agradesco de corazon, me sacaste de un aprieto

Este es el codigo que utilise:

Código Delphi [-]
 
QRVentasPorFecha.Qusuarios.Close;
QRVentasPorFecha.Qusuarios.SQL.clear;
QRVentasPorFecha.Qusuarios.SQL.Add('select * from tabla1 WHERE fecha between  :Fecha1 AND :Fecha2');
QRVentasPorFecha.Qusuarios.Parameters[0].value := DateToStr(DTP1.Date);
QRVentasPorFecha.Qusuarios.Parameters[1].value := DateToStr(DTP2.Date);
QRVentasPorFecha.Qusuarios.Open;
QRVentasPorFecha.Preview;

eduarcol 22-03-2008 17:06:43

Me alegra haber ayudado


La franja horaria es GMT +2. Ahora son las 04:57:07.

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