Je rencontre un problème lors de l'import d'un fichier CSV dans une table, le dernier champ n'a pas de partie décimale, il semble qu'il soit importé comme un entier.
J'utilise une macro issue de ce post et je l'ai adaptée. Cette macro a également une origine dans un sujet épinglé ici.
Extrait du fichier Albums2.csv, le dernier champ a une partie décimale
Après import dans la table tblAlbums, la partie décimale est absente: Je pense que cela vient du Select Case de la procédure CopierDonnees qui est censé fonctionner pour n'importe quel fichier importé, quel que soit le nombre de champs, mais qui ne reconnaît pas toujours bien le type de champ9782490591817;5;Apprends moi le dessin - BD humoristique 1;13,8;100;12;0;0;88;0;12;165,6
9782382110058;5;Apprends moi le dessin - BD humoristique 2;14,8;100;8;0;0;92;0;8;118,4
9782382110270;5;Apprends-moi le dessin - Manga;14,8;100;8;0;0;92;0;8;118,4
9782382111710;5;Apprends moi le dessin - Les toons;18,9;100;12;0;0;88;0;12;226,8
9782957706303;5;Une année pour mieux manger T1;15;100;8;0;0;92;0;8;120
Code : Tout sélectionner
Select Case .Columns.getByIndex(i -1).TypeName
Case "SMALLINT"
.Columns.getByIndex(i -1).updateInt(resuQuery.getInt(i))
Case "VARCHAR"
.Columns.getByIndex(i -1).updateString(resuQuery.getString(i))
Case "NUMERIC"
.Columns.getByIndex(i -1).updateInt(resuQuery.getInt(i))
Case "DOUBLE"
.Columns.getByIndex(i -1).updateDouble(resuQuery.getDouble(i))
Case "FLOAT"
.Columns.getByIndex(i -1).updateFloat(resuQuery.getFloat(i))
End Select
Pour l'instant j'ai contourné le problème en lançant une requête update à la fin de la procédure OnBtnImporterClicked pour recalculer le PrixTotal
Code : Tout sélectionner
maRequete = maConnexion.createStatement()
instrSQL = "UPDATE ""tblAlbums"" SET ""PrixTotal"" = ""PrixVente""*""TotalVendu"""
maRequete.executeUpdate(instrSQL)
Je me demande si je ne devrais pas réécrire la macro pour qu'elle lise les champs dans l'ordre, avec le bon type, mais dans ce cas, elle ne serait plus auto-adaptative, et il faudrait une procédure spécifique pour chaque fichier.
Si vous voulez tester, dans la macro du fichier odb, il faut modifier dans la procédure OnBtnImporterClicked la variable chemin pour quelle corresponde à votre dossier de travail
Code : Tout sélectionner
chemin = Environ("HOME") & "/ForumOO/"Code : Tout sélectionner
sNomFichier = "Albums1"Code : Tout sélectionner
sNomFichier = "Albums2"

