Autore Topic: Decimali in ColumnView.  (Letto 1859 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Decimali in ColumnView.
« il: 03 Febbraio 2008, 20:32:21 »
Buonasera a tutti,
un problemino penso "stupido" ma che con tutte le prove che ho fatto non sono riuscito a risolvere per cui vi chiedo aiuto.
Devo visualizzate in una colonna di una ColumnView dei prezzi con due decimali che provengono da una select sql, allora un prezzo del tipo 15,46 viene visualizzato correttamente, un prezzo 15,00 viene visualizzato senza gli zeri (15), mentre un prezzo del tipo 15,30 viene visualizzato 15,3.
Vorrei visualizzare sempre i due decimali a prescindere se contiene zeri oppure no.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Decimali in ColumnView.
« Risposta #1 il: 04 Febbraio 2008, 07:00:43 »
Prova la seguente funzione:

Codice: [Seleziona]
Format$(Pi, "-#.###")


ciao

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Decimali in ColumnView.
« Risposta #2 il: 04 Febbraio 2008, 12:10:34 »
Meglio è così:
Format(Valore, "###,##0.00")

Spiegazione: la "," rappresenta il separatore delle migliaia (su Ubuntu ci sono dei problemini, viene messo uno spazio invece del punto); il "." è il separatore dei decimali. Il "#" rappresenta la posizione di una cifra opzionale, mentre lo "0" rappresenta la posizione di una cifra obbligatoria, che viene riempita con lo 0 se non c'è.

Quindi
Codice: [Seleziona]

Format("15.2", "###,##0.00")


dà come risultato 15,20, mentre
Codice: [Seleziona]

Format("15.00", "###,##0.00")


diventa 15,00.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #3 il: 04 Febbraio 2008, 20:25:15 »
Chiara la spiegazione della sintassi, ma non ho capito come applicarla alla mia ColumnView.Potresti postarmi il solito esempio esplicativo.
Grazie.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Decimali in ColumnView.
« Risposta #4 il: 05 Febbraio 2008, 10:17:27 »
Beh, considera di dover inserire il valore di Numero in una cella:

Codice: [Seleziona]

Griglia.Item[indice] = Format(Numero, "###,##0.00")
Visita il mio sito personale: http://www.leonardomiliani.com

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #5 il: 06 Febbraio 2008, 20:22:58 »
Non riesco ad applicare il tu suggerimento, vediamo se ho capito bene e se il problema e da qualche altra parte:
Al posto dell'indicazione [indice] io ho inserito il numero della colonna che voglio formattare e al posto di Numero ho inserito l'intestazione della colonna interessata ma le cifre non vengono formattate. Dove sto sbagliando?
Grazie per la pazienza.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Decimali in ColumnView.
« Risposta #6 il: 07 Febbraio 2008, 23:18:27 »
Mettiamo il caso che tu debba inserire in una ColumnView delle scadenze .
Allora il codice di un'ipotetica funziona CaricaScadenza sarà il seguente:

Codice: [Seleziona]

  (...)
    Griglia.Add(Comodo, "") '--aggiungi una riga
    Griglia.Item[0] = Cliente '-- codice cliente
    Griglia.Item[1] = Data '-- data scadenza effetto
    Griglia.Item[2] = Format(Importo, "###,###,##0.00")
  (...)


Ricordati che, per funzionare, devi passare a Format un dato Importo di tipo numerico. In genere io uso il tipo Single.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline robertozr

  • Gamberetto
  • *
  • Post: 22
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #7 il: 10 Febbraio 2008, 11:55:50 »
Buon giorno a tutti, io ho lo stesso problema di tornu posto la sezione del mio listato dove non riesco applicare i suggerimenti della discussione.
uso gambas2 2.0.0 in mandriva2008

ps: il campo interessato Listimp1 nel database e configurato float(6,2)




  DIM f AS ResultField
    DIM c AS Integer
   faResult = MGlobal.db.Exec("SELECT cdart, anart.descrizione, giacenza,listimp1, ragsoc, scaffale, piano, anart.cdfor, ean, id_cdart, costoult, note, anart.id_catm, descatm, anart.id_um, cdum, anart.id_iva, percent, desciva, ricauto, tipoart, scortamin, risco1, risco2, risco3, esiniz, carichi, scarichi, resifor, valinizia, valcarico, valresifor, dtucarico, valesist, cmp FROM anart, anafor, unmisura, tabiva, catmerci WHERE ragsoc = '" & CmbFor.Text & "' AND anart.cdfor = anafor.cdfor AND anart.id_um = unmisura.id_um AND anart.id_iva = tabiva.id_iva AND anart.id_catm = catmerci.id_catm")  
' Costruzione tabella Ricerca Articoli (Intestazione Colonne,Larghezza,Allineamento ecc..)
    CvwFindArt.Clear
    CvwFindArt.Columns.Count = faResult.Fields.Count
    FOR c = 0 TO faResult.Fields.Count - 1
    f = faResult.Fields[c]
    CvwFindArt.Columns.Count = 7
    CvwFindArt.Columns.Sort = 1
    CvwFindArt.Columns[0].Width = 120
    CvwFindArt.Columns[0].Text = "CODICE"
    CvwFindArt.Columns[1].Width = 320
    CvwFindArt.Columns[1].Text = "DESCRIZIONE"
    CvwFindArt.Columns[2].Width = 90
    CvwFindArt.Columns[2].Text = "GIACENZA"
    CvwFindArt.Columns[3].Width = 90
    CvwFindArt.Columns[3].text = "LISTINO"
    CvwFindArt.Columns[4].Width = 200
    CvwFindArt.Columns[4].Text = "FORNITORE"
    CvwFindArt.Columns[5].Width = 90
    CvwFindArt.Columns[5].Text = "SCAFFALE"
    CvwFindArt.Columns[6].Width = 90
    CvwFindArt.Columns[6].Text = "PIANO"

   NEXT

'   Fill the ColumnView with the table data
    FOR EACH faResult
'   Create a new row and fill the first column
    CvwFindArt.Add(faResult.Index, faResult[0])
'   Fill the rest of the columns
    FOR c = 1 TO faResult.Fields.Count - 1
    CvwFindArt[faResult.Index][c] = faResult[c]

    NEXT
    NEXT

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Decimali in ColumnView.
« Risposta #8 il: 10 Febbraio 2008, 13:24:44 »
Devi modificare il tuo codice così:

Codice: [Seleziona]

FOR EACH faResult
  CvwFindArt.Add(faResult.Index, faResult[0])
  FOR c = 1 TO faResult.Fields.Count - 1
    IF c= 3 THEN
      CvwFindArt[faResult.Index][c] = Format(faResult[c], "##,###,##0.00")
    ELSE
      CvwFindArt[faResult.Index][c] = faResult[c]
  NEXT
NEXT
Visita il mio sito personale: http://www.leonardomiliani.com

Offline robertozr

  • Gamberetto
  • *
  • Post: 22
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #9 il: 10 Febbraio 2008, 16:25:11 »
tutto ok e grazie per la risposta leo72  :-D  :-D

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #10 il: 27 Ottobre 2009, 23:25:01 »
Citazione

leo72 ha scritto:
Devi modificare il tuo codice così:

Codice: [Seleziona]

FOR EACH faResult
  CvwFindArt.Add(faResult.Index, faResult[0])
  FOR c = 1 TO faResult.Fields.Count - 1
    IF c= 3 THEN
      CvwFindArt[faResult.Index][c] = Format(faResult[c], "##,###,##0.00")
    ELSE
      CvwFindArt[faResult.Index][c] = faResult[c]
  NEXT
NEXT


Ho utilizzato il suggerimento di leo per formattare una colonna di una ColumnView
Codice: [Seleziona]

FOR EACH faResult
  CvwFindArt.Add(faResult.Index, faResult[0])
  FOR c = 1 TO faResult.Fields.Count - 1
    IF c= 3 THEN
      CvwFindArt[faResult.Index][c] = Format(faResult[c], "000000")
    ELSE
      CvwFindArt[faResult.Index][c] = faResult[c]
  NEXT
NEXT


per visualizzare i dati in questo modo:
000001
000002
000050
000100
ecc...

ma niente da fare, gli zeri anteposti ai numeri non appaiono.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #11 il: 27 Ottobre 2009, 23:50:43 »
è molto strano sei sicuro di non aver commesso errori nel codice tipo che formatti il campo sbagliato?
del resto il codice di formattazione è corretto

controlla bene con il debug

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #12 il: 29 Ottobre 2009, 00:34:15 »
Risolto  :-D

La colonna che dovevo formattare era la prima, quindi il codice va modificato così,
per ottenere il risultato descritto nel post precedente
Codice: [Seleziona]
FOR EACH faResult
   CvwFindArt.Add(faResult.Index, Format(faResult[0], "000000"))
   FOR c = 1 TO faResult.Fields.Count - 1
       CvwFindArt[faResult.Index][c] = faResult[c]
   NEXT
 NEXT
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Decimali in ColumnView.
« Risposta #13 il: 29 Ottobre 2009, 00:35:55 »
lo dicevo io che era un errore di "sbaglio"
 :lol: