[RESOLVIDO] Diferença ordenar combo WinXP no WinVista ou Win7

9 respostas
bruxel

Galera seguinte,

me deparrei com uma coisa sinistra. não sei pq acontece.

Por motivos de compatibilidade, ainda estou utilizando a classe Vector, não seria muito adequado ter que mudar isto agora, visto que estou com o projeto um pouco atrasado.

executo uma query no banco com order by e carrego no vector e posteriormente na comboModel, ate ai tranquilo a ordenação que eu espero acontece.

então quando executo este programa no Windows XP, mil maravilhas, ordenação impecavel

mais ai vem a dura realidade, no Vista ou no Seven isto não acontece, não vou dizer que venha completamente embarralhado, mas alguns itens estão misturados.

alguem tem alguma ideia ?, estou usando o java 1.6.0_02-b06

9 Respostas

marcelo.bellissimo

Você tá testando só no Internet Explorer, né?

Testa em outro browser… aposto que vai funcionar, pois só o IE que gosta de ignorar completamente os padrões do W3C e a cada versão nova tem uma surpresa…

bruxel

estou usando no swing

leonardobhbr

Muito estranho pois a ordem vc pega do banco de dados e como a classe vector não reorganiza os items tipo a classe HashSet.

Tem certeza que o cmbobox esta mostrando diferente, não e o banco de dados diferente não?

O campo que vc ta ordenando é o que data,numerico ou varchar?

bruxel

tenho certeza que vem ordenado pelo banco, acabei de testar

detectei com dois tipos de dados int e timestamp

leonardobhbr

Posta o codigo que vc adiciona no Combo, quem sabe aparece uma luz

se vc fizer um println a ordem ta diferente tambem

bruxel

mais ou menos assim

String sql = "select data from notas order by data desc";

connection = c.getConnection();

PreparedStatement sql = con.prepareStatement( sql );

ResultSet rs = sql.executeQuery();

Vector v = new Vector();

while ( rs.next() )
{
    v.add( rs.getString( "data" ) );
}

connection.close();

comboNotas = new JComboBox( new DefaultComboBoxModel( v ) );
M

Acho que o problema é na modelagem do seu banco de dados.

Se data é uma String, então tendo as seguintes datas:

20/01/2000 14/09/1995 07/04/3000 9/11/1500

A ordem seria:

07/04/3000 14/09/1995 20/01/2000 9/11/1500

Isso pois está sendo considerada a ordenação natural de Strings: em ordem alfabética.

O correto é usar um campo do tipo DATE no seu banco e um objeto Calendar no código Java. Se fosse usando DATE, sua consulta com ORDER BY retornaria:

09/11/1500 14/09/1995 20/01/2000 07/04/3000

Nesse caso a ordem cronológica é a usada como critério (o correto).

bruxel

não a modelagem ta certa, é um timestamp mesmo.

não sei o q aconteceu

recompilei os meus jar, coloquei novamente e bingo, funcionou, tudo

biruta esse negocio, acho q deve ser coisas de WINDOWS mesmo, a Bill

bah, valeu galera pelo ajuda ai, resolvido

M

Então sua persistência está sendo feita de forma incorreta (você está usando getString no ResultSet, sendo que deveria usar o getDate).

Criado 2 de dezembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 9
Participantes 4