Comparer élèment d'un textbox avec une BDD access

Résolu
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 25 mars 2008 à 16:40
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 26 mars 2008 à 22:42
bonjour à tous,

voilà j'ai créé un userform sur excel qui posséde un champs "textbox" et un bouton rechercher.
quand je clique sur le bouton, ca récupère la valeur du textbox pour le comparer à la BDD. une fois qu'il parcours la base access il renvoit dans un treeview les élèments équivalents.

mon problème est que lorsque je fais ma requête une erreur apparait :  "trop peu de paramètres" mais je ne vois pas comment arranger celà .

est ce que quelqu'un pourrait m'aider à ce sujet

merci

12 réponses

audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
26 mars 2008 à 22:42
ca tombe bien que tu me dises ca je viens d'utiliser un like dans ma requête au lieu de faire une condition de type mid dans un if et ca marche!!!!
pour ce qui en auront besoin je laisse ma nouvelle requête qui permet de réucpérer dans une BDD les élèments qui ressemble à ce que tappe un utilisateur dans un textview :
Requete6 = "SELECT Install FROM CONSO WHERE Lcase(Install)like '" & chaine & "*'"

chaine étant mon value du textbox.

merci à tous ! bonne soirée
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 16:54
- tu as du commettre une erreur de saisie dans l'orthographe du nom d'un champ. Ce faisant, il pense qu'il s'agit du nom d'un parametre, dont tu as omis de préciser la valeur.

autre possibilité (je pense que tu es dans ce cas):
- tu as omis d'ajouter des ' pour séparer la valeur issue de ton textbox.

SQL = "SELECT * FROM maTable WHERE monChamp='" & Text1.Text & "' "
donnera par exemple:
SELECT * FROM maTable WHERE monChamp='exemple'
0
nerd24 Messages postés 41 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 16:54
OM c pour olympik de marseille kan mem pa
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
25 mars 2008 à 17:02
tout d'abord merci pour ton aide !

ensuite, je  n'ai pas oublié de "", ben il me semble que j'ai écrit comme il faut ma requête :

 Requete = "SELECT Install FROM CONSO WHERE Install=" & chaine & ""
        Set RSCONSO6 = BDDCONSO.OpenRecordset(Requete)

dont "chaine" représente le value de mon textbox.

mon erreur apparait au niveau du set RSCONSO6...

*  pour nerd24 : OM oui mais en même temps c'est parce que des audrey y'en a trop donc fallait bien que je mette un truc!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 17:12
pas de quote dans ton exemple.....
Requete = "SELECT Install FROM CONSO WHERE Install='" & chaine & "' "

il faut ajouter une ' pour séparer la valeur.... là, tu execute:
SELECT Install FROM CONSO WHERE Install=chaine
au lieu de :
SELECT Install FROM CONSO WHERE Install='<chaine>'
ou <chaine> serait le contenu de ta variable chaine

oui, au niveau du OpenRecordset... avant, ta requete n'est que du texte ^^

nerd24 oublie OM, on n'est pas sur meetic ni sur caramail...
0
nerd24 Messages postés 41 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 17:18
a merde j'avais pas vu jme suis trompé de site.jme disé bien ke le sujet dla conversation été bisar
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
25 mars 2008 à 17:25
exacte pour le quote je savais pas.
le seul hic c'est que ca me génère une autre erreur  : "type de données incompatibles dans l'expression du critère" toujours au niveau de mon OpenRecordset.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 mars 2008 à 22:18
Ce serait plus simple si tu mettais tout le bout de code (requête refaite, connexion,...) et expliquer où exactement se produit l'erreur. Si tu passes une chaîne de caractère (textbox) est-ce que le champs est de type texte ou numérique ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2008 à 08:12
apparemment, pas de type Texte, il ne faudra donc pas de quotes...
a voir si on n'a pas une date en face, ou un numérique... (décimal ?)

reste qu'il semble étrange (stupide) de demander a éxtraire uniquement un champ, celui dont on connait la valeur:

SELECT Install FROM CONSO WHERE Install=...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2008 à 08:14
euh... concernant la requete, si, il y a bien une raison possible: compter le nombre de lignes...

jouer en ce cas avec :
SELECT COUNT(0) FROM CONSO WHERE Install=...

ramènera 1 enregistrement de1 nombre entier...
plus léger en mémoire que de ramener un nombre indeterminé de valeurs dans le seul but de les compter
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
26 mars 2008 à 19:14
je suis bête, ca venait bien de ma variable "install" de ma condition where, il me faut bien un quote, c'est moi qui ait fait une étouderie et du coup elle était pas considérée comme chaine mais bien décimal comme tu me l'as si bien dit !!!!
je suis désolée de vous avoir fait perdre votre temps car t'as première proposition était la bonne. là ma requête marche bien!!


une autre question rapide : est ce que c'est possible de comparer le début du mot rentré dans le textbox avec la BDD et renvoyer tous les élèments susceptibles de répondre à la demande. car pour l'instant j'arrive à récupérer mais si le mot est bien orthographié (pas de pb de majuscule ni minuscule ca j'ai trouvé). j'ai essayé avec mid : Mid(LCase(chaine), 1, 3) = Mid(LCase(RSCONSO6!Install), 1, 3) mais ca fonctionne pas correctement si vous avez une idée sinon c'est pas grave !

merci pour tous !! et encore désolée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 mars 2008 à 21:54
Peut-être pourrais-tu regarder du côté de LIKE ?
Tu pourrais l'utiliser avec les "wildcards" comme * pour plusieurs caractères non définis ou ? pour un seul caractère.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous