Bonjour à tous,
J'ai un souci avec un accès à ma base de données.
Je vous place le contexte :
BASE DE DONNÉES :
Dans ma base de données, il y a un champ « Texte » et un champ « A » (et d'autres qui ne servent pas ici). C'est une base de donnée crée avec Access, les champs sont paramétrés en « Text ».
Le champ A contient, selon les lignes :
58.75
65.10
77.80
85.75
101.63
PROGRAMME :
J'ai une variable « var » qui prend une valeur tapée par l'utilisateur. Elle est de type Single. Elle peut aller de 0 à 200, avec deux chiffres après la virgule.
Une combobox « cmbb » que je souhaite remplir avec le champ « Texte » de la base, conditionné avec la valeur de A correspondante : Je ne veux avoir que les textes correspondants aux A supérieurs à la variable.
Voici le code correspondant :
Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & "C:\yo.mdb")
Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Texte FROM BaseDeDonnees WHERE A>='" & CStr(var) & "'"
cmbb.Items.Clear()
MyConnexion.Open()
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
cmbb.Items.Add(myReader.GetString(0))
Loop
myReader.Close()
MyConnexion.Close()
Ca marche, dans le sens ou ca ne plante pas.
J'obtiens des résultats incohérents, genre :
Si var= 1, les 5 « Textes » sont ajoutés (normal).
Si var= 2, le texte correspondant au A=101.63 disparaît (??).
Si var= 3, j'ai les textes correspondants aux 58.75 ; 65.10 ; 77.80 ; 85.75
Idem si var= 4 et 5
Si var= 6, j'ai les textes correspondants aux 65.10 ; 77.80 ; 85.75
Si var= 7, j'ai les textes correspondants aux 77.80 ; 85.75
...
En analysant les résultats, je comprend que le programme ne compare pas vraiment A avec ma variable, mais uniquement leurs premier chiffre (deux premiers chiffres si ma variable fait 2 chiffres, etc..).
C'est pourquoi le textre correspondant à 101.63 disparait quand var= 2, car le premier chiffre de 101.63 est 1 et il le considère comme ne remplissant pas la condition. Il réapparait quand var= 10 car la variable faisant deux chiffres, il compare maintenant avec deux chiffres.
Je n'arrive pas a corriger ce problème, j'ai tenté de mettre les données de la base en « Number », j'ai tenté de remplacer les points par des virgules, et d'autres choses.
Désolé si certains détails sont en trop, je vous laisse le plus d'éléments possible.
Auriez vous une idée ?
Merci d'avance.
LionHeart