Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur dans l'exécution d'une requête en Visual Basic

2 réponses
Avatar
Maurice KRAIT
Bonjour,

Dans mon application sous Access 97, je voudrais traiter une requête
en Visual Basic.
La requête créée dans Access contient un critère sur le champ Ville .
Si le critère est une chaine de caractères, par exemple "VILLE2", la
requête fonctionne correctement, aussi bien en exécutant la requête dans
Access qu'en l'éxécutant dans un module Access; par contre si le critère
est la comparaison avec le contenu d'un contrôle texte d'un formulaire
ouvert, par exemple Forms![FMEMBRES]![TVIL] qui contient la chaîne
"VILLE2", la requête fonctionne correctement quand on l'exécute dans
Access, par contre, un message d'erreur est produit quand on l'exécute
en Visual Basic " Erreur d'éxécution 3061 . Trop peu de paramètres. 1
attendu"

Voici le code de la requête Sélection REQMEM dans le premier cas :
SELECT MEMBRES.Noms, MEMBRES.Prénom, MEMBRES.Ville
FROM MEMBRES
WHERE (((MEMBRES.Ville)="VILLE2"));

et dans le deuxième cas :
SELECT MEMBRES.Noms, MEMBRES.Prénom, MEMBRES.Ville FROM MEMBRES
WHERE (((MEMBRES.Ville)=[Forms]![FMEMBRES]![TVIL]));

MEMBRES est une table et FMEMBRES le formulaire basé sur cette table,
TVIL un contrôle texte de ce formulaire.

Voici le code du module qui exécute la requête :

Dim DBx As Database
Dim RQ As QueryDef
Dim RS As Recordset
Set DBx = CurrentDb
Set RQ = DBx.QueryDefs("REQMEM") ' requête à executer
Set RS = RQ.OpenRecordset(dbOpenSnapshot) ' Analyse du
résultat de la requête:
C'est cette dernière ligne qui provoque le message d'erreur ci-dessus
dans le deuxième cas.

Quelqu'un pourrait-il me dire s'il ya une erreur dans mon code et
comment résoudre le problème.

Merci d'avance

Maurice

2 réponses

Avatar
Raymond [mvp]
Bonjour.

Tu trouveras des idées pour exécuter les requêtes paramétrées sur la page :
http://access.vba.free.fr/execution_standard.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice KRAIT" a écrit dans le message de
news:41149fcf$0$308$
Bonjour,

Dans mon application sous Access 97, je voudrais traiter une requête
en Visual Basic.
La requête créée dans Access contient un critère sur le champ Ville .
Si le critère est une chaine de caractères, par exemple "VILLE2", la
requête fonctionne correctement, aussi bien en exécutant la requête dans
Access qu'en l'éxécutant dans un module Access; par contre si le critère
est la comparaison avec le contenu d'un contrôle texte d'un formulaire
ouvert, par exemple Forms![FMEMBRES]![TVIL] qui contient la chaîne
"VILLE2", la requête fonctionne correctement quand on l'exécute dans
Access, par contre, un message d'erreur est produit quand on l'exécute
en Visual Basic " Erreur d'éxécution 3061 . Trop peu de paramètres. 1
attendu"

Voici le code de la requête Sélection REQMEM dans le premier cas :
SELECT MEMBRES.Noms, MEMBRES.Prénom, MEMBRES.Ville
FROM MEMBRES
WHERE (((MEMBRES.Ville)="VILLE2"));

et dans le deuxième cas :
SELECT MEMBRES.Noms, MEMBRES.Prénom, MEMBRES.Ville FROM MEMBRES
WHERE (((MEMBRES.Ville)=[Forms]![FMEMBRES]![TVIL]));

MEMBRES est une table et FMEMBRES le formulaire basé sur cette table,
TVIL un contrôle texte de ce formulaire.

Voici le code du module qui exécute la requête :

Dim DBx As Database
Dim RQ As QueryDef
Dim RS As Recordset
Set DBx = CurrentDb
Set RQ = DBx.QueryDefs("REQMEM") ' requête à executer
Set RS = RQ.OpenRecordset(dbOpenSnapshot) ' Analyse du
résultat de la requête:
C'est cette dernière ligne qui provoque le message d'erreur ci-dessus
dans le deuxième cas.

Quelqu'un pourrait-il me dire s'il ya une erreur dans mon code et
comment résoudre le problème.

Merci d'avance

Maurice




Avatar
Maurice KRAIT
Raymond [mvp] a écrit:

Bonjour.

Tu trouveras des idées pour exécuter les requêtes paramétrées sur la page :
http://access.vba.free.fr/execution_standard.htm




Merci beaucoup pour ta réponse.
Je ne pensais pas qu'il fallait déclarer des paramètres puisque le code
SQL fournit déjà toutes les informations dans la clause WHERE; sur ce
point je n'ai rien trouvé dans l'aide enligne.

Maurice