Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Question Consulta between con datetimepicker

Hola, estoy haciendo una consulta con un query en delphi 5 el problema es que estoy tomando valores de 2 datetimepicker y cuando lo hago no me devuelve ningún valor si las 2 fechas son iguales me devuelve un dato, pero yo quiero que me devuelva un rango (todas las tuplas entre las dos fechas que le puse), aquí esta el código:
query1.SQL.clear;
query1.sql.add('Select Fecha_exp, Fecha_venc, Nombre_cliente, Numero_saldo,');
query1.sql.add('Placas from Fechas where Fecha_exp between aram0 and aram1');
Query1.Params[0].AsDate:= datetimepicker1.date;
Query1.Params[1].AsDate:= datetimepicker1.date;
query1.open;
no hace lo que debería si selecciono 11/11/2004 y 18/11/2004 no me devuelve los datos aunque tengo varias fechas 13/11/2004 o entre el rango de las 2 primeras, ahhh pero si el primer date time picker es igual a la fecha que busco me devuelve un campo si alguién pudiera ayudarme se lo agradezco de antemano.
Saludos

Encontre esto en los foros en respuesta a otro usuario con una duda similar

Cita:
Empezado por marcoszorrilla
La solución ya te la ha dado Rubén, pero quiero hacer una observación, si tienes en la tabla fechas de años distintos, no obtendrás el mes del año actual, sino todos los meses 8 por ejemplo que existan en la tabla, si ocurre este caso que estoy citando, tendrías que filtrar entre el 1 del mes solicitado y el final del mes del mismo, que solamente tendrías que hallarlo, entonces quedaría el filtro de las fechas:
Where MiFecha Between xxx And xxx.


Un Saludo.
Responder Con Cita
  #2  
Antiguo 14-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No comentas el tipo de tablas ni el SGBBDD, así a voz de pronto te diría que cambies los parámetros a Tipo String, y al tiempo de dar las fechas a la consulta:

Código Delphi [-]
   FormatDateTime('mm/dd/yyyy', datetimepicker1.date);

Saludos
Responder Con Cita
  #3  
Antiguo 14-11-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
En algunos casos es necesario esto otro:
Código Delphi [-]
QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker1.date));

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 15-11-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Unhappy No se pudo

Gracias por su pronta respuesta, la base de datos esta hecha en paradox uso un alias llamado Aserradero, un componente query un dbgrid y la fecha no es la llave primaria, ya puse las dos opciones que me indican pero no funciona manda un mensaje de error "EDbEngineError with message type msmatch in expresion" y no me arroja ningún resultado con los dos métodos que me dieron. Les agradezco por sus respuestas y les agradecería si me pudieran ayudar o dar referencia ya que me he pelado ya 2 días con esa consulta sin avance alguno.

Saludos

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin


query1.SQL.clear;
query1.sql.add('Select Fecha_exp, Fecha_venc, Nombre_cliente, Numero_saldo,');
query1.sql.add('Placas from  Fechas where Fecha_exp between aram0 and aram1');

Query1.Params[0].Asstring:= QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker1.date));
Query1.Params[1].Asstring:= QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker2.date));
query1.open;

end;

Última edición por Dantael fecha: 15-11-2004 a las 06:37:41.
Responder Con Cita
  #5  
Antiguo 15-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues yo no veo error en ese código.

Lo único que queda es revisar los parametros del query, que DataType = ftString y ParamType = ptInput.

Espero que haya suerte.
Responder Con Cita
  #6  
Antiguo 15-11-2004
frudolph frudolph is offline
Miembro
 
Registrado: oct 2004
Posts: 40
Poder: 0
frudolph Va por buen camino
Observá que la línea:

--> Query1.Params[1].AsDate:= datetimepicker1.date;

Debería decir:

--> Query1.Params[1].AsDate:= datetimepicker2.date;

Sino, estás pasándole la misma fecha a ambos parámetros, y de ahí el error.
Responder Con Cita
  #7  
Antiguo 15-11-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Unhappy y sigue sin quedar!

Cita:
Empezado por Lepe
Pues yo no veo error en ese código.

Lo único que queda es revisar los parametros del query, que DataType = ftString y ParamType = ptInput.

Espero que haya suerte.
Hola y como hago para checar eso? lo que hice fue lo siguiente
Código Delphi [-]
Query1.Params[0].value:= QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker1.date));
Query1.Params[1].value:= QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker2.date));
Pero me sigue mandando el error de type mismatch
Muchisimas gracias por su ayuda!
Responder Con Cita
  #8  
Antiguo 15-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A mi me parece que se están complicando la vida. No hace falta ni el FormatDateTime ni el QuotedStr por la sencilla razón de que los parámetros se están pasando con AsDate. El método AsDate hará la traducción que sea necesaria.

Dicho de otra forma, tal como estaba originalmente:

Cita:
Empezado por Dantael
Código Delphi [-]
Query1.Params[0].AsDate:= datetimepicker1.date;
Query1.Params[1].AsDate:= datetimepicker1.date;
estaba bien.

El único problema aquí es el que ya mencionó frudolph, estás usando el mismo DateTimePicker en ambos parámetros.

// Saludos
Responder Con Cita
  #9  
Antiguo 15-11-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Así es

Como veras en los ejemplos anteriores corregi el problema de los datetimepicker1 y 2 pero aun así no hace la busqueda con el between no lme devuelve ningún campo.

Última edición por Dantael fecha: 15-11-2004 a las 21:36:11.
Responder Con Cita
  #10  
Antiguo 15-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Dantael
Como veras en los ejemplos anteriores correji el problema de los datetimepicker1 y 2
Sí vi que lo corregiste pero con el uso de QuotedStr y/o FormatDateTime, que, como ya viste, no te sirven. ¿Lo has hecho con tu código original?

Por otra parte, ¿has probado hacer una prueba usando valores específicos en lugar de parámetros? De ser así, ¿te devuelve los resultados esperados?

Si te sigue fallando podrías preparar una muestra de tus datos y mandarla al foro como attachment (creo que el límite son 16kb). La muestra debe contener datos con los que se reproduzca la situación que estás enfrentando.

// Saludos
Responder Con Cita
  #11  
Antiguo 15-11-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Lightbulb Por fin

Muchas Gracias a todos por su ayuda encontre la solución lo hace a la perfección de esta forma:

Código Delphi [-]
query1.ParamByName('param0').Asdate := datetimepicker1.date;
query1.ParamByName('param1').Asdate := datetimepicker2.date;

como lo dice la ayuda de delphi utiliza parambyname para usar información en especifíco de un parámetro especifíco basado en su nombre.

Última edición por Dantael fecha: 15-11-2004 a las 21:38:10.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:21:44.


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
Copyright 1996-2007 Club Delphi