Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Exclamation Consulta SQL por Mes y Año

Salu2 amigos foristas

necesito realizar de una u otra forma una consulta sql donde el usuario pueda especificar el mes y año que quiere obtener los resultados, los resultados deben salir en un quickreport...

Tengo un datatimepicker donde aparecen los meses ej. Enero, Febrero

Tengo un Edit donde sale el numero de mes marcado en el datatimepicker
ejemplo: 01...12

tengo el quickreport armado con 1 Query direccionado a la tabla costosygastos

en el formulario donde selecciono el mes y escribo el año hay un boton que tiene este codigo:

Código Delphi [-]
with Form45.Query1 do begin
   Close;
   SQL.Clear;
   SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber from costosygastos.db where fecha >= "01/"+QuotedStr(edMes.Text)+"/"+QuotedStr(edAno.Text)+"';
   Open;
end;
form45.QuickRep1.Preview;

pero al presionar el boton me sale un error que dice lo siguiente:

"Project Project1.eae raised exception class EDBE EngineError with message 'Unexpected end of command. Token:"
Line Number: 1'. Process stopped. Use Step or Run to continue.

gracias adelantadas por su ayuda y si tienen alguna otra forma de hacerlo que funcione como deseo, tambien sirve
__________________
Las cosas o son, o no son...
Responder Con Cita
  #2  
Antiguo 27-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Código Delphi [-]
SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber from costosygastos.db where fecha >= "01/"'+
            QuotedStr(edMes.Text)+'"/"'+QuotedStr(edAno.Text);

Aunque yo lo haría así

Código Delphi [-]
SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber from costosygastos.db where fecha >= '+
            QuotedStr('01/'+edMes.Text+'/'+edAno.Text);

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Gracias Egostar de la segunda forma si me funcionó[IMG]file:///C:/Users/Rey/AppData/Local/Temp/moz-screenshot.jpg[/IMG]
__________________
Las cosas o son, o no son...
Responder Con Cita
  #4  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Código Delphi [-]SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber from costosygastos.db where fecha >= "01/"'+ QuotedStr(edMes.Text)+'"/"'+QuotedStr(edAno.Text);


Aunque yo lo haría así

Código Delphi [-]SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber from costosygastos.db where fecha >= '+ QuotedStr('01/'+edMes.Text+'/'+edAno.Text);


Salud OS

oye egostar pero el codigo que me diste sirve pero solo para buscar los 1 del mes que seleccione como seria para buscar en todo el mes?
__________________
Las cosas o son, o no son...
Responder Con Cita
  #5  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por lKinGl Ver Mensaje
Gracias Egostar de la segunda forma si me funcionó[IMG]file:///C:/Users/Rey/AppData/Local/Temp/moz-screenshot.jpg[/IMG]
lkinGl,
Si deseas mostrarnos una imagen debes subirla a un sitio que ofrezca el "alojamiento" de imágenes, como lo es ImageShack. Te registras, subes la imagen y luego la seleccionas y presionas en forum codes o algo así (no tengo abierto ImageShack en estos momentos). Te mostrará un cuadro de diálogo en donde estará el Code BB para que después lo pegues aquí.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
lkinGl,
Si deseas mostrarnos una imagen debes subirla a un sitio que ofrezca el "alojamiento" de imágenes, como lo es ImageShack. Te registras, subes la imagen y luego la seleccionas y presionas en forum codes o algo así (no tengo abierto ImageShack en estos momentos). Te mostrará un cuadro de diálogo en donde estará el Code BB para que después lo pegues aquí.

Saludos,
disculpa pero no queria poster imagenes, es que tenia esa url copiada y sin querer preione ctrl+v
__________________
Las cosas o son, o no son...
Responder Con Cita
  #7  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por lKinGl Ver Mensaje
oye egostar pero el codigo que me diste sirve pero solo para buscar los 1 del mes que seleccione como seria para buscar en todo el mes?
Disculpa lKinGl pero la consulta que muestra Egostar dice algo así:

"Traeme todos los costos y gastos mayores o iguales a la fecha 01/Mes/Año" Donde Mes y Año son los dos "parámetros" que le indicas a la consulta.

¿Seguro que te devuelve solo las de fechas correspondiente al primer día del més?

Habría que ver...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Disculpa lKinGl pero la consulta que muestra Egostar dice algo así:

"Traeme todos los costos y gastos mayores o iguales a la fecha 01/Mes/Año" Donde Mes y Año son los dos "parámetros" que le indicas a la consulta.

¿Seguro que te devuelve solo las de fechas correspondiente al primer día del més?

Habría que ver...

Saludos,

ponga el mes que ponga me saca el registro que tengo en la tabla

que por cierto la fecha del registro que tengo para la prueba es de


10/01/2008

si pongo cualquier mes igual me muestra el registro

salu2
__________________
Las cosas o son, o no son...
Responder Con Cita
  #9  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
pero caundo cambio de año 2008 no me muestra el registro

eso quiere decir que me muestra todos los registros de 2008
__________________
Las cosas o son, o no son...
Responder Con Cita
  #10  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Pues la verdad no entiendo.
No veo error en la consulta.

Si tu le pides que muestre las fechas mayores o iguales a 01/05/2008 (por poner un ejemplo) y en tu base de datos existen registros con las fechas:

01/04/2008
17/12/2008
01/05/2008
10/06/2007

Claramente debería mostrar sólo dos:
17/12/2008
01/05/2008

Tal vez esté digo una tontera pero... ¿te aseguraste de que el formato que guarda en la base de datos es dd/mm/aaaa y no mm/dd/aaaa?

La verdad es que me resulta raro de que una consulta tan elemental falle.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Pues la verdad no entiendo.
No veo error en la consulta.

Si tu le pides que muestre las fechas mayores o iguales a 01/05/2008 (por poner un ejemplo) y en tu base de datos existen registros con las fechas:

01/04/2008
17/12/2008
01/05/2008
10/06/2007

Claramente debería mostrar sólo dos:
17/12/2008
01/05/2008

Tal vez esté digo una tontera pero... ¿te aseguraste de que el formato que guarda en la base de datos es dd/mm/aaaa y no mm/dd/aaaa?

La verdad es que me resulta raro de que una consulta tan elemental falle.
Saludos,
si men estoy seguro que en la bd se guarda dd/mm/yyyy

pero yo no quiero que me muestre las fechas mayores o iguales a..

yo quiero que me muestre los registros de ese mes y de ese año ejemplo

los registros de Enero 2008
__________________
Las cosas o son, o no son...
Responder Con Cita
  #12  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿Qué motor estás empleando?
Dependiendo del motor que uses, se puede emplear un CAST , un CONVERT, EXTRACT. Cada motor ofrece distintos medios para convertir o extraer el mes, año, dia...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #13  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
¿Qué motor estás empleando?
Dependiendo del motor que uses, se puede emplear un CAST , un CONVERT, EXTRACT. Cada motor ofrece distintos medios para convertir o extraer el mes, año, dia...

Saludos,
uso paradox BDE delphius
__________________
Las cosas o son, o no son...
Responder Con Cita
  #14  
Antiguo 27-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola lking, puedes probar con Extract.

Código Delphi [-]
SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+
             'from costosygastos.db '+
             'where Extract(month from fecha) = '+MonthOf(DateTimePicker.Date)+
             ' and Extract(year from fecha) = '+YearOf(DateTimePicker.Date);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #15  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Ummm, sobre Paradox digamos que estoy cero a la izquierda.
Pero si no estoy muy errado, creo (digo creo, no estoy totalmente seguro) que la SQL que buscas debe ser algo así:

Código SQL [-]
SELECT tus_campos from tu_tabla
WHERE (MONTH(Fecha) = tu_mes) AND (YEAR(Fecha) = tu_año)

MONTH y YEAR son dos funciones que como es de esperar cada una extrae el mes y el año de un campo DATE.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 27-10-2008 a las 04:49:01. Razón: ¡Me olvide del FROM!
Responder Con Cita
  #16  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola lking, puedes probar con Extract.

Código Delphi [-]SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+ 'from costosygastos.db '+ 'where Extract(month from fecha) = '+MonthOf(DateTimePicker.Date)+ ' and Extract(year from fecha) = '+YearOf(DateTimePicker.Date);


Saluditos
me sale un error que dice incompatible types con string and word y otro con string and integer
__________________
Las cosas o son, o no son...
Responder Con Cita
  #17  
Antiguo 27-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por lKinGl Ver Mensaje
me sale un error que dice incompatible types con string and word y otro con string and integer
Tienes que convertir a string lo que te devuelve las funciones de YearOf y MonthOf.

Código Delphi [-]
SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+
             'from costosygastos.db '+
             'where Extract(month from fecha) = '+IntToStr(MonthOf(DateTimePicker.Date))+
             ' and Extract(year from fecha) = '+IntToStr(YearOf(DateTimePicker.Date));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #18  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Ummm, sobre Paradox digamos que estoy cero a la izquierda.
Pero si no estoy muy errado, creo (digo creo, no estoy totalmente seguro) que la SQL que buscas debe ser algo así:

Código SQL [-]SELECT tus_campos from tu_tabla WHERE (MONTH(Fecha) = tu_mes) AND (YEAR(Fecha) = tu_año)


MONTH y YEAR son dos funciones que como es de esperar cada una extrae el mes y el año de un campo DATE.

Saludos,
tambien me da un error Token Fecha algo asi
__________________
Las cosas o son, o no son...
Responder Con Cita
  #19  
Antiguo 27-10-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Tienes que convertir a string lo que te devuelve las funciones de YearOf y MonthOf.

Código Delphi [-]SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+ 'from costosygastos.db '+ 'where Extract(month from fecha) = '+IntToStr(MonthOf(DateTimePicker.Date))+ ' and Extract(year from fecha) = '+IntToStr(YearOf(DateTimePicker.Date));


Saluditos
asi si me sirve caro, pero con un datatime picker que muestra dias meses años, hay forma de que este datatime picker me muestre solo mes y año?

o con 2 combobox 1 que muestre los meses y otro con los años

combobox 1 con formato 99 y el combobox2 con formato 9999

¿se puede?

gracias adelantadas
__________________
Las cosas o son, o no son...
Responder Con Cita
  #20  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Bueno lKinGl, he aclarado que no se de Paradox, yo al menos ofrecí una idea... no esperaba que sea perfecto

Por un lado estaba pensado en jugarme con EXTRACT, pero a ultimo momento se me ocurrió que podría contar con esas funciones

Desconozco si el DateTimePicker tiene alguna propiedad para hacer que muestre u oculte el día, o el mes o el año... tendría que fijarme. No tengo Delphi abierto en estos momentos.

Tal vez exista un componente de tercero que haga lo que pides... eso ya es cuestión de burcar.

No veo el drama de emplear Combos, excepto si son muchos los años. En lo personal evito los combos cuando son muchos... no es demasiado estético tener un combo que despliega más de 10 items.

Puedes emplear el componente que deses lKinGl. Ya será cuestión de hacer la conversión que sea necesaria cuando armes la consulta.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 10:48:54.


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