Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Yo dispararía con posta...

Quiero decir, que puedes 'traducir' la query a valores entre fechas, y pasar de meses y años.

Código:
//Año=2000 -> 
SQL.Add('Select * from tabla');
SQL.Add('where fecha_factura >= '+ quotedstr(01/01/2000)+' and fecha_factura<= ' +Quotedstr(31/12/2000);

//Año = 2000 y Mes=02
SQL.Add('Select * from tabla');
SQL.Add('where fecha_factura >= '+ quotedstr(01/02/2000)+' and fecha_factura<= ' +Quotedstr(29/02/2000)
Ten en cuenta que tendrás que 'manipular' mínimamente la generación de fechas para ajustarlo, pero esto funciona perfectamente.

Otra solución es pasar de años meses y pirulas , y que se introduzcan los límites en formato fecha. Desde fecha hasta fecha. Que quieres un año entero, desde el 1 de Enero al 31 de Diciembre. Que quieres un mes, desde el 1 del mes al último día del mes. Que el usuario haga algo demonios, que no se limite a quejarse únicamente.

Por cierto, si cada vez generas el código de la query ¿ para qué utilizas parámetros ? Lo lógico es que dejes la query parametrizada y sólo cambies el valor de los susodichos interfectos, es decir, los parámetros.

Espero no haberte liado mucho y que te sirva de ayuda

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #2  
Antiguo 25-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola.

Lo propuesto por fjcg02 también es válido, pero acotaría dos cosas.
  • Si vas a comparar por un rango de fechas, es mejor que uses el operador between y no el mayor que y menor que para indicar el rango. Algunos motores optimizarán mejor el query al seguir esta recomendación.
  • Seguí usando parámetros. Eso te dará mucha independencia del motor de base de datos y su configuración, pues hay motores que reconocerán la cadena de fecha siempre que esté en el formato que reconozcan o para el que esten configurado, y esto puede ocasionarte problemas. Al utilizar parámetros, delegas la responsabilidad a ADO la responsabilidad de "acordar" el formato de fecha con el cliente de la BD. Además, en ciertos motores (como oracle) aprovechas las prestaciones de cache de sentencias, ahorrando tiempo al no tener que reanalizarla cuando la ejecutas de nuevo
  • Al asignar la sentencia SQL en tiempo de ejecución, asumo que es una sentencia genérica que usas para diferentes consultas. Si no es asi, como ya dijo fjcg02, basta con que asignes valor a los parámetros.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 25-06-2004
carlosmoralesm carlosmoralesm is offline
Miembro
 
Registrado: feb 2004
Posts: 94
Poder: 23
carlosmoralesm Va por buen camino
Hola a todos

yo he usado este codigo en el query

SELECT *
FROM Log
WHERE Fecha BETWEEN :Fechai AND :Fechaf

y en delphi

qrylog.Parameters.ParamByName('fechai').Value:=datetostr(fechailog.Date)+' '+horailog.Text;
qrylog.Parameters.ParamByName('fechaf').Value:=datetostr(fechaflog.Date)+' '+horaflog.Text;

y me ha funcionado muy bien espero te sirva de algo
probado con delphi 7 y msacces

las fechas vienen de un Datapicker y la hora de un edit
los parametros estan como Datetime

y funciona muy bien
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 06:11:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi