Erstellen Parameterabfragen mit Microsoft Access VBA (Visual Basic for Applications) beinhaltet die Verwendung von Access die vordefinierten Objekte , einschließlich der QueryDef und Datenbank -Objekte. Der Abfrage-String mit diesen Objekten ist die gleiche , die beim Erstellen Access-Abfragen ohne VBA (zB " SELECT * FROM MyTable WHERE myfield = [ user_entered_parameter ]"). Was Sie brauchen
Microsoft Access
anzeigen Weitere Anweisungen
1
Open Access und erstellen Sie eine Tabelle mit Beispieldaten mit den folgenden Zeilen . Geben Sie die erste Zeile des Textes wie der Tabelle Feldnamen .
Buch , Verkaufsdatum , netsalefurthering Worten 12/1/2009 , $ 5.03furthering Worten 12/3/2009 , $ 4.97der meisterstringer , 12/5/2009 , $ 1.97der meisterstringer , 12/6/2009 , $ 0,97
2
Speichern Sie die Tabelle als " Bücher", geben Sie dann den Visual Basic -IDE (Integrated Development Environment) durch Drücken der " Alt- F11 . "
3
Klicken Sie auf" einfügen ", gefolgt von " Module " auf dem IDE- Symbolleiste , dann fügen Sie den folgenden Code in das Code-Fenster:
öffentlichen Sub param_q_select () Dim db Wie DAO.DatabaseDim qd Wie DAO.QueryDefDim sqry Wie StringSet db = CurrentDbsqry = "select * FROM WHERE Bücher Buch gefallen [Enter Buchtitel ]" Set qd = db.CreateQueryDef ( " qpSelect " sqry ) End Sub
4
Führen Sie das Makro , indem Sie den Cursor irgendwo innerhalb dieser Subroutine und Drücken der Taste " F5 ".
5
Zurück zu Access und schließen Sie die Navigation Fenster auf der linken Seite , wenn es geöffnet ist . Erneut das Fenster öffnen und beachten Sie die neue , gespeicherte Abfrage ( " qpSelect " ) . Doppelklicken Sie auf diese Abfrage , um sie auszuführen , und geben Sie " * Pelz * " an der Eingabeaufforderung . Beachten Sie die Abfrage-Ergebnisse : . Nur die Zeilen mit " Förderung Worte"
6
zurück zur IDE , indem gezeigt "Alt -F11 ", und führen Sie das Makro mit Schritt 4 der Anleitung . Beachten Sie den Fehler, der dieses Mal ( " Object ' qpSelect ' ist bereits vorhanden " )
7
Überarbeiten Sie den Code , um den Fehler , indem Sie es mit diesem Code zu verhindern erscheint .
Öffentlichen Sub param_q_select () Dim db Wie DAO.DatabaseDim qd Wie DAO.QueryDefDim sqry Wie StringSet db = CurrentDbOn Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : sqry = "select * FROM WHERE Bücher Buch gefallen [Enter Buchtitel ] " Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
8
Re -Run den Code mit Schritt 4 der Anleitung . Beachten Sie, dass es keinen Fehler diesmal
9
Überarbeiten Sie das Makro , so dass dem Benutzer Ihres Programms wählen , welches Feld eine Parameter-Abfrage aus zu erstellen: . Kopieren Sie die volle param_q_select Unterprogramm und fügen Sie ihn in einen leeren Bereich der Code-Fenster . Benennen Sie diese duplizieren param_q_choose_field
10
Ersetzen Sie den vorhandenen Programmcode param_q_choose_field , zwischen der " on error ..." und " End Sub " Aussagen . Geben oder fügen Sie diesen Code statt :
Dim sfsf = InputBox ("Geben Sie Feldname " ) sqry = "select * FROM Bücher WHERE" & sf & " mag [Enter " & sf & "] " On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
11
Re - führen Sie das Unterprogramm mit Schritt 4 die Anweisungen , und geben Sie " netsale ", wenn die "Enter field name" Eingabeaufforderung angezeigt .
12
Führen Sie die Abfrage durch das Unterprogramm mit Schritt 5 der Anleitung erstellt . Allerdings , geben Sie " * 0 * ", wenn für die netsale Parameter aufgefordert . Drücken Sie "Enter" und feststellen, dass nur die Zeilen , deren " netsale "-Feld enthält eine "0" zurückgegeben wurden.