Supposant que tous les champs que l'utilisateur pourrait choisir parmi à chacune de ces tables sont un texte, essai :
strApply = « [ » et strField et « ] = """ et strFilter et """"
Si tous les champs qui pourraient être choisis ne sont pas texte, alors vous allez devoir figurer dehors une manière de déterminer le datatype du champ avant de créer strApply. Vous pourriez employer une fonction comme ce qui suit :
Fonction publique FieldType (TableName comme corde, Fieldname comme corde) comme nombre entier
Faible strSQL comme corde
Faibles rs comme DAO.Recordset
le strSQL = « CHOISISSENT [ » et Fieldname et « ] À PARTIR [ » et TableName et « ] OÙ faux »
le strSQL = remplacent (remplacer (strSQL, « [[ », « ["), « ]] », « ] ")
Placer les rs = le CurrentDb.OpenRecordset (strSQL, le dbfailonerror)
FieldType = rs. Champs (0). Type
rs. Fin
Placer les rs = rien
Finir la fonction
Et faire alors quelque chose comme :
intFieldType = FieldType (strReport, strField)
CHOISIR l'intFieldType de cas
Enfermer le dbBigInt, dbBoolean, dbByte, cbCurrency, dbDecimal, dbDouble, dbFload, dbInteger, dbLong, dbNumeric
strApply = « [ » et strField et « ] = » et strFilter
Cas dbChar, cbText, dbMemo
strApply = « [ » et strField et « ] = """ et strFilter et """"
dbDate de cas, dbTime
strApply = « [ » et strField et « ] = # » et strFilter et « # »
Cas autrement
msgbox « type de données inattendu = » et intFieldType
'Celui-ci devrait inclure toutes les valeurs
strApply = ""
Extrémité choisie
me.subReport.Report.Filter = strApply
me.subReport.Report.FilterOn = (strApply <> "")