OVH Cloud OVH Cloud

Requete parametrée sur une partie du nom d'une table

2 réponses
Avatar
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.

Merci

Vincent

2 réponses

Avatar
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

Avatar
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