realbasic-nug.it
[Top] [All Lists]

Re: Listbox

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Listbox
From: Lucio Liberi <lucioing at tin dot it>
Date: Wed, 17 Jan 2007 17:15:37 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <3C32ACD8-27F8-496B-937A-3D8AB7C6BAF8 at tin dot it> <8B1F4257-80DE-4852-B2DB-05B4E61E59E8 at tin dot it> <8BF04970-710A-4257-B919-A2B70DA88E2C at yahoo dot it> <C6CF8C0A-BD3A-492B-8279-4188D1E35250 at tin dot it> <AD155253-3871-43C0-BD2A-4EA81646D95D at yahoo dot it>
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



<Prev in Thread] Current Thread [Next in Thread>