Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   problema con consulta sql (https://www.clubdelphi.com/foros/showthread.php?t=93488)

the walrus 16-10-2018 15:48:24

problema con consulta sql
 
hola quiero ejecutar una consulta en ms access desde la vista sql, aqui viene el problema al ejecutar la consulta no me da ningún resultado.
Probé la misma consulta desde otro gestor y funciona espero que me puedan ayudar
Código SQL [-]
SELECT *
FROM tabla
WHERE Fecha >= :MiParametro1
AND Fecha<=:MiParametro2;

avmm2004 16-10-2018 17:11:22

Si los campos que le pasas a miparametro1 y mi parametro2 son de tipo Date debería funcionar. Otra cosa es que el rango este vacío.

Neftali [Germán.Estévez] 16-10-2018 17:12:55

¿Puedes poner el código que estás utilizando desde Delphi?
¿Cómo pasas los parámetros?
¿No estarás haciendo un ExecSQL en lugar de un Open?

the walrus 16-10-2018 18:08:13

Cita:

Empezado por avmm2004 (Mensaje 529005)
Si los campos que le pasas a miparametro1 y mi parametro2 son de tipo Date debería funcionar. Otra cosa es que el rango este vacío.

los parametros que le paso son tipo fecha que serian 01/01/2018 y 31/01/2018






Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 529006)
¿Puedes poner el código que estás utilizanndo desde Delphi?
¿Cómo pasas los parámetros?
¿No estarás haciendo un ExecSQL en lugar de un Open?

lo que intento hacer es pasar la consulta anteriormente comentada a un query
en la parte de los parametros que le quiero pasar son 01/01/2018 y 31/01/2018
lo que busco hacer es borrar registros que cumplan con un rango de fecha este es mi codigo
Código Delphi [-]
begin
query.close;
query.sql.clear;
query.SQL.Add('delete from tabla where (fecha BETWEEN :fecha1 AND :fecha2 ');
query.Parameters.ParamByName('fecha1').DataType := ftdate;
query.Parameters.ParamByName('fecha1').Value := Datetimepicker1.Date;
query.Parameters.ParamByName('fecha2').DataType := ftdate;
query.Parameters.ParamByName('fecha2').Value := Datetimepicker1.Date;
query.open;
query.ExecSQL;
end;

Casimiro Notevi 16-10-2018 18:27:46

Código:

query.open;  //  <---- Eso no vale.
query.ExecSQL;

Open cuando es select

Neftali [Germán.Estévez] 16-10-2018 19:10:54

No puedes poner Open y ExecSQL a la vez, no tiene sentido.

OPEN: Cuando quieres recuperar datos de una consulta (SELECT).
EXECSQL: cuando quieres ejecutar un comando (INSERT/DELETE/UPDATE).

En este caso y al ponerlos los 2, seguramente te está cogiendo el último (EXECSQL) y por eso no te trae registros.

the walrus 16-10-2018 20:24:43

si, ya borre el open pero todavía tengo el problema de la consulta

Casimiro Notevi 16-10-2018 20:41:10

Pues puede ser que no tengas registros con esos parámetros.

the walrus 16-10-2018 20:51:55

es imposible es mas te comento que probé con otras fechas

Casimiro Notevi 16-10-2018 21:04:53

Hay básicamente 3 condiciones, que la consulta sea correcta, que los parámetros sean correctos, y que existan registros que cumplan con esos parámetros.
Si se cumplen las 3 condiciones, debe retornar esos datos.
Si no devuelve nada es que falla una de las 3. No hay más.

Neftali [Germán.Estévez] 17-10-2018 10:03:02

Cita:

Empezado por the walrus (Mensaje 529024)
si, ya borre el open pero todavía tengo el problema de la consulta


No entiendo...
Primero has puesto un SELECT. Para eso tienes que usar el OPEN.
Luego has puesto un DELETE, para esa debes utilizar el EXECSQL.

Ahora no entiendo lo que no te está funcionando.

the walrus 17-10-2018 19:37:50

sigue sin funcionar

Código Delphi [-]
begin
query.Close;
query.SQL.Clear;
query.SQL.Text:=(' delete  from tabla where fecha BETWEEN :fecha1 AND :fecha2 ');
query.Parameters.ParamByName('fecha1').DataType := ftdate;
query.Parameters.ParamByName('fecha1').Value := Datetimepicker1.Date;
queryParameters.ParamByName('fecha2').DataType := ftdate;
query.Parameters.ParamByName('fecha2').Value := Datetimepicker1.Date;
query.ExecSQL;
end;

Casimiro Notevi 17-10-2018 20:18:16

Cita:

Empezado por the walrus (Mensaje 529043)
sigue sin funcionar

¿Crees que con esa información tan escueta podemos ayudarte?
Es como si te digo: "la moto sigue sin andar".
¿Qué me contestarías?

Neftali [Germán.Estévez] 18-10-2018 08:51:14

Cita:

Empezado por the walrus (Mensaje 529043)
sigue sin funcionar

¿Error?
¿No borra nada?
¿Borra lo que no debería?
Lo dicho por [Casimiro]...


Estás utilizando en las 2 fechas/parámetros el mismo componente. No se si es correcto.

identsoft 18-10-2018 09:06:35

Por decir algo:
prueba
Código Delphi [-]
query.Parameters.ParamByName('fecha1').Value := Trunc(Datetimepicker1.Date); 
.. 
query.Parameters.ParamByName('fecha2').Value := Trunc(Datetimepicker1.Date);

the walrus 18-10-2018 17:11:59

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 529068)
¿Error?
¿No borra nada?
¿Borra lo que no debería?
Lo dicho por [Casimiro]...


Estás utilizando en las 2 fechas/parámetros el mismo componente. No se si es correcto.

ahora que lo veo es cierto
Cita:

Empezado por identsoft (Mensaje 529069)
Por decir algo:
prueba
Código Delphi [-]
query.Parameters.ParamByName('fecha1').Value := Trunc(Datetimepicker1.Date); 
.. 
query.Parameters.ParamByName('fecha2').Value := Trunc(Datetimepicker1.Date);

ahora si funciono , tengo otro pequeño problema cuando elimino los registros la grilla se queda en blanco pero cuando ejecuto el programa por segunda vez esta todo normal

Casimiro Notevi 18-10-2018 17:26:22

Cita:

Empezado por the walrus (Mensaje 529078)
ahora que lo veo es cierto
ahora si funciono , tengo otro pequeño problema cuando elimino los registros la grilla se queda en blanco pero cuando ejecuto el programa por segunda vez esta todo normal

La otra guía de estilo.

Neftali [Germán.Estévez] 19-10-2018 09:51:23

Cita:

Empezado por the walrus (Mensaje 529078)
elimino los registros la grilla se queda en blanco pero cuando ejecuto el programa por segunda vez esta todo normal


¿Que esté todo normal es bueno, no?
Suscribo lo que ha dicho [Casimiro]

the walrus 19-10-2018 18:15:52

1 Archivos Adjunto(s)
Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 529086)
¿Que esté todo normal es bueno, no?
Suscribo lo que ha dicho [Casimiro]

no me exprese del todo bien
cuando elimino los registros la grilla me queda como esta en la foto, lo que no me muestran son el resto de los registros

Casimiro Notevi 19-10-2018 20:00:34

Que no somos adivinos, que pongas el código.


La franja horaria es GMT +2. Ahora son las 07:10:12.

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