Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89

    [VB.NET / MYSQL] Gestione Prezzi Decimali

    Ciao a tutti !

    Ho questo problema con MYSQL e VB.NET. HO letto e riletto alcuni articoli per capire meglio come gestire i campi prezzo all'interno di MYSQL ed ho scoperto due cose interessanti :

    • Il campo migliore per la gestione del prezzo è il Decimal
    • Il campo decimal di MYSQL non viene localizzato e mantiene il formato Americano ( ovvero il separatore " . " per i decimali )


    Per rendere tutto più fruibile all'interno dell'applicazione ho utilizzato la funzione FormatCurrency ( che invece tiene conto delle impostazioni di localizzazione del S.O. ) di VB per formattare automaticamente i valori numerici inseriti.
    Quindi inserendo ad esempio 54556,22 VB lo formatta automaticamente in € 54.556,22 , cosa che purtroppo a MYSQL non piace al momento della Query.

    Ovviamente il campo Decimal non accetta ne il simbolo " € " ne il separatore . per le migliaia, ne il separatore , per i decimali ! Urge quindi una pulizia dei dati per trasformarli nel formato che a lui piace, ovvero 54556.22 .

    Io ho pensato a questo modo, molto grezzo e semplicistico

    codice:
    TXTPrezzo.Text = Replace(TXTPrezzo.Text, "€", "")
            Dim ValorePrezzo As String
            ValorePrezzo = TXTPrezzo.Text
            Dim DecimaliVirgolaaPunto As String
            Dim MigliaiaPuntoaVirgola As String
      
    
            DecimaliVirgolaaPunto = ValorePrezzo.Substring(ValorePrezzo.Length - 3, 3)
            DecimaliVirgolaaPunto = Replace(DecimaliVirgolaaPunto, ",", ".")
    
            MigliaiaPuntoaVirgola = ValorePrezzo.Substring(0, ValorePrezzo.Length -3)
            MigliaiaPuntoaVirgola = Replace(MigliaiaPuntoaVirgola, ".", "")
    In questo modo elimino il simbolo € dalla stringa e lo sostituisco con "", poi prendo a campione gli ultimi 3 caratteri della stringa, ovvero i due decimali e la virgola, e vado a sostituire la " , "con il " . " e poi prendo tutto il resto della stringa ed elimino le possibili virgole !

    C'è un modo migliore per fare questa cosa ? Chiedo solo suggerimenti per migliorare il tutto

    Ringraziandovi in anticipo vi auguro una buona giornata.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Puoi fare cosi:

    codice:
            Dim Num As String = "€ 1.005,401"
    
            System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US") 'it-IT se vuoi la gestione in italiano
    
            Dim numInfo As NumberFormatInfo = New NumberFormatInfo()
            numInfo.CurrencySymbol = "€"
            numInfo.CurrencyDecimalSeparator = ","
    
            Dim curr As Decimal = Decimal.Parse(Num.Replace(".", ""), NumberStyles.Currency, numInfo)
    
            TextBox1.Text = curr.ToString()

  3. #3
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    Grazie mille è sicuramente più snella xD

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.