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.

the walrus 19-10-2018 20:45:04

si eso ya lo se nadie es adivino pero siempre que preguntas respondes con ''soberbia''
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 := Trunc(Datetimepicker1.Date); 
query.Parameters.ParamByName('fecha2').DataType := ftdate;
query.Parameters.ParamByName('fecha2').Value := Trunc(Datetimepicker2.Date); 
query.ExecSQL;
end;

Casimiro Notevi 19-10-2018 21:06:35

Cita:

Empezado por the walrus (Mensaje 529113)
si eso ya lo se nadie es adivino pero siempre que preguntas respondes con ''soberbia''

¿Soberbia? soy un poco "borde", pero nunca me han dicho que sea soberbio.
El problema es que no das ninguna información, por lo que podemos estar intercambiando mensajes horas o días, hasta descubrir lo que realmente quieres decir.
Los otros compañeros que te han contestado han dicho lo mismo:
Neftali (3 mensajes):
Cita:

No entiendo.
Cita:

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

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

Cita:

Por decir algo:
¿Qué dice la guía de estilo?
Cita:

Formular las preguntas con el mayor detalle posible evitando todo tipo de ambigüedad, facilita el análisis del problema planteado y aumenta la probabilidad de obtener una solución a la consulta realizada.

Si tu dbGrid queda como está es porque desactivas su DataSource. Por eso te digo que pongas el código que usas. Porque ese que has puesto es donde borras unos registros, y "como no somos adivinos", necesitamos ver ese código para poder ayudarte.


La otra opción es dar palos de ciegos y perder el tiempo mensaje va y mensaje viene hasta acertar por casualidad o por eliminación.
Como ves, no es soberbia, es intentar que des información para poder ayudarte, y no perder el tiempo inutilmente.

movorack 19-10-2018 22:02:27

jajaja Saliste regañado

Casimiro Notevi 19-10-2018 22:11:29

Cita:

Empezado por movorack (Mensaje 529119)
jajaja Saliste regañado

:)
Es que me gusta ayudar, y a veces resulta casi imposible porque falta información.


La franja horaria es GMT +2. Ahora son las 01:45:35.

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