Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Conditions WHERE dans accés a base de données. [ Base de données / ADO.NET ] (theLionHeart)

lundi 2 juin 2008 à 14:02:17 | Conditions WHERE dans accés a base de données.

theLionHeart

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


lundi 2 juin 2008 à 16:33:40 | Re : Conditions WHERE dans accés a base de données.

Scorpio2201

Réponse acceptée !
Salut,
C'est vrai que c'est bizarre
Essai tout de même de faire une requête sql qui effectura la somme de tous tes chiffres a virgule pour voir si le résultat est cohérent  ou pas...
s'il ne l'ai pas le problème est du (je pense) à ta base de donnée et non à ton code.
EXEMPLE DE REQUETE:
select SUM(A) from nom_table;
++

lundi 2 juin 2008 à 18:08:18 | Re : Conditions WHERE dans accés a base de données.

Kristof_Koder

Réponse acceptée !
Résultats totalement cohérent avec le fait que ton champ A est de type Texte !!
en comparaison de type Texte, "2" est supérieur à "101" (car "2" est > à "1", le 1er caractère de la chaine "101").
Le plus simple serait d'avoir un champ A en type numérique

mardi 3 juin 2008 à 09:32:08 | Re : Conditions WHERE dans accés a base de données.

theLionHeart

Réponse acceptée !

Merci pour vos réponses.

J'ai cependant d'autres problèmes...


J'ai tenté de mettre ce champs de la base en numérique (Single), mais désormais mes requêtes n'aboutissent plus. Le débuggage surligne la ligne
DimmyReader As OleDbDataReader = Mycommand.ExecuteReader().

Quand à la somme, il bug sur la ligne
cmbb.Items.Add(myReader.GetString(0))

Ce sont sûrement des erreurs de syntaxe...

 

Pour le moment j'ai contourné le problème en travaillant avec des textes de longueur indentique, mais j'aimerai bien résoudre ce problème avec le numérique... Déjà pour faire plus propre et ensuite pour comprendre ce qui ne vas pas...


mardi 3 juin 2008 à 11:09:03 | Re : Conditions WHERE dans accés a base de données.

theLionHeart

Réponse acceptée !

Concernant la somme, j'ai réussit à la faire fonctionner. Il fallait que j'utilise un ExecuteScalar et non un ExecuteReader.

Dur dur quand on débute, lol.

 

Donc, la somme est correcte. J'ai testé avec le champ A en Integer, Single, Texte, avec et sans nombres à virgules, avec des nombres qui n'ont pas le même nombre de chiffres, et la somme est toujours bonne.

Je pourrais m'en enchanter mais en fait ça ne fait que m'embrouiller encore plus.

 

Pourquoi est-ce qu'une somme fonctionne si une comparaison ne fonctionne pas ?

 

 

Bref, ma question principale reste celle-ci :

Pourquoi le simple fait de passer mon champ de 'Texte' à 'Single' (ou 'Integer') provoque une erreur à la ligner « ExecuteReader » ?

 

 

Merci pour votre aide, je continue à chercher de mon coté et posterai si ça évolue.




Cette discussion est classé dans : base, variable, données, chiffres, var


Répondre à ce message

Sujets en rapport avec ce message

Base de données hcemin variable [ par Bishopmetz ] Est ce qu'il est possible d'inclure une base de données dans le .exe final, cela afin de n'avoir plus qu'un seul fichier ? Base de données [ par simofid ] j´utilise une base de données pour stocker des informationssous forme de texte, numeros, et photos: pour les photos je sauvegarde le chemin : (ex: c:\ transfert de données [ par darwin42 ] Salut,Je voudrais transférer les enregistrements contenus dans une table d'une base Access vers une autre table d'une autre base Access.Est-ce possibl transfère données entre 2 bases access [ par darwin42 ] Salut,je voudrais savoir comment on peut faire pour transférer des enregistrements contenus dans une table d'une base Access vers une autre base Acces vb et Acces [ par tiyan ] salut,je souhaite savoir comment traiter des données lorsqu'elles sont envoyées dans Acces à partir de l'exécutable de mon projet ?en effet j'ai crée Base de données [ par simofid ] J´ai un petit problem dans la gestion de base de donnés manipulant des photo (ajout, supression,..). Recherche dans une base de données [ par stockley81 ] G une base de données qui contient un champs correspondant à une date (jj/mm/aaaa). J'aimerai récupérer (dans un but d'affichage) les données comprise Base de données [ par simofid ] Le probleme que j ai, c est de manipuler une base de donnees avec des photos: enregitrer des photos dans un champs de base de donnees, supprimer.. Insérer des données dans une base access [ par Guiguouz ] Hello,Quel est le code pour inséerer des données dans une base access. En fait je selectionne des données dans une table et je voudrai les insérer dan SQL [ par LordBob ] Salut a tous,voila en fait je voudrai juste une petite information... Voila je voudrai savoir si je pouvais faire la meme chose avec un base de donnée


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.