Création de requêtes de paramètres avec Microsoft Access VBA (Visual Basic for Applications) implique l'utilisation d' objets prédéfinis de l'accès , y compris le QueryDef et des objets de base de données . La chaîne de requête est utilisé avec ces objets est la même que celle utilisée lors de la création de requêtes d'accès sans VBA (par exemple , " SELECT * FROM MaTable WHERE myfield = [ user_entered_parameter ] »). Les choses dont vous aurez besoin
Microsoft Access
Show More Instructions
1
Open Access et créer une table de données d'échantillon en utilisant les lignes suivantes . Entrez le texte de la première ligne comme les noms des champs de la table. Romans
, datesold , mots netsalefurthering , 12/1/2009 , $ mots 5.03furthering , 12/3/2009 , 4.97der $ meisterstringer , 12/5/2009 , 1.97der $ meisterstringer , 12/6/2009 , $ 0,97
2
Enregistrez la table en tant que " livres ", puis entrez le Visual Basic IDE ( Integrated Development Environment ) en appuyant sur "Alt- F11. "
3
Cliquez sur " Insérer ", suivi par" module " sur la barre d'outils de l' IDE, puis collez le code suivant dans la fenêtre de code :
publique sous param_q_select ( ) db As DAO.DatabaseDim qd Comme DAO.QueryDefDim sqry Comme StringSet db = CurrentDbsqry = " select * FROM livres WHERE comme le livre [ Entrez le titre du livre ] " Set qd = db.CreateQueryDef ( " qpSelect », sqry ) End Sub
4
exécutez la macro en plaçant le curseur n'importe où à l'intérieur de ce sous-programme et en appuyant sur la touche "F5 ".
5
retourner à l'accès et fermer la navigation fenêtre à gauche si elle est ouverte . Ré- ouvrir la fenêtre et notez la nouvelle requête stockée (« qpSelect " ) . Double-cliquez sur cette requête à exécuter, et tapez " * fourrure * " à l'invite . Notez les résultats de la requête : seules les lignes avec des " mots favorisant " sont affichés
6
retour à l'IDE en appuyant sur " Alt- F11 » et exécutez la macro en utilisant les instructions de l'étape 4. . Notez le message d'erreur qui apparaît cette fois ( « qpSelect ' objet existe déjà " )
7
réviser le Code afin d'éviter l'erreur en le remplaçant avec ce code: .
Publique sous param_q_select ( ) db As DAO.DatabaseDim qd Comme DAO.QueryDefDim sqry Comme StringSet db = CurrentDbOn Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : sqry = " SELECT * FROM livres WHERE comme le livre [ Entrez le titre du livre ] "Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
8
Re - exécuter le code en utilisant les instructions de l'étape 4. Notez qu'il n'y a pas d'erreur cette fois
9
Réviser la macro de sorte que l'utilisateur de votre programme peuvent choisir les champs pour créer une requête de paramètre à partir de: . Copier le sous-programme de param_q_select complet et le coller dans une zone vierge de la fenêtre de code . Renommez ce double comme param_q_choose_field
10
Remplacez le code du programme existant de param_q_choose_field , entre le " en cas d'erreur ... " et les déclarations " End Sub" . Tapez ou collez ce code à la place :
Dim sfsf = InputBox (" Entrez le nom du champ " ) sqry = " SELECT * FROM livres WHERE" & sf & " comme [ ENTER" & sf et "] " On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
11
Re - exécuter le sous-programme en utilisant les instructions de l'étape 4, tapez " netsale " lorsque le " champ Entrez le nom » apparaît .
12
exécutez la requête créée par le sous-programme en utilisant les instructions étape 5 de l' . Toutefois , entrez " * 0 * " lorsque vous êtes invité pour le paramètre netsale . Appuyez sur "Entrée " et constatent que seules les lignes dont le champ " netsale " contient un "0" ont été retournés.