Foros del Web » Programación para mayores de 30 ;) » Java »

Ordenar tabla por precio

Estas en el tema de Ordenar tabla por precio en el foro de Java en Foros del Web. Muy buenas, tengo una tabla en Java conectada a una BBDD Access, y uno de los campos, "Precio", es tipo "moneda". A este campo le ...
  #1 (permalink)  
Antiguo 21/07/2010, 03:46
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Ordenar tabla por precio

Muy buenas,

tengo una tabla en Java conectada a una BBDD Access, y uno de los campos, "Precio", es tipo "moneda". A este campo le cambio el formato en mi tabla de la siguiente forma:

"NumberFormat formatoNum = NumberFormat.getCurrencyInstance();"

y me representa los datos de esta forma:

20.00 €
25.50 €
...

Si no le cambio el formato me los representa sin el €.

Por lo cual tengo el problema de que al hacerle el sorter para ordenarlos, me lo ordena como un String, es decir :

1
10
11
2
21
...

Como puedo ordenarlos como si fuera un campo numérico y sin que pierda el "€"???

Un saludo y muchas gracias!!
  #2 (permalink)  
Antiguo 21/07/2010, 04:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Ordenar tabla por precio

deberías de ordenarlos antes de aplicarle el formato numérico de moneda.

Porque no haces que la Sql te devuelva los campos ordenados por precio? y entonces una vez que están ordenados le cambias el formato al precio.

Suerte
  #3 (permalink)  
Antiguo 21/07/2010, 04:38
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Ordenar tabla por precio

Gracias por contestar,

lo que ocurre es que tengo puesto la ordenación cuando le doy al click en la cabecera de la tabla, de esta forma la puede ordenar de varias maneras, por articulo, descripcion, precio... segun que nombre pulse.

Todos los hace bien excepto el precio, que tambien lo trata como String.


PD: Me acabo de dar cuenta que tampoco me ordena bien los tipo fecha :(
  #4 (permalink)  
Antiguo 21/07/2010, 05:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Ordenar tabla por precio

Según la documentación, las columnas se ordenan...
http://download.oracle.com/docs/cd/E...e.html#sorting

.- Segun el Comparator que se haya especificado explicitamente para esa columna.
.- Si TableModel.getColumnClass devuelve String, ordenar usando ordenación de Strings según el locale.
.- Usar el comparador de la clase devuelta por TableModel.getColumnClass para esa columna.
.- Si la columna usa setStringConverter, ordenarla segun el resultado en String.
.- Por defecto, usar el toString de los valores y comparar usando Strings.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 22/07/2010, 02:33
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Ordenar tabla por precio

Gracias por contestar,

lo intento hacer como viene en la pagina que indicas, pero al hacer el getColumnClass me devuelve un String porque le tengo puesto el formato.

Si no le doy formato al precio o a la fecha, me los ordena perfectamente.

Ahora la pregunta es, ¿Cómo formateo los datos para que me los siga ordenando correctamente?

Un saludo y muchas gracias!!
  #6 (permalink)  
Antiguo 22/07/2010, 12:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Ordenar tabla por precio

Si en vez de formatear los campos al devolverle los valores y decirle que los campos son String, le devuelves los valores sin formatear de la clase adecuada y usas un setCellRenderer para que las columnas formateen los datos únicamente al visualizarlos, entonces el formateo te lo harán después de la ordenación y supuestamente debería hacer lo que quieres.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: precio, tablas
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 13:30.