Erreur dans l'exécution d'une requête en Visual Basic
2 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <mkrait@club-internet.fr> a écrit dans le message de
news:41149fcf$0$308$7a628cd7@news.club-internet.fr...
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.
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
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
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.
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.