-
Décimal dans BDD
Bonjour à tous,
Je travaille sur un projet qui consiste à récupérer des valeurs dans un fichier CSV et les enregistrer en base de données Access.
Dans mon fichier, mes nombres décimaux sont de format : 3.34
J'obtiens une erreur lors de l'enregistrement des valeurs décimales dans la base de données.
Mon paramètre de séparateur décimal est une virgule.
L'enregistrement fonctionne bien si je change ce paramètre par un point.
Ma question est donc :
Existe-t-il un moyen de changer l'interprétation des paramètres simplement pour mon application et mon accès BDD.
Je ne voudrais surtout pas changer complètement les paramètres pour ne pas impacter mes clients
Merci pour vos retours.
Brody
-
Ce qui vient de ton CSV est du texte.
Ce qui est attendu par ta base est une valeur décimale.
Il faut donc convertir la valeur texte en valeur décimal.
https://docs.microsoft.com/en-us/dot...tframework-4.8
Et ensuite insérer dans la base à l'aide d'une requête paramétrée et du bon OleDbType
https://www.codeguru.com/visual-basi...-applications/
https://docs.microsoft.com/fr-fr/dot...tframework-4.8
-
Je viens de trouver une solution :
Si jamais des gens cherchent comme moi un jour :
J'ai récupéré le séparateur du système avec :
Code:
Public VG_SeparateurDecimal = System.Globalization.CultureInfo.InstalledUICulture.NumberFormat.NumberDecimalSeparator
Lors de la lecture de mes champs CSV, je test si le séparateur est une virgule ou un point.
En fonction du résultat j'effectue un replace dans ma chaine.
Egalement, il fallait que j'utilise un Single et non Décimal avec la bonne conversion Csng
Ce qui nous donne :
Code:
If (VG_SeparateurDecimal = ",") Then VG_ctlrPes.ConsFor = CSng(ligneActuelle(7).Replace(".", VG_SeparateurDecimal)) Else VG_ctlrPes.ConsFor = CSng(ligneActuelle(7))