Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 10h58   #1
Membre régulier
 
Inscription : novembre 2008
Messages : 219
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Suisse

Informations forums :
Inscription : novembre 2008
Messages : 219
Points : 79
Points : 79
Envoyer un message via MSN à Bobble
Par défaut filtre sous-form avec paramètres, erreur 'Too few parameters' sur OpenRecordset

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:

Code :
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
Jusqu'à la ça fonctionne. J'ai mes résultats affichés dans une sous-form Feuille de données.
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:

Code :
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
mais j'ai l'erreur <Too few parameters. Expected 2.> à la ligne Set rsFiltre = rs.OpenRecordset sur rs.OpenRecordset.

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
Bobble est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 14h25   #2
Membre régulier
 
Inscription : novembre 2008
Messages : 219
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Suisse

Informations forums :
Inscription : novembre 2008
Messages : 219
Points : 79
Points : 79
Envoyer un message via MSN à Bobble


j'ai perdu tout ce temps pour découvrir que en mettant le nom des champs de la form dans la requête directement, il les trouve tout seul...donc pas besoin de filtre d'aucun genre.....
Bobble est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web