Je veux exécuter depuis VBA une requête enregistrée utilisant un paramètre.
Voici le texte de ma requête:
SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl
Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse
FROM [Tbl Identité]
WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
d'accueil]![numidentite]))
ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé:
Set Db = CurrentDb
NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3)
Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant:
Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les
archives du newsgroup):
PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute.
Et bien sûr, si j'exécute la requête depuis la fenêtre base de données, elle
fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base la
sélectionne dans une liste de requêtes qui n'est pas fixe.
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
Charles ERNST
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une erreur quelque part
"Gilbert" a écrit dans le message de news: %
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un paramètre. Voici le texte de ma requête: SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse FROM [Tbl Identité] WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé: Set Db = CurrentDb NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3) Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant: Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les archives du newsgroup): PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute. Et bien sûr, si j'exécute la requête depuis la fenêtre base de données, elle fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base la sélectionne dans une liste de requêtes qui n'est pas fixe.
Merci d'avance
Gilbert
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une
erreur quelque part
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
%23H86IHoIGHA.1288@TK2MSFTNGP09.phx.gbl...
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un
paramètre.
Voici le texte de ma requête:
SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl
Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse
FROM [Tbl Identité]
WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
d'accueil]![numidentite]))
ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé:
Set Db = CurrentDb
NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3)
Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant:
Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les
archives du newsgroup):
PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute.
Et bien sûr, si j'exécute la requête depuis la fenêtre base de données,
elle
fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base
la
sélectionne dans une liste de requêtes qui n'est pas fixe.
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une erreur quelque part
"Gilbert" a écrit dans le message de news: %
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un paramètre. Voici le texte de ma requête: SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse FROM [Tbl Identité] WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé: Set Db = CurrentDb NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3) Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant: Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les archives du newsgroup): PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute. Et bien sûr, si j'exécute la requête depuis la fenêtre base de données, elle fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base la sélectionne dans une liste de requêtes qui n'est pas fixe.
Merci d'avance
Gilbert
Gilbert
Merci de votre réponse.
Oui, ma requête fonctionne en mode direct. Ellle fonctionne aussi depuis mon code si j'enlève la clause WHERE.
Pour l'instant j'ai contourné le problème en utilisant la fonction ci-dessous et en remplaçant WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) par WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche d'accueil]![numidentite]"))
mais je trouve ça un peu lourd.
Public Function ValeurControle(FormControl As String) As Variant Dim NomForm As String Dim NomControle As String
If CurrentProject.AllForms(NomForm).IsLoaded Then ValeurControle = Forms(NomForm).Controls(NomControle) End If End If End Function
-- Gilbert
"Charles ERNST" a écrit dans le message de news:
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une erreur quelque part
"Gilbert" a écrit dans le message de news: %
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un paramètre. Voici le texte de ma requête: SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse FROM [Tbl Identité] WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé: Set Db = CurrentDb NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3) Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant: Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les archives du newsgroup): PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute. Et bien sûr, si j'exécute la requête depuis la fenêtre base de données, elle fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base la sélectionne dans une liste de requêtes qui n'est pas fixe.
Merci d'avance
Gilbert
Merci de votre réponse.
Oui, ma requête fonctionne en mode direct.
Ellle fonctionne aussi depuis mon code si j'enlève la clause WHERE.
Pour l'instant j'ai contourné le problème en utilisant la fonction
ci-dessous et en remplaçant
WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
d'accueil]![numidentite]))
par
WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche
d'accueil]![numidentite]"))
mais je trouve ça un peu lourd.
Public Function ValeurControle(FormControl As String) As Variant
Dim NomForm As String
Dim NomControle As String
If CurrentProject.AllForms(NomForm).IsLoaded Then
ValeurControle = Forms(NomForm).Controls(NomControle)
End If
End If
End Function
--
Gilbert
"Charles ERNST" <contact@micro-gestion.fr> a écrit dans le message de news:
eAfwnSsIGHA.3056@TK2MSFTNGP09.phx.gbl...
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une
erreur quelque part
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
%23H86IHoIGHA.1288@TK2MSFTNGP09.phx.gbl...
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un
paramètre.
Voici le texte de ma requête:
SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom,
[Tbl
Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse
FROM [Tbl Identité]
WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
d'accueil]![numidentite]))
ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé:
Set Db = CurrentDb
NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3)
Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant:
Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur
les
archives du newsgroup):
PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute.
Et bien sûr, si j'exécute la requête depuis la fenêtre base de données,
elle
fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base
la
sélectionne dans une liste de requêtes qui n'est pas fixe.
Oui, ma requête fonctionne en mode direct. Ellle fonctionne aussi depuis mon code si j'enlève la clause WHERE.
Pour l'instant j'ai contourné le problème en utilisant la fonction ci-dessous et en remplaçant WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) par WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche d'accueil]![numidentite]"))
mais je trouve ça un peu lourd.
Public Function ValeurControle(FormControl As String) As Variant Dim NomForm As String Dim NomControle As String
If CurrentProject.AllForms(NomForm).IsLoaded Then ValeurControle = Forms(NomForm).Controls(NomControle) End If End If End Function
-- Gilbert
"Charles ERNST" a écrit dans le message de news:
Vérifiez déjà si la requète marche en mode direct. A mon sens il y a une erreur quelque part
"Gilbert" a écrit dans le message de news: %
Bonjour,
Je veux exécuter depuis VBA une requête enregistrée utilisant un paramètre. Voici le texte de ma requête: SELECT DISTINCTROW [Tbl Identité].Numidentite, [Tbl Identité].Nom, [Tbl Identité].Prénom, [Tbl Identité].DateNaissance, [Tbl Identité].Adresse FROM [Tbl Identité] WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche d'accueil]![numidentite])) ORDER BY [Tbl Identité].Nom, [Tbl Identité].Prénom;
et le code utilisé: Set Db = CurrentDb NomRqte = PrefixeRqte & Me.ListeDocuments.Column(3) Set rst = Db.QueryDefs(NomRqte).OpenRecordset
J'obtiens le message suivant: Erreur 3061 Trop peu de paramètres,1 attendu
J'ai ajouté la ligne suivante à ma requête (d'après ce que j'ai lu sur les archives du newsgroup): PARAMETERS [forms]![frm fiche d'accueil]![numidentite] Long;
Je précise que le formulaire est bien ouvert lorsque le code s'exécute. Et bien sûr, si j'exécute la requête depuis la fenêtre base de données, elle fonctionne correctement.
Et je ne peux pas recréer la requête en VBA, car l'utilisateur de la base la sélectionne dans une liste de requêtes qui n'est pas fixe.
Merci d'avance
Gilbert
3stone
Salut,
Si cette "construction" fonctionne, c'est que tu ne sort certainement pas le forms!... de la chaine.
"... WHERE ((([Tbl Identité].Numidentite)=" & [forms]![frm fiche d'accueil]![numidentite]
"Gilbert" | Pour l'instant j'ai contourné le problème en utilisant la fonction | ci-dessous et en remplaçant | WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche | d'accueil]![numidentite])) | par | WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche | d'accueil]![numidentite]")) | | mais je trouve ça un peu lourd. | | | | Public Function ValeurControle(FormControl As String) As Variant | Dim NomForm As String | Dim NomControle As String | | If Left(FormControl, 9) = "[Forms]![" Then | NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10) | NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1, | Len(FormControl) - 1 - InStr(10, FormControl, "[")) | | If CurrentProject.AllForms(NomForm).IsLoaded Then | ValeurControle = Forms(NomForm).Controls(NomControle) | End If | End If | End Function
Salut,
Si cette "construction" fonctionne, c'est que tu ne sort certainement pas
le forms!... de la chaine.
"... WHERE ((([Tbl Identité].Numidentite)=" & [forms]![frm fiche d'accueil]![numidentite]
"Gilbert"
| Pour l'instant j'ai contourné le problème en utilisant la fonction
| ci-dessous et en remplaçant
| WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
| d'accueil]![numidentite]))
| par
| WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche
| d'accueil]![numidentite]"))
|
| mais je trouve ça un peu lourd.
|
|
|
| Public Function ValeurControle(FormControl As String) As Variant
| Dim NomForm As String
| Dim NomControle As String
|
| If Left(FormControl, 9) = "[Forms]![" Then
| NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10)
| NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1,
| Len(FormControl) - 1 - InStr(10, FormControl, "["))
|
| If CurrentProject.AllForms(NomForm).IsLoaded Then
| ValeurControle = Forms(NomForm).Controls(NomControle)
| End If
| End If
| End Function
"Gilbert" | Pour l'instant j'ai contourné le problème en utilisant la fonction | ci-dessous et en remplaçant | WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche | d'accueil]![numidentite])) | par | WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche | d'accueil]![numidentite]")) | | mais je trouve ça un peu lourd. | | | | Public Function ValeurControle(FormControl As String) As Variant | Dim NomForm As String | Dim NomControle As String | | If Left(FormControl, 9) = "[Forms]![" Then | NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10) | NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1, | Len(FormControl) - 1 - InStr(10, FormControl, "[")) | | If CurrentProject.AllForms(NomForm).IsLoaded Then | ValeurControle = Forms(NomForm).Controls(NomControle) | End If | End If | End Function
Gilbert
Bonjour,
Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
-- Gilbert
"3stone" a écrit dans le message de news:
Salut,
Si cette "construction" fonctionne, c'est que tu ne sort certainement pas le forms!... de la chaine.
"... WHERE ((([Tbl Identité].Numidentite)=" & [forms]![frm fiche d'accueil]![numidentite]
"Gilbert" | Pour l'instant j'ai contourné le problème en utilisant la fonction | ci-dessous et en remplaçant | WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche | d'accueil]![numidentite])) | par | WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche | d'accueil]![numidentite]")) | | mais je trouve ça un peu lourd. | | | | Public Function ValeurControle(FormControl As String) As Variant | Dim NomForm As String | Dim NomControle As String | | If Left(FormControl, 9) = "[Forms]![" Then | NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10) | NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1, | Len(FormControl) - 1 - InStr(10, FormControl, "[")) | | If CurrentProject.AllForms(NomForm).IsLoaded Then | ValeurControle = Forms(NomForm).Controls(NomControle) | End If | End If | End Function
Bonjour,
Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
--
Gilbert
"3stone" <3stone_@_skynet_be> a écrit dans le message de news:
Ov0z3pzIGHA.3944@tk2msftngp13.phx.gbl...
Salut,
Si cette "construction" fonctionne, c'est que tu ne sort certainement pas
le forms!... de la chaine.
"... WHERE ((([Tbl Identité].Numidentite)=" & [forms]![frm fiche
d'accueil]![numidentite]
"Gilbert"
| Pour l'instant j'ai contourné le problème en utilisant la fonction
| ci-dessous et en remplaçant
| WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche
| d'accueil]![numidentite]))
| par
| WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche
| d'accueil]![numidentite]"))
|
| mais je trouve ça un peu lourd.
|
|
|
| Public Function ValeurControle(FormControl As String) As Variant
| Dim NomForm As String
| Dim NomControle As String
|
| If Left(FormControl, 9) = "[Forms]![" Then
| NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10)
| NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1,
| Len(FormControl) - 1 - InStr(10, FormControl, "["))
|
| If CurrentProject.AllForms(NomForm).IsLoaded Then
| ValeurControle = Forms(NomForm).Controls(NomControle)
| End If
| End If
| End Function
"Gilbert" | Pour l'instant j'ai contourné le problème en utilisant la fonction | ci-dessous et en remplaçant | WHERE ((([Tbl Identité].Numidentite)=[forms]![frm fiche | d'accueil]![numidentite])) | par | WHERE (([Tbl Identité].Numidentite)=ValeurControle("[forms]![frm fiche | d'accueil]![numidentite]")) | | mais je trouve ça un peu lourd. | | | | Public Function ValeurControle(FormControl As String) As Variant | Dim NomForm As String | Dim NomControle As String | | If Left(FormControl, 9) = "[Forms]![" Then | NomForm = Mid(FormControl, 10, InStr(10, FormControl, "]") - 10) | NomControle = Mid(FormControl, InStr(10, FormControl, "[") + 1, | Len(FormControl) - 1 - InStr(10, FormControl, "[")) | | If CurrentProject.AllForms(NomForm).IsLoaded Then | ValeurControle = Forms(NomForm).Controls(NomControle) | End If | End If | End Function
3stone
re,
"Gilbert" | | Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
et pouquoi uttiliser des fantaisies comme
[forms]![frm fiche d'accueil]![numidentite]
Forms!frmFicheAccueil!NumIdentite
est tout aussi lisible et évite ces problèmes de caractètes folkloriques
Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui parlais en français avec des accents et tout. Mais je ne pense pas que ça influe sur l'exécution de ma requête
-- Gilbert
"3stone" a écrit dans le message de news:
re,
"Gilbert" | | Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
et pouquoi uttiliser des fantaisies comme
[forms]![frm fiche d'accueil]![numidentite]
Forms!frmFicheAccueil!NumIdentite
est tout aussi lisible et évite ces problèmes de caractètes folkloriques
Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui
parlais en français avec des accents et tout.
Mais je ne pense pas que ça influe sur l'exécution de ma requête
--
Gilbert
"3stone" <3stone_@_skynet_be> a écrit dans le message de news:
uagvti0IGHA.2708@tk2msftngp13.phx.gbl...
re,
"Gilbert"
|
| Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
et pouquoi uttiliser des fantaisies comme
[forms]![frm fiche d'accueil]![numidentite]
Forms!frmFicheAccueil!NumIdentite
est tout aussi lisible et évite ces problèmes de caractètes folkloriques
Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui parlais en français avec des accents et tout. Mais je ne pense pas que ça influe sur l'exécution de ma requête
-- Gilbert
"3stone" a écrit dans le message de news:
re,
"Gilbert" | | Ma requête n'est pas créée dans le code, c'est une requête enregistrée.
et pouquoi uttiliser des fantaisies comme
[forms]![frm fiche d'accueil]![numidentite]
Forms!frmFicheAccueil!NumIdentite
est tout aussi lisible et évite ces problèmes de caractètes folkloriques
"Gilbert" | Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui | parlais en français avec des accents et tout. | Mais je ne pense pas que ça influe sur l'exécution de ma requête
Grossière erreur...
Garde ton bon francais pour les libellés et autres jolies étiquettes... Pour le reste, ce n'est qu'embrouille et misère ;-)
"Gilbert"
| Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui
| parlais en français avec des accents et tout.
| Mais je ne pense pas que ça influe sur l'exécution de ma requête
Grossière erreur...
Garde ton bon francais pour les libellés et autres jolies étiquettes...
Pour le reste, ce n'est qu'embrouille et misère ;-)
"Gilbert" | Je suis bien d'accord avec toi, c'était à mes débuts avec Access et je lui | parlais en français avec des accents et tout. | Mais je ne pense pas que ça influe sur l'exécution de ma requête
Grossière erreur...
Garde ton bon francais pour les libellés et autres jolies étiquettes... Pour le reste, ce n'est qu'embrouille et misère ;-)