Requete parametrée sur une partie du nom d'une table
2 réponses
bricol
Bonjour,
est-il possible dans une requête de passer en parametre une partie du nom
d'une table : je m'explique
J'ai différentes tables dont le nom se termine par l'année :
Adhérents2002, adhérents2003 Adhérents2004 et Cotisations2002,
Cotisations2003 Cotisations2004
et bien d'autres tables ou requetes sur la même structure de nom.
Est-il possible de faire une requete paramétrée dont le parametre serait
l'année.
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table
Adhérents ou Cotisations unique mais la base est déja en place et le choix
pour les tables Cotisations vient du fait qu'il y a de nombreuses options
qui changent chaque année.
Je sais parametrer une requete sur un champ mais est-ce possible sur un
partie du nom d'une table.
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple
serait le bien venu.
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
Gafish
Bonjour
bricol wrote:
Bonjour,
est-il possible dans une requête de passer en parametre une partie du nom d'une table : je m'explique
Dans une requête non
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table Adhérents ou Cotisations unique
Oui, ca aurait évité des problèmes de ce genre, est-ce tout de même envisageable de modifier la structure ?
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple serait le bien venu.
Oui, il faut passer par Vba. Un exemple (ne sachant pas s'il s'agit d'un requête action -suppression, ajout, modif- je fais une requête sélection) où je suppose que vous êtes dans un formulaire, avec un champ nommé AnneeCotisation contenant l'année souhaitée :
Dim rstCotisation as recordset Set rstCotisation = CurrentDb.OpenRecordset("SELECT * FROM [Cotisation" & Me.AnneeCotisation & "];") Do While not rstCotisation.EOF
'ici on boucle sur les enregistrements de la table rstCotisation.MoveNext Loop Set rstCotisation = Nothing
Arnaud -- Charte du forum : http://users.skynet.be/mpfa/ Recherche dans les archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour
bricol wrote:
Bonjour,
est-il possible dans une requête de passer en parametre une partie du
nom d'une table : je m'explique
Dans une requête non
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une
table Adhérents ou Cotisations unique
Oui, ca aurait évité des problèmes de ce genre, est-ce tout de même
envisageable de modifier la structure ?
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un
exemple serait le bien venu.
Oui, il faut passer par Vba. Un exemple (ne sachant pas s'il s'agit d'un
requête action -suppression, ajout, modif- je fais une requête sélection) où
je suppose que vous êtes dans un formulaire, avec un champ nommé
AnneeCotisation contenant l'année souhaitée :
Dim rstCotisation as recordset
Set rstCotisation = CurrentDb.OpenRecordset("SELECT * FROM [Cotisation" &
Me.AnneeCotisation & "];")
Do While not rstCotisation.EOF
'ici on boucle sur les enregistrements de la table
rstCotisation.MoveNext
Loop
Set rstCotisation = Nothing
Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
est-il possible dans une requête de passer en parametre une partie du nom d'une table : je m'explique
Dans une requête non
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table Adhérents ou Cotisations unique
Oui, ca aurait évité des problèmes de ce genre, est-ce tout de même envisageable de modifier la structure ?
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple serait le bien venu.
Oui, il faut passer par Vba. Un exemple (ne sachant pas s'il s'agit d'un requête action -suppression, ajout, modif- je fais une requête sélection) où je suppose que vous êtes dans un formulaire, avec un champ nommé AnneeCotisation contenant l'année souhaitée :
Dim rstCotisation as recordset Set rstCotisation = CurrentDb.OpenRecordset("SELECT * FROM [Cotisation" & Me.AnneeCotisation & "];") Do While not rstCotisation.EOF
'ici on boucle sur les enregistrements de la table rstCotisation.MoveNext Loop Set rstCotisation = Nothing
Arnaud -- Charte du forum : http://users.skynet.be/mpfa/ Recherche dans les archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonjour,
En VBA, un truc du genre pour une requête Sélection : Sub zz() On Error GoTo err_requete Dim strSQL As String, reponse As String Dim qry As DAO.QueryDef reponse = InputBox("Année de la table") If Len(reponse) = 0 Then Exit Sub strSQL = "Select * from Cotisations" & reponse & " ;" Set qry = CurrentDb.CreateQueryDef("tmp", strSQL) DoCmd.OpenQuery "tmp" CurrentDb.QueryDefs.Delete "tmp" err_requete: If Err = 3012 Then MsgBox " La Table Cotisations" & reponse & " n'existe pas !" End If Set qry = Nothing End Sub -- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
est-il possible dans une requête de passer en parametre une partie du nom d'une table : je m'explique
J'ai différentes tables dont le nom se termine par l'année : Adhérents2002, adhérents2003 Adhérents2004 et Cotisations2002, Cotisations2003 Cotisations2004 et bien d'autres tables ou requetes sur la même structure de nom. Est-il possible de faire une requete paramétrée dont le parametre serait l'année.
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table Adhérents ou Cotisations unique mais la base est déja en place et le choix pour les tables Cotisations vient du fait qu'il y a de nombreuses options qui changent chaque année.
Je sais parametrer une requete sur un champ mais est-ce possible sur un partie du nom d'une table.
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple serait le bien venu.
Merci
Vincent
Bonjour,
En VBA, un truc du genre pour une requête Sélection :
Sub zz()
On Error GoTo err_requete
Dim strSQL As String, reponse As String
Dim qry As DAO.QueryDef
reponse = InputBox("Année de la table")
If Len(reponse) = 0 Then Exit Sub
strSQL = "Select * from Cotisations" & reponse & " ;"
Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
DoCmd.OpenQuery "tmp"
CurrentDb.QueryDefs.Delete "tmp"
err_requete:
If Err = 3012 Then
MsgBox " La Table Cotisations" & reponse & " n'existe pas !"
End If
Set qry = Nothing
End Sub
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
est-il possible dans une requête de passer en parametre une partie du nom
d'une table : je m'explique
J'ai différentes tables dont le nom se termine par l'année :
Adhérents2002, adhérents2003 Adhérents2004 et Cotisations2002,
Cotisations2003 Cotisations2004
et bien d'autres tables ou requetes sur la même structure de nom.
Est-il possible de faire une requete paramétrée dont le parametre serait
l'année.
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table
Adhérents ou Cotisations unique mais la base est déja en place et le choix
pour les tables Cotisations vient du fait qu'il y a de nombreuses options
qui changent chaque année.
Je sais parametrer une requete sur un champ mais est-ce possible sur un
partie du nom d'une table.
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple
serait le bien venu.
En VBA, un truc du genre pour une requête Sélection : Sub zz() On Error GoTo err_requete Dim strSQL As String, reponse As String Dim qry As DAO.QueryDef reponse = InputBox("Année de la table") If Len(reponse) = 0 Then Exit Sub strSQL = "Select * from Cotisations" & reponse & " ;" Set qry = CurrentDb.CreateQueryDef("tmp", strSQL) DoCmd.OpenQuery "tmp" CurrentDb.QueryDefs.Delete "tmp" err_requete: If Err = 3012 Then MsgBox " La Table Cotisations" & reponse & " n'existe pas !" End If Set qry = Nothing End Sub -- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
est-il possible dans une requête de passer en parametre une partie du nom d'une table : je m'explique
J'ai différentes tables dont le nom se termine par l'année : Adhérents2002, adhérents2003 Adhérents2004 et Cotisations2002, Cotisations2003 Cotisations2004 et bien d'autres tables ou requetes sur la même structure de nom. Est-il possible de faire une requete paramétrée dont le parametre serait l'année.
Je sais que l'idéal aurait été d'avoir un champ année au sein d'une table Adhérents ou Cotisations unique mais la base est déja en place et le choix pour les tables Cotisations vient du fait qu'il y a de nombreuses options qui changent chaque année.
Je sais parametrer une requete sur un champ mais est-ce possible sur un partie du nom d'une table.
Faut-il passer par une concaténation sous VBA. Dans l'affirmative un exemple serait le bien venu.