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.