Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   filtrar rango de fechas con dos DateTimePicker (https://www.clubdelphi.com/foros/showthread.php?t=93223)

the walrus 20-06-2018 20:54:33

filtrar rango de fechas con dos DateTimePicker
 
hola estoy intentando filtrar un rango de fechas desde dos DateTimePicker y un botón y el resultado me lo muestre en una grilla.
tengo un pequeño progreso pero me da error
Código Delphi [-]
 query.clear;
              query.SQL.ADD(select * from compañia1 where fechavencimiento1 between : '2018-06-01' and '2018-06-15' order by fechavencimiento1);
              query.parambyname('01-04-2018').AsDateTime := DateTimePicker1.date; 
              query..parambyname('15-04-2018').AsDateTime := DateTimePicker2.date;
              query.open;

en la segunda linea quisiera que se muestre una consulta asi
Código SQL [-]
 select * from compoañia1 where fechavencimiento1 between '2018-06-01' and '2018-06-15' 
union all
select * from compañia2 where fechavencimiento2 between '2018-06-01' and '2018-06-15' 
union all 
select  * from compañia3 where fechavencimiento3 between '2018-06-01' and '2018-06-15' order by fechavencimento3
espero que me puedan ayudar y entender gracias

Luis F. Orjuela 20-06-2018 22:23:06

Bueno, primero que todo, tienes mal creada la instruccion SQL con paso de parámetros.....

Debería ser así:

Código Delphi [-]
              query.clear;
              query.SQL.ADD(select * from compañia1 where fechavencimiento1 between :FECHA_INI and :FECHA_FIN order by fechavencimiento1);
              query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date; 
              query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;
              query.open;

Una vez arregles esto, pues ya tendrás la respuesta para la segunda línea....

the walrus 20-06-2018 22:40:25

disculpa en la parte de fecha_ini tengo que poner la fecha que deseo mostrar o el campo que tengo en mi base de datos

the walrus 20-06-2018 23:26:25

Cita:

Empezado por Luis F. Orjuela (Mensaje 527207)
Bueno, primero que todo, tienes mal creada la instruccion SQL con paso de parámetros.....

Debería ser así:

Código Delphi [-]
              query.clear;
              query.SQL.ADD(select * from compañia1 where fechavencimiento1 between :FECHA_INI and :FECHA_FIN order by fechavencimiento1);
              query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date; 
              query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;
              query.open;

Una vez arregles esto, pues ya tendrás la respuesta para la segunda línea....

me da error
dataset not edit or insert mode

ecfisa 21-06-2018 00:41:51

Hola.
Cita:

Empezado por the walrus (Mensaje 527213)
me da error
dataset not edit or insert mode

Pero ese error no puede ser provocado por el código SQL que te sugirió Luis F. Orjuela, que por otro lado tiene una lógica y sintáxis correcta.

El error que mencionas no se produce cuando ejecutas una consulta SQL, sino cuando actualizas o insertas datos.

Saludos :)

the walrus 21-06-2018 01:39:06

puede solucionar el error anterior, pero ahora me dice que la consulta que le envió como parámetro no funciona

ecfisa 21-06-2018 02:01:44

Hola.

¿ Podrías poner textualmente (copiar/pegar) el mensaje de error que te muestra ?

Saludos :)

the walrus 21-06-2018 02:24:25

Cita:

Empezado por ecfisa (Mensaje 527217)
Hola.

¿ Podrías poner textualmente (copiar/pegar) el mensaje de error que te muestra ?

Saludos :)

toque un poco el código y ahora me dice que el parámetro de la fecha no funciona
este
Código Delphi [-]
 query.ParamByName('01-06-2018').AsDate :=  DateTimePicker1.date;

ecfisa 21-06-2018 03:03:53

Hola de nuevo.

A ver si circunscribimos un poco mas el problema...,
  • ¿ Con que DBMS estas trabajando ?
  • ¿ Mediante que componentes te conectas a la DB desde Delphi ?
  • ¿ Que mensaje de error te muestra ? (textualmente)

Saludos :)

the walrus 21-06-2018 03:27:50

Cita:

Empezado por ecfisa (Mensaje 527221)
Hola de nuevo.

A ver si circunscribimos un poco mas el problema...,
  • ¿ Con que DBMS estas trabajando ?
  • ¿ Mediante que componentes te conectas a la DB desde Delphi ?
  • ¿ Que mensaje de error te muestra ? (textualmente)

Saludos :)

como gestor de base de datos uso MYSQL workwench
los componentes que utilizo es MYDAC y me conecto con el componente TMYconnection
y el error que aparce es este "parametren 01-06-208 not found "

saludos

Casimiro Notevi 21-06-2018 10:20:33

Cita:

Empezado por the walrus (Mensaje 527222)
y el error que aparce es este "parametren 01-06-208 not found "

No es una fecha correcta.

Caminante 21-06-2018 16:29:40

Hola

El compañero the walrus pone este codigo:

Código Delphi [-]
query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date;

El parametro se llama "FECHA_INI"

Pero tu lo pones asi:

Código Delphi [-]
query.ParamByName('01-06-2018').AsDate :=  DateTimePicker1.date;

Porque poner una fecha como el nombre del parametro???

Creo q tienes un problema de concepto ahi.

Veras que analizando detenidamente el codigo q te pusieron lo resuelves

Saludos

the walrus 21-06-2018 18:25:16

cambie los parametros pero ahora me dice que la 'fecha_fin' no funciona





.

Casimiro Notevi 21-06-2018 19:06:57

Difícil ayudarte si no copias y pegas tu código, y das explicaciones claras.

the walrus 21-06-2018 19:14:40

Cita:

Empezado por Casimiro Notevi (Mensaje 527243)
Difícil ayudarte si no copias y pegas tu código, y das explicaciones claras.

Código SQL [-]
 query.SQL.Clear;
query.Close;
query.SQL.add ('select * from compañia  where fechavencimiento1 between  :FECHA_INI and : FECHA_FIN ');
query.query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date; 
query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;
 query.open;

ese es mi codigo, el error me da en la FECHA_FIN

Caminante 21-06-2018 20:54:54

Cita:

Empezado por the walrus (Mensaje 527244)
Código SQL [-] query.SQL.Clear; query.Close; query.SQL.add ('select * from compañia where fechavencimiento1 between :FECHA_INI and : FECHA_FIN '); query.query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date; query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date; query.open;


ese es mi codigo, el error me da en la FECHA_FIN


Podria ser por ese espacio entre los dos puntos y FECHA_FIN?? Solo estoy adivinando, porque no deberia fallar...

the walrus 21-06-2018 23:09:48

Cita:

Empezado por Caminante (Mensaje 527248)
Podria ser por ese espacio entre los dos puntos y FECHA_FIN?? Solo estoy adivinando, porque no deberia fallar...

soluciones ese error pero cuando quiero filtrar una fecha no no se aplica ningún cambio
mi codigo
Código Delphi [-]
   Query1.SQL.Text:= 'Select * from compañia1 where compañia.fechadevencimiento BETWEEN :Fecha1  AND :Fecha2';
   Query1.ParamByName('Fecha1').AsDateTime := DateTimePicker1.Date;
   Query1.ParamByName('Fecha2').AsDateTime := DateTimePicker2.Date;

Casimiro Notevi 21-06-2018 23:35:34

¿Pero eso es un copia-pega del código?

Código Delphi [-]
query.query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date;
query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;

the walrus 21-06-2018 23:51:11

Cita:

Empezado por Casimiro Notevi (Mensaje 527253)
¿Pero eso es un copia-pega del código?

Código Delphi [-]
query.query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date;
query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;

si vuelvo a repetir cuando selecciono una fecha que quiero mostrar los cambios no se aplican.

Casimiro Notevi 21-06-2018 23:52:52

¿Pero eso es un copia-pega del código?
Código Delphi [-]
query.query.parambyname('FECHA_INI').AsDate := DateTimePicker1.date;
query.parambyname('FECHA_FIN').AsDate := DateTimePicker2.date;


La franja horaria es GMT +2. Ahora son las 10:26:09.

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