Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Order By no me ordena, por que?

Estas en el tema de Order By no me ordena, por que? en el foro de Bases de Datos General en Foros del Web. Que tal compañeros, posteo esta consulta pa ver en que estoy mal, me carga los datos que quiero hasta ahi funciona pero no del todo, ...
  #1 (permalink)  
Antiguo 18/07/2011, 15:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Order By no me ordena, por que?

Que tal compañeros, posteo esta consulta pa ver en que estoy mal, me carga los datos que quiero hasta ahi funciona pero no del todo, pues no me ordena, espero puedan ayudarme, de antemano muchas gracias.

Código SQL:
Ver original
  1. "Select T1.* From ImptosCargo As T1 Where T1.TipoImptoCred = '" & TipoImpuesto & "' Order By T1.Mes"
  #2 (permalink)  
Antiguo 18/07/2011, 15:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Order By no me ordena, por que?

Que no te ordena?
Que tienes en la columna mes?
no te los ordena primero los 1 luego 2 (3,4,5,6 etc)?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 18/07/2011, 22:02
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Order By no me ordena, por que?

En esa columna (de la BD) tengo los meses en formato numerico (1,2,3,...12) y el campo se llama "Mes"
  #4 (permalink)  
Antiguo 18/07/2011, 22:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Order By no me ordena, por que?

y no, no me los ordena
  #5 (permalink)  
Antiguo 19/07/2011, 05:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Order By no me ordena, por que?

Mira, técnicamente debería ordenártelo bien, porque esta consulta:
Código SQL:
Ver original
  1. SELECT T1.*
  2. FROM ImptosCargo T1
  3. WHERE T1.TipoImptoCred = '" & TipoImpuesto & "'
  4. ORDER BY T1.Mes
así lo indica.
Sin embargo, el ORDER BY en concurrencia con el WHERE, éste tiene prioridad en el ordenamiento, por lo que el resultado puede ser diferente al esperado.

Este tipo de cosas están perfectamente documentadas en los Manual de Referencia, por ejemplo, el de MySQL: 7.2.10. Cómo optimiza MySQL ORDER BY. Otros DBMS tienen situaciones de este tipo (Oracle))

Una solución temporal sería poner todo esto como subconsulta que luego se ordena:
Código SQL:
Ver original
  1. SELECT *
  2. FROM
  3.     (SELECT *
  4.     FROM ImptosCargo
  5.     WHERE TipoImptoCred = '" & TipoImpuesto & "' ) T1
  6. ORDER BY Mes

Por otro lado, para estar seguros de lo que sucede en tu caso sería buena idea que postearas una captura del resultado de la consulta, sea en texto o en imagen. De ese modo podremos ver bien cómo está quedando la tabla resultado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 19/07/2011 a las 05:33
  #6 (permalink)  
Antiguo 19/07/2011, 08:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Order By no me ordena, por que?

Antes que nada gracias por tu apoyo, lamento decir que no funciona, posteo la subrutina completa, muchas gracias de antemano.

Subrutina:
Código SQL:
Ver original
  1. Sub CargarDeclaracionesCargo(ByVal vsFxAy AS AxvsFlexLib.AxvsFlexArray, ByVal TipoImpuesto AS String)
  2.         Dim ImpCn AS NEW ADODB.Connection
  3.         Dim ImpRd AS NEW ADODB.Recordset
  4.         Dim Fila, Columna AS INTEGER
  5.         Dim Importe AS DECIMAL
  6.         Dim Consulta AS String
  7.         ImpCn.OPEN("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RutaRev & ";Persist Security Info=False;Jet OLEDB:DataBase Password=hu9rethu")
  8.         Consulta = "Select T1.* From ImptosCargo As T1 Where T1.TipoImptoCred = '" & TipoImpuesto & "' Order By T1.Mes"
  9.         ImpRd.OPEN(Consulta, ImpCn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)
  10.         ON Error Resume NEXT
  11.         WITH vsFxAy
  12.             .ROWS = .FixedRows
  13.             While NOT ImpRd.EOF
  14.                 .ROWS = .ROWS + 1
  15.                 .set_TextMatrix(.ROWS - 1, 1, ImpRd.FIELDS("Año").VALUE)
  16.                 .set_TextMatrix(.ROWS - 1, 2, StrConv(MonthName(ImpRd.FIELDS("Mes").VALUE, FALSE), VbStrConv.ProperCase))
  17.                 .set_TextMatrix(.ROWS - 1, 3, ImpRd.FIELDS("TipoDeclaracion").VALUE)
  18.                 .set_TextMatrix(.ROWS - 1, 4, ImpRd.FIELDS("TipoImptoCred").VALUE)
  19.                 .set_TextMatrix(.ROWS - 1, 5, ImpRd.FIELDS("Impuesto").VALUE)
  20.                 .set_TextMatrix(.ROWS - 1, 6, ImpRd.FIELDS("ImptoDeclAnt").VALUE)
  21.                 .set_TextMatrix(.ROWS - 1, 7, ImpRd.FIELDS("Actualizacion").VALUE)
  22.                 .set_TextMatrix(.ROWS - 1, 8, ImpRd.FIELDS("Recargos").VALUE)
  23.                 .set_TextMatrix(.ROWS - 1, 9, ImpRd.FIELDS("Total").VALUE)
  24.                 .set_TextMatrix(.ROWS - 1, 10, ImpRd.FIELDS("Compensacion").VALUE)
  25.                 .set_TextMatrix(.ROWS - 1, 11, ImpRd.FIELDS("AcredIVA").VALUE)
  26.                 .set_TextMatrix(.ROWS - 1, 12, ImpRd.FIELDS("AcredIDE").VALUE)
  27.                 .set_TextMatrix(.ROWS - 1, 13, ImpRd.FIELDS("PagadoSubsEmp").VALUE)
  28.                 .set_TextMatrix(.ROWS - 1, 14, ImpRd.FIELDS("PagadoEfectivo").VALUE)
  29.                 .set_TextMatrix(.ROWS - 1, 15, ImpRd.FIELDS("FechaPresent").VALUE)
  30.                 .set_TextMatrix(.ROWS - 1, 16, ImpRd.FIELDS("NumOprn").VALUE)
  31.                 .set_TextMatrix(.ROWS - 1, 17, ImpRd.FIELDS("Portal").VALUE)
  32.                 .set_TextMatrix(.ROWS - 1, 18, ImpRd.FIELDS("NumFolioComp").VALUE)
  33.                 .set_TextMatrix(.ROWS - 1, 19, ImpRd.FIELDS("NumOprnAnt").VALUE)
  34.                 .set_TextMatrix(.ROWS - 1, 20, ImpRd.FIELDS("FechaDeclAnt").VALUE)
  35.                 .set_TextMatrix(.ROWS - 1, 21, ImpRd.FIELDS("Observacion").VALUE)
  36.                 CALL AjustarAltoFila(vsFxAy, .ROWS - 1, 260, 21, 60, 4000)
  37.                 ImpRd.MoveNext()
  38.             END While
  39.             .ROWS = .ROWS + 1
  40.             FOR Columna = 5 TO 14
  41.                 Importe = 0
  42.                 FOR Fila = .FixedRows TO .ROWS - 2
  43.                     Importe = Importe + .get_TextMatrix(Fila, Columna)
  44.                 NEXT Fila
  45.                 .set_TextMatrix(Fila, Columna, Importe)
  46.             NEXT Columna
  47.         END WITH
  48.         CALL AjustarColumnas(vsFxAy, 1, 18)
  49.         ImpRd.Close()
  50.         ImpCn.Close()
  51.         ImpRd = Nothing
  52.         ImpCn = Nothing
  53.         Fila = Nothing
  54.         Columna = Nothing
  55.         Importe = Nothing
  56.     END Sub

P.D. No sé como postear una imagen (para la tabla de datos y la grilla) espero que la subrutina completa ayude en ausencia de la BD y la Grilla.
  #7 (permalink)  
Antiguo 19/07/2011, 09:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Order By no me ordena, por que?

Bueno, el código que estás posteando no nos sirve de nada para saber qué falla en la consulta (si es que es la consulta la que falla), además de que no se debe poner código de programación acá...
Por otro lado, mi pregunta sería: ¿Access o SQL Server? ¿VB6? ¿Qué estás usando?

No puedes postear imágenes porque tienes pocos posts y poco tiempo participando en FDW. Podrías postear la tabla resultado copiándola como texto o algo así.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 19/07/2011, 13:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Order By no me ordena, por que?

Hola Daviel:

Podría apostar que estás trabajando con ACCESS, por el tipo de driver que estás utilizando pero si estoy equivocado me corriges.

Creo que no haz mencionado de qué tipo es tu campo mes, una cosa es que tengas sólo números y otra muy diferente que tengas un campo tipo numérico, puedes ver de que estoy hablando en este ejemplo de MySQL:

Código MySQL:
Ver original
  1. mysql> create table meses (numero int, cadena varchar(2));
  2. Query OK, 0 rows affected (0.88 sec)
  3.  
  4. mysql> insert into meses values (1, '1'), (2, '2'), (3, '3'), (4, '4'),
  5.     -> (5, '5'), (6, '6'), (7, '7'), (8, '8'), (9, '9'), (10, '10'),
  6.     -> (11, '11'), (12, '12');
  7. Query OK, 12 rows affected (0.08 sec)
  8. Records: 12  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> select * from meses order by numero;
  11. +--------+--------+
  12. | numero | cadena |
  13. +--------+--------+
  14. |      1 | 1      |
  15. |      2 | 2      |
  16. |      3 | 3      |
  17. |      4 | 4      |
  18. |      5 | 5      |
  19. |      6 | 6      |
  20. |      7 | 7      |
  21. |      8 | 8      |
  22. |      9 | 9      |
  23. |     10 | 10     |
  24. |     11 | 11     |
  25. |     12 | 12     |
  26. +--------+--------+
  27. 12 rows in set (0.07 sec)
  28.  
  29. mysql> select * from meses order by cadena;
  30. +--------+--------+
  31. | numero | cadena |
  32. +--------+--------+
  33. |      1 | 1      |
  34. |     10 | 10     |
  35. |     11 | 11     |
  36. |     12 | 12     |
  37. |      2 | 2      |
  38. |      3 | 3      |
  39. |      4 | 4      |
  40. |      5 | 5      |
  41. |      6 | 6      |
  42. |      7 | 7      |
  43. |      8 | 8      |
  44. |      9 | 9      |
  45. +--------+--------+
  46. 12 rows in set (0.00 sec)

Revisa que tu campo sea de tipo numérico o en su defecto tendrás que hacer la conversión a numero en el order by.

También convendría que nos pongas el orden en que te está presentando los datos, para darnos una idea de que puede estar ocurriendo.

Saludos
Leo.
  #9 (permalink)  
Antiguo 19/07/2011, 13:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Order By no me ordena, por que?

Antes que nada no sabia que no habia que postear código (no he leido las reglas), el resultado de la consulta es algo amplio (como lo muestra el código), por lo que no se me ocurre como postearlo aqui, solo para el antecedente uso Access 2003 y visual studio 2005, y pues gracias de cualquier forma por el interés.
  #10 (permalink)  
Antiguo 20/07/2011, 08:48
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Order By no me ordena, por que?

¡EXCELELENTE! compañero leonardo_josue diste en el clavo, efectivamente mi campo "Mes" era de tipo "Texto" y ahora que lo cambie a tipo "Número" funciona perfectamente, te agradezco mucho tu bien ilustrada explicación, PROBLEMA RESUELTO.
  #11 (permalink)  
Antiguo 20/07/2011, 09:50
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Order By no me ordena, por que?

Son pequeños detalles que de repente se pasan por alto, pero me da gusto que hayas dado con la solución.

Saludos
Leo
  #12 (permalink)  
Antiguo 21/07/2011, 07:34
 
Fecha de Ingreso: mayo-2011
Ubicación: Toluca
Mensajes: 115
Antigüedad: 13 años
Puntos: 2
Respuesta: Order By no me ordena, por que?

Otra mas que resuelves Leo puedo ver que eres bastantante bastante bueno.
  #13 (permalink)  
Antiguo 21/07/2011, 08:22
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Order By no me ordena, por que?

Gracias patiurco, pero realmente esa sólo cuestión de revisar los detalles básicos. Me gusta tratar de ayudar, así como cuando he necesitado ayuda otros lo han hecho.

Es como el karma (y no me refiero simplemente a la valoración en el foro), en algún lado leí:

Cita:
La frase más clara sobre el karma, de la retribución del universo, el que ama es amado, el que ayuda es ayudado, el que critica es criticado
Así que si puedo ayudar a alguien, me doy por bien servido, no importa que no me den karma jejejejeje.

Saludos.
Leo

Etiquetas: order, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:15.