PDA

Ver la Versión Completa : Problema, no ordena por fechas :(


tonycol1984
21-11-2008, 17:11:20
hola, que tal? Disculpen, tengo un problema.... Lo que pasa es que tengo en el query la parte de "ORDER BY Fecha DESC", pero no lo organiza bien del todo. Lo que pasa es que genero reportes por fecha de toda la info que tengo en mi sistema, y por ejemplo, para ventas, si tengo 4 ventas y quiero que sean mostrados acomodados x fecha en el siguiente orden: 23/08/2008, 12/10/2008, 19/10/2008 y 06/11/2008... me los muestra de esta forma: 23/08/2008, 19/10/2008, 12/10/2008 y 06/11/2008. O sea que el mes esta ordenado de forma correcta, pero el dia de forma inversa, y por ejemplo para mostrar el inventario por fecha, es lo mismo, aparte de que los ultimos registros estan en desorden... no se que hacer, mis tablas son paradox y uso queries para acomodar este business... Es lo único que me falta para terminar mi sistema, alguna ayuda? jajaja se los agradeceria de todo corazón :D

Saludos!

ToNyCoL...

hecospina
21-11-2008, 17:22:40
Hola
Estas seguro que este campo es de tipo DATE, segun lo que puedo ver con tu ejemplo es de tipo texto :confused:

Alexandro
21-11-2008, 19:48:36
Creo que hecospina tiene razón, deberias ver que el campo es DATE y no ALPHA. Cualquier duda nos informas

salvica
23-11-2008, 17:38:09
También puedes utilizar:

ORDER BY DATE_FORMAT(fecha, "%Y%m%d")

Donde:
fecha -> el campo fecha de tu tabla
%Y ---> el año con cuatro dígitos
%m ---> el mes con dos dígitos
%d ---> el día con dos dígitos
Saludos
Salvica

tonycol1984
24-11-2008, 18:12:39
Gracias a todos por haberme ayudado, primero que nada los tenia tipo alpha (y no recuerdo porque los tenia de tipo alpha :P), pero total que los cambie a date y ahora me seguía marcando otro error en type mismatch o algo asi.... Ah! porque para mostrar solo los reportes entre el rango de fecha, los almaceno en una tabla temporal, y al llenar esa tabla me marcaba error con el query en la parte "WHERE Fecha LIKE '20/12/2008'"... Lo primero que hice fue cambiar la configuracion regional en la computadora, para que fuera como la notacion en ingles (12/20/2008) y no funcionaba tampoco, ademas, pues... ni modo que tuviera la fecha como los americanos la leen si el software va a ser usado en mexico, verdad? :P Así que lo que hice fue volver a ponerla como es en latinoamerica y en el query si la buscaba como la americana, ya aparte en vez de "LIKE" escribi "=" y ahora sí ya salió. Entonces el query quedo así:

SELECT * FROM tabla
WHERE Fecha = "12/20/2008"

Y ya en el qreport me muestra la fecha normal (20/12/2008)... Esta raro, no? Es un show con eso de los formatos, pero al fin lo logre :P Saludos a todos y gracias ñ_ñ

hecospina
24-11-2008, 20:39:41
Hola
Debes tener en cuenta que LIKE solo funciona para campos que sean de tipo texto, no te van a funcionar para campos numericos ni para fecha, por eso era el error que te marcaba
Lo del formato de fecha es extraño, lo importante es que funcione :)

Lepe
24-11-2008, 21:54:27
Es muy normal que el motor use el formato de fecha mm/dd/yyyy, algulnos motores si pones 02/01/2008 pueden interpretar tanto el 1 de febrero como el 2 de enero, lo mejor es usar parámetros:

query1.sql.text := 'select * from fecha where fecha = :mifecha';
query1.parambyname('mifecha').AsDate := trunc (datetimepicker1.date);
query1.Open;

// otra forma:
query1.sql.text := 'select * from fecha where fecha between fechaini and :fechaFin';
query1.parambyname('fechaini').AsDate := trunc (datetimepicker1.date);
query1.parambyname('fechaFin').AsDate := trunc (datetimepicker2.date);
query1.Open;



Si un campo es numérico, puedes usar un truco:

select * from tabla
where cast(camponumerico as varchar(100)) like '%32%'
Creo que funcionaría aunque no lo he probado.

Saludos