Il problemino e' un po' piu' complesso...
Infatti, l'ordinamento, non lo faccio sulla LISTBOX, ma sul DATABASE.
E la sostanza non cambia.
Nel metodo per riempire una ListBox ho scritto:
Dim i As Integer
Dim FormatString As String
FormatString="#,###,###.00" // <--------- stringa
di formattazione
theLB.DeleteAllRows
while Not theDB_rs.EOF
theLB.AddRow ""
for i=1 to theDB_rs.FieldCount
if theDB_rs.IdxField(i).Name="Importo" then //
<--------- se e' il campo 'Importo' allora...
theLB.cell(theLB.LastIndex, i-1)=Format(CDbl
(theDB_rs.IdxField(i).StringValue), FormatString)
else
theLB.cell(theLB.LastIndex, i-1)=theDB_rs.IdxField
(i).StringValue
end if
next
theDB_rs.MoveNext
Wend
e funziona bene con 12,34 come formattazione del numero nel DB.
Se nel DB metto 12.34, l'ordinamento funziona bene, ma non le somme.
Di fatto, l'ordinamento sugli importi puo' servire per trovare al
volo i valori maggiori...
Il giorno 17/gen/07, alle ore 09:38, Massimo Valle ha scritto:
On 17/gen/07, at 00:30, Lucio Liberi wrote:
Sei un fuoriclasse... Grazie, Massimo...
Approfitto per chiedere un'altra cosa...
Ho un database con una colonna <Importo>
Voglio fare la somma della colonna <Importo>... Tu dirai: E che ci
vuole? Si... Infatti.
Il problema riguarda la formattazione dei numeri che sono reali
con due decimali, come si conviene alla nostra valuta.
Allora...
Se formatto 1.234,00 faccio le somme correttamente, ma quando
ordino 1200, viene dopo 12 e non dopo 600, cioe' 12, 1200, 600
Se formatto 1,234.00 ordino correttamente ma ho problemi con le
somme.
Naturalmente se da sistema cambio le formattazioni, utilizzando
quelle USA, tutto torna a posto... Ma non e' naturale.
Cosa fare e... come?
Grazie e a presto.
Lucio
A questo scopo esiste appositamente l'evento Listbox.CompareRows.
Siccome l'ordinamento delle righe in un listbox è alfabetico, con
l'evento in questione tu puoi ordinare gli elementi secondo un
criterio diverso. Nel tuo caso numerico, ma potrebbe anche servire
per le date ad esempio.
L'evento ti fornisce il numeri di due righe da confrontare e la
colonna. Inoltre un quarto argomento che tu modificherai a seconda
di quale delle due righe è maggiore, minore o uguale.
Tieni presente che l'evento viene chiamato per tutte le colonne
della listbox, quindi anche per quelle che necessitano un
ordinamento alfabetico. Ti consiglio quindi di verificare innanzi
tutto l'argomento colonna. Sulla base di questo tu decidi come
trattare i dati.
Nel caso tu decida di applicare un ordinamento custom, come nel tuo
caso, allora devi ritornare True al termine dell'evento, mentre
invece se decidi di lasciar fare a RB (per una colonna alfabetica)
allora ritorna semplicemente False.
Consulta il Language Reference di RB per i valori da ritornare e
altri dettagli
Ciao
--MaxChiacchiera con i tuoi amici in tempo reale!
http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com
|