begin process at 2012 02 17 02:06:49
  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

lecture de base de données [ par xenarius ] Bonjour Je viens de créer une base de données contenant deux colonnes: la définition des données et leur variable. Je souhaite réaliser une form avec 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 ? remplir combobox à partir d'une base de données access [ par germany1970 ] Bonjour, je veux remplir un combobox d'un champ spécifique à partir d'une base de données access. alors j'ai une base de données STOCK avec un table base de données gestion parc automobile [ par sadokb ] bonjour , je suis en train de faire une application gestion parc automobile , est ce que je peux trouver un exemple base des données sous oracle ou so vb.net et base de données acces et as400 [ par sarrenza ] bnjr, j'ai une base de données access dans un serveur as/400... je creé un application pour manipuler les information qui sont dans cette base de doon création de base des données [ par locedric ] je n'arrive pas à créer une BDD sur le sql server compatible à Windows seven que j'ai crée. Voici donc le message qui s'affiche lorsque je fais la cré importer un fichier Excel en une base de données access en utilisant C# [ par mlouiza ] comment faire pour importer un fichier Excel en une base de données access en utilisant C# aide svp[^^sad1] [^^etc1] probléme de BD Access pr une Application VB.NET [ par medamiine ] SVP je suis entrain de crée une application de Gestion d'une bibliothéque en VB.NET & une Base de Données Access(.mdb) . ( IDE: Visual Studio 2005 Cryptage base de données [ par lionyz ] Bonjour, J'ai créé une base de données DAO avec l'instruction Set Madb = CreateDatabase(NomBase, dbLangGeneral, dbEncrypt) Après plusieure éssais je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 4,321 sec (3)

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