begin process at 2010 03 22 08:09:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Base de données

 > 

ADO.NET

 > 

Conditions WHERE dans accés a base de données.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conditions WHERE dans accés a base de données.

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ée 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 ? imporeté des données se trouvant dans une base de donné [ par houcemziadi ] bonjour tout le monde, je suis débutant avec accès et je veux programmer une routine me permettant de récupérer des données se trouvant dans une base connexion a une base de données [ par manu7607 ] Bonjour à tous, Voilà je dois écrire un petit applicatif en VB qui se connecte a une BDD et va chercher une data. Le problème est que je ne connais p [Excel] Créer une macro avec filtre selon une sélection [ par doudou59200 ] Bonjour, Je suis nouveau et aimerai des renseignements. Je pose tout d'abord le problème Feuille 1 A1 : Variable (1-9) A2 : Variable (V ou F) A3 : V Lecture video [ par Le_Martien ] Bonjour, Jai crée une petite application en vb 2008 express qui gère une divxthèque. J'utilise une base de données access. Je voudrais savoir comment modifier chemin d'accés à la base de données [ par blacktigri ] Bonjour, J'ai écris un petit programme en Visual Basic Express 2008 qui utilise une base de données Access. Je voudrai installer ce petit soft sur un mise à jour impossible entre un dataset et la base de données [ par bonagad ] bonjour les amis, [b][u]une petite description[/u][/b] j'ai créé une form dont j'ai déposé les controles suivants: [*] 1 DataGridView1 [*] 1 Binding Insertion d'extraits videos dans une base de données access [ par JeanDupon90 ] Bonjour, je débute en programmation et j'aimerais savoir s'il est possible d'ajouter un extrait vidéo dans une base de données Access. J'ai crée une a base de données open Office (.odb) sous qt4 [ par djela63 ] Bonjour, je ne sais pas trop comment attaquer ce morceau de code... J'ai attaqué un programme de calculs RDM(mécanique) en C/C++ et une UI en QT4, et base de données supprimer tous les elements d une table [ par frk22 ] Bonjour, je développe un petit soft utilisant une base de données. Mon souci est que j aimerais offrir à l'utilisateur la possibilité de réinitialise


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales