Newsgroup: it.comp.lang.visual-basic
Titolo: [NET] Listview non ordinata

Salve a tutti
Ho caricato una listview con la seguente query:
"select fattura,data_fattura,importo,data_pagamento,modo from fatture where
id_cliente=1010 order by data_fattura".
Il risultato è il seguente:
fattura    data_fattura    importo    data_paga        modo
2            10/05/2003    10,10        10/05/2003    contanti
1            30/04/2003    20,00        30/04/2003    contanti
Nella lv non c'è nessuna impostazione di ordine.
Cosa ne pensate?
Ciao
Fabio

Sei sicuro che i dati provenienti dalla query siano correttamente ordinati?
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://www.ugidotnet.org/710.blog

 Sei sicuro che i dati provenienti dalla query siano correttamente
ordinati?
Perfettamente. Ho verificato mille volte direttamente sul db ed ho più volte
controllato di non aver ordinato direttamente dalla lv.
Io proprio non capisco.
Ciao
Fabio

 Io proprio non capisco.
Se usi un db Access è probabile che i dati siano ordinati ma solo in
visualizzazione. la query invece estrae i dati nell'ordine di come stanno e
poi li ordina con order by.
Il problema è che l'order by confonde le date americane e quelle italiane.
Può darsi che sia questo il problema...
Oppure mi viene da pensare che la query aggiunga alla lv i dati ordinati
(inserisce il record 1 e poi il record 2 che finisce sopra al record 1). la
lv  di default infatti mette i dati in ordine inverso a quello di arrivo.
Controlla e facci sapere
bye

 lv  di default infatti mette i dati in ordine inverso a quello di arrivo.
Però tutto quello che inserisce dopo è ordinato.
Ciao
Fabio

 Però tutto quello che inserisce dopo è ordinato.
strano. vedo se trovo qualcosa e ti faccio sapere.
ciao

 ciao
Ciao
Fabio

[*Fabio* = 
reca...@ilrecapitoespresso.fastwebnet.it
 in
news:zokxb.420$
yq1...@tornado.fastwebnet.it
] ha scritto:

Quest'ultima frase mi incuriosisce...
Non ho (quindi non conosco) Net, ma, appunto, vorrei capire lo stesso.
Permettimi quindi qualche domanda:
-Tipo del database?
-Metodo di accesso? (ADO, 
ADO.NET
?)
-Il campo data_fattura di che tipo è?
-La ListView è bound-ata al database?
-Se non è bound-ata, come fai a caricarla (codice)?
-La colonna che espone data_fattura prevede qualche formato esplicito?
Tutto questo per dire che (immagino anche per Net perchè dovrebbe essere una
caratteristica del database, qualunque esso sia) sul database la data (se è
un campo di tipo Date/Datetime) è sicuramente riconducibile a un numero.
Questo è naturalmente minore per date basse e maggiore per date alte, in
modo che l'Order By possa regolarmente funzionare. Ipotizzando che la
listview non sia bound-ata e partendo dal presupposto (come dici) che il
recordset ottenuto sia correttamente ordinato per data crescente, occorre
certamente concentrarsi sul metodo di compilazione della listview perchè è,
da quel che mostri come risultati, palesemente errato, magari per un
banalissimo errore di formattazione che, per esempio, inverte giorno con
mese. Sicuro di scorrere il recordset dall'inizio e, in modo sequenziale,
sino alla fine?
Sarebbe interessante, come dicevo, vedere il codice di caricamento della
listview dopo aver composto il recordset e, nel contesto, lo scorrimento
dello stesso...


dim cmd as new oledb.oledbcommand("select fattura,data_fattura,importo from
fatt_fornitori order by data_fattura",connessione)
dim dr as new oledb.oledbdatareader(cmd)
dim lv as listviewitem
dim i as integer
while dr.read
    for i=0 to dr.items.cont-1
        if i=0 then
            lv=listview.item.add(dr.item(i))
        else
            lv.subitem.add(dr.item(i))
        end if
    next i
end while
Cmq questa mattina ho remmato il codice e l'ho ri-digitato esattamente come
il precedente (sottolineo che ho ri-digitato e non copiato la stessa ed
identica procedura), l'ho riavviato ed č tutto ordinato perfettamente.
Ora io mi chiedo: perchč ogni tanto devo seguire questa pratica per far
funzionare l'applicazione?
Ciao
Fabio

 far funzionare l'applicazione?
E' molto semplice. Perchè i data-eccetera, anche con Net, non funzionano.
Non c'è altro che i data? Io vado sino alla pensione con VB6 e senza
controlli data.