Bonjour,
je travail avec access 2003, j'ai une table liée depuis SQL Server 2000.
J'ai crée une requête access (CountFromToMctModel) qui demande 2 paramètres de type date (from et to).
Mon but est d'avoir le résultat de cette requête affiché dans une form de type Feuille de données pour que l'utilisateur puisse encore faire des tri ou des filtres.
J'ai alors crée une form principale, car j'aimerais afficher des autres requêtes dans la même form.
Dans cette form j'ai mis 2 champs d'entrée des dates (dtFrom, dtTo), un bouton (SearchDate) qui va afficher ma requête et une sous-form vide (SFList).
Voilà le code de mon bouton:
Jusqu'à la ça fonctionne. J'ai mes résultats affichés dans une sous-form Feuille de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub SearchDate_Click() Dim rs As DAO.Recordset Dim qd As DAO.QueryDef vFrom = Me.dtFrom vTo = Me.dtTo Set db = CurrentDb Set ws = DBEngine.Workspaces(0) Set qd = db.QueryDefs("CountFromToMctModel") qd.Parameters(0) = vFrom qd.Parameters(1) = vTo Set rs = qd.OpenRecordset(DB_OPEN_DYNASET) 'résultats de la requête Me.SFList.SourceObject = "SForm" 'mettre la form "SForm" dans ma sous-foem vide SFList Set Me.SFList.Form.Recordset = rs 'afficher le résultat dans SFList Me.SFList.Visible = True qd.Close End Sub
Le problème est que quand je fais un tri ou un filtre avec l'interface, les 2 paramètres de la requête sont redemandés via les MsgBox automatiques.
Moi j'aimerais que les 2 paramètres soient reprises depuis la form principale.
J'ai donc pensé de récupérer l'événement "Sur filtre appliqué" et de faire moi même le filtre... voilà le code:
mais j'ai l'erreur <Too few parameters. Expected 2.> à la ligne Set rsFiltre = rs.OpenRecordset sur rs.OpenRecordset.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 'in sous-form Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) DoCmd.CancelEvent 'stop the Access filter procedure Dim rsFF As DAO.Recordset Dim rsCopy As DAO.Recordset Dim filter As String Set rsCopy = Me.Form.Recordset 'copy result from form filter = Me.filter 'copy filter Call Form_SEARCH.test(filter, rsCopy) End Sub 'in main-form Public Sub test(ExpFiltre As String, rs As DAO.Recordset) Dim rsFiltre As DAO.Recordset rs.filter = ExpFiltre 'appli filter as rs Set rsFiltre = rs.OpenRecordset 'result of filter in rsFiltre Me.SFList.SourceObject = "SForm" Set Me.SFList.Form.Recordset = rsFiltre Me.SFList.Visible = True End Sub
J'ai modifié le code une centaine de fois...c'est 3 jours que j'essaye et que je cherche...mais pas de nouvelles.
Où est l'erreur dans mon code?
Ou est-ce que ma solution est complètement (conceptuellement) fausse et il faux que je reparte avec d'autres bases?
Merci d'avance pour toute info
Si vous voulez des compléments d'explication demandé seulement svp
Partager