begin process at 2012 02 12 16:20:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

problème de requète sql avec la fonction where


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

problème de requète sql avec la fonction where

mardi 20 février 2007 à 15:27:35 | problème de requète sql avec la fonction where

ti_flo

Bonjour à tous.
    Je viens vous voir car j'ai un léger souci de requête SQL en utilisant la fonction where. Je vous expose mon problème. J'effectue une connexion à une base de donnée MYSQL avec VB6, en utilisant ODBC. Jusqu'à là, aucun problème. J'effectue des requêtes simples du genre :

    If requête("select distinct nomclasse from classe;", rs) Then
    ......
    ......
    ......
ici aucun soucis tout fonctionne parfaitement.
    Le problème se corse quand j'augmente l'importance de mes requêtes et que j'y inclus une fonction Where, du genre :
    If requête("SELECT nom, prenom FROM utilisateur, classe WHERE utilisateur.iduser = classe.iduser AND nomclasse='" & id_classe & "';", rs) Then
    ......
    ......
    ......
la j'obtient l'erreur suivante quand je lance l'application :

 [mysql][ODBC 3.51 driver][mysqld-4.1.9-max] erreur de syntaxe près de '1TSI1"' à la ligne 1.

    J'ai donc essayer de remplacer '" & id_classe & "' par '1TSI1' mais j'obtient exactement la même erreur.
De plus j'ai testé la requête SQL dans MYSQL grâce à EasyPHP et elle fonctionne.
    Donc je ne comprends pas du tout d'où peut venir le problème, j'ai cherché sur ce forum et j'ai trouvé quelqu'un qui avait le même problème que moi;

http://www.vbfrance.com/infomsg_PB-REQUETE-MYSQL-AVEC-VB-NET_658740.aspx

Mais c'était un problème avec les # des dates donc ne m'aide pas. J'ai aussi essayer de savoir si cela venais de la jointure mais sa ne semble pas être le cas.
    Donc voila je ne sais vraiment pas comment me sortir de ce problème c'est pourquoi je fais appel à votre aide pour réussir à m'en sortir. J'aimerais pouvoir bénéficié d'explication de votre part.
    Je vous remercie d'avance et vous souhaite une bonne journée.

PS: le message prend la valeur du nom de la classe selectionné, ici j'ai pris 1TSI1 comme exemple.

Ti_flo

 

mardi 20 février 2007 à 20:37:39 | Re : problème de requète sql avec la fonction where

jack

Administrateur CodeS-SourceS
Salut
Déjà, on découvre ta ligne de commande qui fait appel à une fonction personnelle nommée "requête".
On suppose que cette fonction te renvoie True (mais pourquoi ?)
Qu'y a t-il dans cette fonction ?
Ton exemple avec "1TSI1" est-il représentatif ?
Analyse bien le vrai message d'erreur : N'y aurait-il pas un ' qui se balade quand ce texte ?
Car dans ce cas, oui, la requête provoque une erreur de syntaxe puisque le nombre de ' est impair.
(Peut-être idem pour le " )

D'autre part, tu spécifies plusieurs tables dans ta requête : Or, les noms des champs ne précisent pas depuis quelle table extraire le champ.
S'il n'y a pas de champ qui porte le même nom dans ces diverses tables, pas de soucis. Mais si le champ "nomclasse" (exemple) existe dans plusieurs tables, SQL ne sait pas choisir.
Donc, devant chaque champ, précise bien le nom de la table d'où tu l'extraies, exemple :
"SELECT utilisateur.nom, utilisateur.prenom " & _
"  FROM utilisateur, classe " & _
" WHERE utilisateur.iduser = classe.iduser " & _ 
"   AND classe.nomclasse = '" & id_classe & "';"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
mardi 20 février 2007 à 20:39:25 | Re : problème de requète sql avec la fonction where

jack

Administrateur CodeS-SourceS
PS : Et on suppose aussi que le terme 'id_classe' correspond à une variable ou un objet dans ton appli VB
Tu l'as mis entre " donc il appartient au monde VB et pas SQL ...
mardi 20 février 2007 à 22:39:17 | Re : problème de requète sql avec la fonction where

ti_flo

Bonsoir à toi jack.
    Tout d'abord pour ce qui est de la variable id_classe elle prend la valeur qui se trouve dans la combo liste :
Private Sub cmb_classe_Click()
id_classe = cmb_classe.Text

    Pour la fonction requête elle me renvoie bien true, elle me permet de vérifier si la connexion est établie et de vérifié que je parcours tout les enregistrements de la base.

    Pour l'exemple avec 1TSI1 est bien représentatif, je m'explique. Dans un combo liste j'ai les noms des classes d'un lycée; 1TSI1, 1TSI2 ...
quand je clic sur l'un de ces noms la variable id_classe prend immédiatement la valeurs de la classe choisie (en chaîne de caractère).

    Dans ma requête, à l'endroit du where si je n'utiliserait pas ma variable classe mais directement un nom de classe la syntaxe serait :
where  nomclasse='1TSI1'; avec la fonction je dois utiliser la concaténation ce qui me fait where nomclasse = '" & id_classe & "';

    Sinon je n'est pas besoin de fixer mes champs dans le select car ils ne se trouve pas dans classe et dans utilisateur donc il n'y a pas répétition.

    Ce que je comprend vraiment pas, c'est pourquoi une requête simple fonctionne mais que si je met un where sa foire, je ne pense pas que cela puisse venir de fonction requête, je ne vois pas pourquoi car sa marche avec une requête simple. Pour l'erreur de syntaxe je ne vois vraiment pas au niveau de ma requête

mardi 20 février 2007 à 23:01:11 | Re : problème de requète sql avec la fonction where

MPi

As-tu la possibilité de tester ton code sur une autre machine ?

Je m'explique...
Au bureau, j'avais commencé à développer une application avec ADO (fichiers Excel et fichiers texte) et lorsque je mettais une clause Where, ça ne fonctionnait pas. J'ai essayé toutes sortes de méthodes (OLE, ODBC) et le Where ne fonctionnait jamais.
Après quelques jours, j'ai essayé mon code chez moi et ça fonctionnait très bien. Je l'ai essayé sur différent PC au bureau et ça fonctionnait très bien...

J'ai demandé au technicien de réparer le tout... On a réinstallé MDAC et divers autres "patchs" mais ça n'a jamais réglé le problème... J'en suis toujours au même niveau et le where ne fonctionne toujours pas sur cette machine (???)

Je n'ai donc aucune explication à te donner, seulement mon expérience ...

MPi
mercredi 21 février 2007 à 01:44:12 | Re : problème de requète sql avec la fonction where

ti_flo

Bonsoir MPI, quand tu dis que sa ne fonctionnait pas au bureau, tu avais un message d'erreur ? Si oui de quel genre ?
je vais essayer dans la journée pour voir si cela fonctionne, merci du conseil.
je vous redirais ça demain.
merci et bonne nuit.
mercredi 21 février 2007 à 03:34:49 | Re : problème de requète sql avec la fonction where

MPi

Je ne me rappelle pas du message d'erreur s'il y en avait un...
Je pourrais essayer à nouveau et voir, mais ça n'ira pas avant Jeudi

MPi
mercredi 21 février 2007 à 10:39:27 | Re : problème de requète sql avec la fonction where

ti_flo

Bonjour tous le monde.
Bon après avoir essayer sur une autre machine j'obtient toujours le même message d'erreur :
[mysql][ODBC 3.51 driver][mysqld-4.1.9-max] erreur de syntaxe près de '1TSI1"' à la ligne 1.
je vais voir avec ma version EasyPHP car j'ai aperçu mysql 4.1.9 max, le problème vient peut-être de ma base elle même.
Je dois dire que je commence à perdre espoir :'(.
Bonne journée

Amicalement Ti_flo

mercredi 21 février 2007 à 12:34:32 | Re : problème de requète sql avec la fonction where

MPi

Peut-être que l'erreur provient de ta Function requête()
Si tu ne mets pas de Where, tu n'as que 2 guillemets, en mettant le where, tu te retrouves avec plusieurs, en plus des apostrophes.

Es-tu certain que ta Function gère bien ce genre de paramètre ?
As-tu essayé en affectant ta requête SQL à une variable String et passer celle-ci en paramètre plutôt que de passer le texte en dur ?

MPi
mercredi 21 février 2007 à 12:42:14 | Re : problème de requète sql avec la fonction where

ti_flo

Réponse acceptée !

C'est bon j'ai réussi à trouver la réponse.
    J'explique ici mon erreur, ça pourra toujours aider quelqu'un qui aura commise la même erreur que moi.
La requête suivante est dans sa syntaxe bonne :

If requête("SELECT nom, prenom FROM utilisateur, classe WHERE utilisateur.iduser = classe.iduser AND nomclasse='" & id_classe & "';", rs) Then

    En fait mon erreur résidait comme l'avait souligné jack se trouvait belle et bien dans ma fonction requête. Après avoir lu divers message sur la fonction replace je l'avais utiliser dans ma fonction requête (pour éviter d'avoir à la répéter), et la ce matin je décide de la supprimer entièrement pour voir si elle fonctionne sans la variable replace... et la réponse est oui tout fonctionne.
    Bon j'avoue j'ai encor quelques soucis dans mon programme (pas des messages d'erreur, mais j'obtient pas le résultat escompter).


Merci pour votre aide jack et MPI et bonne journée à vous.

Amicalement Ti_flo (sa fonctionne enfin ^^)


1 2

Cette discussion est classée dans : problème, fonction, sql, classe, where


Répondre à ce message

Sujets en rapport avec ce message

Fonctions PL/SQL avec VB.NET [ par Jojo092 ] Bonjour, j'ai un souci avec la communication d'une fonction PL/SQL et VB.NET. En fait, je suis en train de reprendre un programme qui a été développé [Catégorie modifiée .Net --> VBA] Problème avec la fonction Hidden [ par lillyes ] Bonjour à tous ! Un fois de plus j'ai besoin de vos conseils éclairés ! J'ai créé une base de données, ou les données sont regroupées par thèmes. Af Problème avec la fonction « call ». [ par raphaeldiaz ] SITUATION : Sur un worksheet de mon classeur (ThisWorkbook ou un autre), j’utilise cette macro qui me permet de vérifier la présence de la référence : Problème avec des dates [ par bu36 ] Bonjour à tous, Je suis nouveau sur le forum et j'ai besoin d'aide dans le cadre de la création d'une base de données de cadencier de commandes. Ma problème avec requête sur plusieurs champ [ par ndaseraphin ] bonjour, S'il vous je veux de l'aide. voici mon problème: J'ai fais une requête sur plusieurs champs: Private Sub CmbAgent_Click() 'On Error Resume N problème fonction [ par blooxy ] Bonjour! Je débute en VBA et je souhaiterais utiliser une fonction trouvé sur le web. Le problème est quelle me revoit la valeur 0, ce qui est inexac Problème avec la fonction replace [ par clements42 ] bonjour, voici mon problème : j'importe le contenu d'un fichier texte dans excel. les nombres décimaux présents utilisent la virgule. je souhaite in vba fonction classe static [ par forX ] je voulais savoir comment faire une classe avec des fonctions static sur vba en c# c simple [code=cs]public class demo { public static int Number Remplacer Cdate par fonction SQL Server [ par js8bleu ] Bonjour, je voudrai faire une comparaison entre une date récupérée à partir d'une table (dateinscription from tableinscription) et un textbox contena VBA et fonction Call: problème... [ par flostralian ] Bonjour à tous, Après de longues recherches sur les forums, je n'ai pas trouvé la réponse à mon problème. Le code a été validé mais après avoir raj


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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

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