Einführung
Microsoft Access enthält eine Reihe von Funktionen, mit denen Datenbankentwickler Dateneingabeformulare, Berichte und Abfragen erstellen können, die Benutzer beim Abfragen vorhandener Daten in der Datenbank und beim Eingeben neuer Daten anleiten können. Verschiedene Tools zur Erstellung von Abfragen und Assistenten vereinfachen diesen Entwicklungsprozess. Auch bei diesen Tools kann es jedoch Situationen geben, in denen der Entwickler noch mehr Funktionalität hinzufügen möchte, die nicht bereits von den MS Access-Entwicklungstools bereitgestellt wird. Beispielsweise möchte der Entwickler fehlerhafte Daten automatisch korrigieren, bevor sie in der Datenbank gespeichert werden, eine Warnung anzeigen, wenn eine Geschäftsregel verletzt wird, dem Benutzer helfen, von einem Dateneingabeformular zum anderen zu navigieren, oder einen Bericht mit einigen benutzerdefinierten Filtern starten. Eine solche Anpassung kann durch Hinzufügen von Code mithilfe der Programmiersprache Visual Basic für Applikationen erreicht werden.
Visual Basic for Applications (VBA) ist die Programmiersprache, die in der Microsoft Office-Familie von Softwareprodukten wie Excel und Access verwendet wird. Die VBA-Sprache ist von der 1964 erfundenen „Basic“-Sprache abgeleitet, die in den 1970er Jahren auf PCs populär wurde. Der „visuelle“ Teil des Namens wurde von Microsoft hinzugefügt, um die Verwendung der Programmiersprache Basic in Microsoft Windows widerzuspiegeln.
Es gibt viele Tutorials, die in die grundlegende Programmierung einführen. Dieses Tutorial konzentriert sich auf eine kleine Teilmenge von Funktionen der VBA-Sprache, wie sie in MS Access verwendet wird.
Inhalt
- Ereignisse in Microsoft Access
- VBA-Codebeispiel:Sicherstellen, dass Namen korrekt geschrieben sind
- Die VBA-Sprache – Deklarieren und Zuweisen von Variablen, bedingten Anweisungen und Kommentaren
- Die VBA-Sprache – Funktionen, Methoden und Beispiele
- Die VBA-Sprache – Eigenschaften
- VBA-Codierungsübungen
- Behandlung von Fehlern in VBA
- Benutzerdefinierte SQL-Abfragen in VBA ausführen
Auf der nächsten Seite werden Ereignisse in Microsoft Access vorgestellt.
Ereignisse in Microsoft Access
In Access wird VBA-Programmiercode an Formulare und Berichte angehängt und kann so eingerichtet werden, dass er zu einem bestimmten Zeitpunkt oder als Reaktion auf ein bestimmtes Ereignis ausgeführt wird. Dieser Programmierstil wird manchmal als „ereignisbasierte“ Programmierung bezeichnet, was bedeutet, dass der Code, den der Entwickler schreibt, als Reaktion auf ein Ereignis ausgeführt wird .
Wenn ein Formular in der Formularansicht angezeigt wird, fragt es im Allgemeinen alle vorhandenen Daten aus den zugrunde liegenden Tabellen ab und sitzt dann einfach untätig da, bis der Benutzer etwas tut. Beispielsweise könnte der Benutzer auf eine der Navigationsschaltflächen klicken, um zum nächsten Datensatz zu wechseln, er könnte in ein Textfeld klicken und mit der Eingabe neuer Daten beginnen, oder er könnte auf die Schaltfläche „Schließen“ klicken, um das Formular zu schließen. Jede dieser Aktionen führt zu einem Ereignis im Formular passiert. Jeder Mausklick oder Tastaturanschlag wird als Ereignis behandelt.
Meistens haben Ereignisse ein Standardverhalten. Durch Klicken auf die Navigationsschaltfläche „nächster Datensatz“ springt das Formular zum nächsten Datensatz. Wenn Sie den Buchstaben „C“ eingeben, während sich der Cursor in einem Textfeld befindet, wird der Buchstabe „C“ im Textfeld angezeigt. Durch Drücken der TAB-TASTE springt der Cursor zum nächsten Textfeld (oder Steuerelement) im Formular und so weiter. Ein Programmierer kann dieses Standardverhalten überschreiben oder erweitern und seinen eigenen Code einfügen, der als Reaktion auf das Ereignis ausgeführt wird.
Die VBA-Programmierung für Zugriffsformulare und -berichte konzentriert sich hauptsächlich auf das Schreiben von Code, um auf verschiedene Ereignisse zu reagieren.
Bevor Sie in die Details von Ereignissen eintauchen, kann es lehrreich sein, ein einfaches Beispiel zu implementieren. Um Code in Aktion zu sehen, bietet der nächste Abschnitt dieses Tutorials eine Anleitung zum Hinzufügen von VBA-Code zu einem Dateneingabeformular.
VBA-Codebeispiel:Sicherstellen, dass Namen korrekt geschrieben sind
Was folgt, ist ein relativ kurzes und einfaches Beispiel für das Hinzufügen von VBA-Code zu einem Dateneingabeformular in MS Access. Einige Einzelheiten werden der Kürze halber übersprungen. Nach diesem Beispiel wird der Rest dieses Tutorials diese Details ausfüllen.
In diesem Beispiel wird der Kunde verwendet Dateneingabeformular, das im Lernprogramm „Erweiterte MS Access-Formulare“ angepasst wurde. Vielleicht möchten Sie dieses Tutorial (oder zumindest die Teile, die sich mit dem Kundendaten-Eingabeformular befassen) abschließen, bevor Sie fortfahren.
Bei der Eingabe neuer Kundeninformationen möchten wir sicherstellen, dass die Namen der Kunden in „richtiger Groß- und Kleinschreibung“ eingegeben werden. Das heißt, der erste Buchstabe des Namens sollte ein Großbuchstabe sein und der Rest des Namens sollte klein geschrieben sein. Wenn der Benutzer „Joe“ eingibt, möchten wir, dass das Formular dies automatisch in die richtige Groß-/Kleinschreibung korrigiert:„Joe“.
In Bezug auf Ereignisse fügen wir Code hinzu, der mit dem Ereignis „Nach Aktualisierung“ für das Feld „Vorname“ im Kundenformular verbunden ist. Das bedeutet nach etwas wurde geändert (aktualisiert ) im Feld First Name wird das Ereignis After Update ausgelöst und dann wird der Code, den wir schreiben werden, in Aktion treten, um sicherzustellen, dass der eingegebene Name in die richtige Groß- und Kleinschreibung umgewandelt wird.
Die folgenden Schritte setzen diesen Code ein.
- Öffnen Sie den Kundendateneintrag für im Designmodus.
- Klicken Sie mit der rechten Maustaste auf Vorname Textfeld und wählen Sie Eigenschaften aus aus dem Popup-Menü.
- Wenn das Eigenschaftenblatt angezeigt wird, klicken Sie auf die Registerkarte Ereignis. Dies ist in der folgenden Abbildung dargestellt:
Beachten Sie die Liste der angezeigten Ereignisse. Jeder kann so programmiert werden, dass er auf das spezifische Ereignis reagiert, das mit FirstName passiert Textfeld.
- Erstellen Sie einen neuen Event-Handler, indem Sie auf die drei Punkte rechts neben dem After Update-Event klicken.
- Der Choose Builder Fenster erscheint. Wählen Sie Code Builder aus und klicken Sie dann auf OK Taste.
- Das VBA-Code-Bearbeitungsfenster wird angezeigt. Beachten Sie, dass Access bereits den Subroutinen-Stub erstellt hat, der mit den Worten Private Sub beginnt und mit den Worten End Sub endet.
Der Name der Subroutine wird aus dem Namen des Formularsteuerelements (FirstName) und dem Namen des erstellt Ereignis, auf das diese Subroutine antwortet (AfterUpdate).In der Zeile End Sub endet diese spezielle Subroutine.
- Fügen Sie den folgenden Code in die leere Zeile zwischen Private Sub und End Sub. ein:
FirstName = StrConv(FirstName, vbProperCase)
Nach Abschluss sieht der Code wie folgt aus:
Diese neue Codezeile bewirkt Folgendes:
StrConv ist eine Funktion, die den Inhalt des Textfelds FirstName aufnimmt und ihn gemäß dem zweiten angegebenen Parameter konvertiert, der in diesem Beispiel vbProperCase ist. Nachdem diese Konvertierung abgeschlossen ist, wird das Ergebnis (unter Verwendung des Gleichheitszeichens) wieder dem Textfeld FirstName zugewiesen. Dadurch wird alles überschrieben, was sich derzeit im Textfeld FirstName befindet. Diese Funktion nimmt beispielsweise „sally“, wandelt es in „Sally“ um und fügt dann „Sally“ in das Textfeld FirstName ein.
- Speichern Sie diesen neuen Code, indem Sie die Datei herunterziehen Menü und wählen Sie Speichern .
- Testen Sie den neuen Code. Wechseln Sie zurück zum Bildschirm des Microsoft Access-Designmodus. Ändern Sie die Ansicht in die Formularansicht.
- Navigieren Sie zu einem leeren Datensatz. Klicken Sie auf das Feld Vorname und geben Sie einen Namen in Kleinbuchstaben ein:
- Drücken Sie die Tabulatortaste Taste, um zum nächsten Textfeld zu wechseln. Joes Name sollte wie unten gezeigt in „Joe“ geändert werden:
- Wenn Sie eine Fehlermeldung erhalten, wechseln Sie zurück zum VBA-Code-Editor und vergewissern Sie sich, dass Sie alle Teile des Codes richtig geschrieben haben. Möglicherweise müssen Sie die Ausführung herunterziehen Menü und wählen Sie Zurücksetzen um die Ausführung des VBA-Codes zu stoppen.
Das obige Beispiel bot einen schnellen Überblick darüber, wie man das Verhalten eines Formulars anpassen kann, um dem Benutzer zu helfen, schön formatierte Daten in die Datenbank einzugeben. Einige Details wurden während dieses Beispiels übersprungen und diese Details werden im Rest dieses Tutorials besprochen.
Die VBA-Sprache
Dieser Abschnitt stellt kurz die Hauptbestandteile der VBA-Sprache vor, wie sie in MS Access verwendet wird. Ein umfassender Überblick über VBA würde den Rahmen dieses Tutorials sprengen. Verweise auf umfassendere Bücher und Materialien finden Sie am Ende dieses Tutorials.
Variablen deklarieren
Eine Variable ist ein Name für einen Platzhalter, in dem der Programmierer einige Daten speichern kann. Beispielsweise kann eine Variable verwendet werden, um eine Zahl zu speichern, während wir einige mathematische Operationen damit durchführen oder ihren Wert mit anderen Variablen vergleichen. Variablen können so deklariert werden, dass sie Werte eines bestimmten Datentyps enthalten wie Ganzzahlen, Strings oder Datumsangaben. Um eine neue Variable zu deklarieren, verwenden Sie die Dim-Anweisung. Zum Beispiel, um eine neue Variable mit dem Namen MyName zu deklarieren und es so einrichten, dass es einen String (Zeichen) enthält, gehen Sie wie folgt vor:
Dim strMyName As String
Um eine neue Variable mit dem Namen „Kontostand“ zu deklarieren und sie so einzurichten, dass sie eine Zahl mit Dezimalstellen speichert, verwenden Sie Folgendes:
Dim dblAccountBalance As Double
Werte zuweisen
Mit dem Gleichheitszeichen kann einer Variablen oder einem Steuerelement auf dem Formular ein Wert zugewiesen werden. Um beispielsweise den Namen „Alex“ in der MyName-Variablen zu speichern, verwenden Sie Folgendes:
strMyName =„Alex“
Um den Inhalt des Textfelds FirstName in die Variable MyName zu kopieren, verwenden Sie:
strMyName =[Vorname]
Werte können auch berechnet werden, bevor sie zugewiesen werden. Der folgende Ausdruck nimmt beispielsweise den Kontostand des aktuellen Kunden aus dem Textfeld [Saldo], fügt 1 % Zinsen hinzu (durch Multiplizieren des Saldos mit 1,01) und verringert dann das Ergebnis um 10 $. Abschließend wird das Ergebnis der AccountBalance-Variablen zugewiesen.
dblAccountBalance =( [Balance] * 1.01 ) – 10.00
Bedingte Anweisungen
Eine bedingte Anweisung verwendet einen logischen Test, um zu bestimmen, welche Codezeilen als Nächstes ausgeführt werden sollen. Die Bedingung If … Then wird recht häufig verwendet. Zum Beispiel:
If AccountBalance < 1000 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
Der logische Ausdruck AccountBalance <1000 wird ausgewertet. Wenn dieser Ausdruck wahr ist (z. B. wenn AccountBalance $400 beträgt), wird die nächste Zeile nach Then ausgeführt. In diesem Beispiel ist MonthlyFee =10.
Wenn dieser Ausdruck False ist, wird die Zeile nach Else ausgeführt.
Der logische Ausdruck kann mehrere Teile enthalten, die durch die booleschen Operatoren OR, AND und NOT verbunden sind. Eine ausführlichere Erläuterung boolescher Ausdrücke finden Sie in diesem Programmiertutorial. Angenommen, wir verzichten auf die monatliche Gebühr, wenn das Konto weniger als ein Jahr alt ist. Angenommen, wir haben AccountAge als Alter des Kontos in Monaten. Dann wäre der Code:
If AccountBalance < 1000 AND AccountAge > 12 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
In der If … Then-Anweisung kann mehr als eine Codezeile ausgeführt werden, und If … Then-Anweisungen können ineinander verschachtelt werden.
Kommentare
Beim Programmieren in einer beliebigen Programmiersprache empfiehlt es sich, Kommentare einzufügen, die den Code beschreiben. In VBA kann ein Kommentar eingefügt werden, indem mit einem einfachen Anführungszeichen begonnen wird. Wenn wir das Obige als Beispiel nehmen, könnten wir die folgenden Kommentare hinzufügen:
Weitere Teile der VBA-Sprache werden auf der nächsten Seite besprochen.
VBA-Sprache – Fortsetzung
Funktionen
Die VBA-Sprache verfügt über eine große Anzahl integrierter Funktionen und Methoden, mit denen verschiedene Aufgaben ausgeführt werden können, z. B. mathematische Funktionen (sin, cos, tan), Zeichenfolgenfunktionen und viele andere. Funktionen haben normalerweise einen oder mehrere Eingabeparameter, die von der Funktion verwendet werden. Beispielsweise ist in der Funktion Cos(45) „45“ der Eingangswinkel, mit dem die Kosinusfunktion arbeitet. Die StrConv-Funktion erfordert zwei Eingabeparameter:Die zu konvertierende Zeichenfolge und den Konvertierungsstil:
StrConv(Vorname, vbProperCase)
Einige nützliche Funktionen sind:
MsgBox (Eingabeaufforderung, Schaltflächen, Titel) | Zeigen Sie ein Popup-Meldungsfeld mit dem Eingabeaufforderungstext, den Schaltflächen und dem Titel |
StrConv( Ausdruck, Stil ) | Konvertieren Sie den Zeichenfolgenausdruck in Großbuchstaben, Kleinbuchstaben oder korrekte Schreibweise |
Links( Ausdruck, Zeichen ) | Nehmen Sie die Zeichen ganz links aus dem Zeichenfolgenausdruck |
Mid( Ausdruck, Anfang, Zeichen ) | Nehmen Sie den mittleren Satz von Zeichen aus dem Zeichenfolgenausdruck, beginnend bei start |
IstNull( Ausdruck ) | Testen Sie, ob der Zeichenfolgenausdruck (oder das Textfeld) keinen Inhalt hat (null ist) |
Nz( expression, value_if_null ) | Wenn der Ausdruck null ist, geben Sie einen Standardwert ein |
Jetzt() | Gibt das aktuelle Datum und die Uhrzeit zurück |
Rundung(Ausdruck, Dezimalstellen) | Rundet den numerischen Ausdruck auf eine bestimmte Anzahl von Dezimalstellen |
RGB (Rot, Grün, Blau) | Gibt die Ganzzahl der Farbe basierend auf einer Kombination aus Rot, Grün und Blau zurück |
Methoden
Methoden in VBA sind wie Funktionen, aber sie sind mit einem Steuerelement oder einem anderen Objekt in einem Formular oder Bericht verbunden.
Einige praktische Methoden sind:
DoCmd.CancelEvent | Bricht das aktuell verarbeitete Ereignis ab |
DoCmd.Close | Schließen Sie das aktuelle Formular (oder die aktuelle Datenbank) |
DoCmd.OpenForm | Öffnet ein neues Formular |
DoCmd.OpenReport | Führen Sie einen MS Access-Befehl aus, wie z. B. das Speichern neuer oder aktualisierter Daten, das Rückgängigmachen einer Änderung oder das Verlassen eines Formulars |
.SetFocus | Setzen Sie den Fokus auf das Steuerelement im Formular |
.Rückgängig machen | Die letzte Änderung oder den letzten Befehl rückgängig machen |
.Aktualisieren | Aktualisiert alle Daten, die einem Formular zugrunde liegen |
.Requery | fragt die in einem Formular angegebenen Daten ab |
.Neuzeichnen | Zeichnet alle Steuerelemente auf einem Formular neu |
Viele weitere Funktionen und Methoden sind auf dieser Microsoft-Site aufgelistet.
Die folgenden Beispiele verwenden verschiedene Funktionen und Methoden in unterschiedlichen Kombinationen.
Beispiele
Zeigen Sie dem Nutzer eine Warnung, wenn der Kontostand unter 1.000 $ liegt
If AccountBalance < 1000 Then MsgBox("Warning: The Account Balance is now less than $1,000.") End If
Wenn das Textfeld „Vorname“ auf dem Formular etwas enthält, konvertieren Sie es in die richtige Groß-/Kleinschreibung
If Not IsNull( [FirstName] ) Then FirstName = StrConv( [FirstName], vbProperCase ) End If
Auf der nächsten Seite werden die Eigenschaften verschiedener Objekte vorgestellt.
Eigenschaften
Jedes Element in einem Dateneingabeformular oder Bericht hat eine Reihe von Eigenschaften mit ihr verbundenen. Eigenschaften steuern die Platzierung, Farbe, Schriftart, den Hintergrund und andere Darstellungs- und Formatierungsattribute jedes Steuerelements. Zu den vielen Eigenschaften einer TextBox gehören beispielsweise:
Sichtbar | Legt fest, ob das Textfeld auf dem Formular sichtbar ist |
Gesperrt | Legt fest, ob Daten im Textfeld geändert werden können |
Tab-Index | Die Reihenfolge der einzelnen Steuerelemente, wenn der Benutzer durch das Formular navigiert, indem er die Tabulatortaste drückt |
Label | Identifiziert den Namen des mit dem Textfeld verknüpften Labels |
Breite, Höhe, obere und untere Position | Gibt die relative Position und Größe des Textfelds an |
Hintergrundstil und -farbe | Legt den Hintergrundstil und die Farbe des Textfelds fest |
Rahmenstil und -farbe | Legt den Stil und die Farbe des Rahmens um das Textfeld fest |
Schriftgröße, Stärke, Unterstreichung, Kursivschrift, Farbe und Ausrichtung | Legt die Schriftart und den Stil fest |
Ränder und Abstand – Legt die Ränder und den Abstand um die Innenseite des Textfelds fest |
Eigenschaften können in der Entwurfsansicht festgelegt und mit dem Formular oder Bericht gespeichert werden. Eigenschaften können auch mit VBA-Code geändert werden, während das Formular ausgeführt wird. Um auf eine Eigenschaft in VBA zuzugreifen, verwenden Sie den Namen des Steuerelements, dann einen Punkt und dann den Namen der Eigenschaft. Der folgende Code ändert beispielsweise die Schriftfarbe des Textfelds CustomerID in Red:
Kunden-ID.ForeColor =vbRed
Die folgenden Abschnitte enthalten einige Übungen, die verschiedene Teile der VBA-Programmiersprache kombinieren, um das Verhalten verschiedener Dateneingabeformulare anzupassen.
VBA-Code-Übungen
Probieren Sie die folgenden Übungen zum Anpassen von Formularen aus. In den vorherigen Abschnitten finden Sie Codebeispiele, die an die aktuelle Übung angepasst werden können.
Übung 1
Ändern Sie das CustomerDataEntry-Formular, um zwei AfterUpdate-Ereignishandler hinzuzufügen, die den Vornamen und den Nachnamen in die richtige Groß-/Kleinschreibung umwandeln (erstellen Sie einen separaten AfterUpdate-Handler für jedes Textfeld). Schreiben Sie Code, um zuerst zu prüfen, ob das Textfeld nicht null ist, bevor Sie versuchen, den Text zu konvertieren.
Übung 2
Ändern Sie das AccountsDataEntry-Formular, um einen AfterUpdate-Ereignishandler hinzuzufügen, der ein Warnmeldungsfeld anzeigt, wenn der Kontostand unter 5.000 $ liegt. Ändern Sie auch die Schriftfarbe des Textfelds Balance auf Rot.
Übung 3
Ändern Sie das Kundendateneingabeformular. Erstellen Sie eine On Lost Focus-Subroutine, die die Beschriftung für das Textfeld „FirstName“ rot (vbRed) ändert, wenn der Benutzer das Textfeld „FirstName“ verlässt, ohne etwas einzugeben. Setzen Sie die Beschriftung auf blau (vbBlue), wenn sich etwas in der Textbox befindet. Im Beispiel unten wurde nichts in das Textfeld „Vorname“ eingegeben, und der Benutzer wechselte dann mit der Tabulatortaste zum nächsten Textfeld, wodurch das Etikett „Vorname“ rot wurde.
Auf der nächsten Seite dieses Tutorials wird erläutert, wie Fehler im VBA-Code behandelt werden.
Behandlung von Fehlern in VBA
Gelegentlich tritt beim VBA-Code ein Fehler auf. Wenn beispielsweise ein Textfeld leer ist und wir versuchen, den Inhalt des Textfelds in die richtige Groß-/Kleinschreibung umzuwandeln, schlägt die StrCnv-Funktion fehl. Ein weiteres Beispiel ist die Division durch Null. Ohne Fehlerbehandlung können diese Probleme zum Absturz des VBA-Programms führen. Wenn ein Fehler auftritt, kann ein spezieller Code in Aktion treten, um den Fehler zu behandeln und die Verarbeitung des VBA-Codes fortzusetzen.
Die beiden wichtigsten Fehlerbehandlungsfunktionen von VBA sind die On Error Goto-Anweisung und die Resume Next-Anweisung. Diese beiden VBA-Codeanweisungen arbeiten zusammen, um zu verhindern, dass VBA die Anwendung zum Absturz bringt.
Die On Error Goto-Anweisung informiert VBA darüber, was zu tun ist, wenn ein Fehler in einem Unterprogramm auftritt. Der Goto-Teil der Anweisung verweist auf eine Bezeichnung an einer anderen Stelle im Code, an der VBA weiterarbeitet. Sobald das VBA-Programm das Etikett erreicht, wird jeder Fehler in einem Objekt namens Err angezeigt. Die Eigenschaft Err.Description enthält eine Textbeschreibung des zuletzt aufgetretenen Fehlers. Die Resume Next-Anweisung bewirkt, dass das VBA-Programm an dem Punkt weiterläuft, an dem der Fehler aufgetreten ist.
Das folgende Beispiel erweitert die FirstName_AfterUpdate-Routine, die zu Beginn dieses Lernprogramms eingeführt wurde. Jetzt kann das VBA-Programm alle Fehler behandeln, die im Programm auftreten können.
Private Sub FirstName_AfterUpdate ' Subroutine to convert the FirstName of the customer to Proper Case On Error Goto FirstName_AfterUpdate_Error_Handler FirstName = StrConv(FirstName, vbProperCase) ' If the conversion was successful, exit this subroutine Exit Sub FirstName_AfterUpdate_Error_Handler: ' If there is an error show the description of the error MsgBox Err.Description ' Resume with the next statement In the subroutine Resume Next End Sub
Im nächsten Abschnitt dieses Tutorials wird erläutert, wie Sie SQL-Code in VBA einbinden.
Benutzerdefinierte SQL-Abfragen in VBA ausführen
Structured Query Language (SQL) ist die Programmiersprache, die in relationalen Datenbanken wie MS Access, SQL Server, Oracle und vielen anderen verwendet wird. SQL-Anweisungen können verwendet werden, um Datensätze aus Tabellen einzufügen, zu aktualisieren, zu löschen und abzurufen (auszuwählen) (neben vielen anderen Fähigkeiten). Ein einfaches Beispiel für eine SQL-Anweisung wäre:
SELECT customerid, firstname, lastname FROM customer
SQL-Code kann in VBA geschrieben und zu einem geeigneten Zeitpunkt ausgeführt werden. Beispielsweise könnte eine VBA-Subroutine geschrieben werden, um die Kundentabelle abzufragen, um die höchste Kunden-ID zu finden. Dann könnten wir zu dieser Zahl 1 hinzufügen, um eine neue, unbenutzte Kunden-ID für einen neuen Datensatz zu erhalten.
Die allgemeinen Schritte zum Ausführen dieser Art von Aufgabe sind:
Erstellen Sie eine SQL-Anweisung
Führen Sie die SQL-Anweisung mit der geöffneten Datenbankverbindung aus (in VBA CurrentDb genannt)
Rufen Sie die resultierenden Datensätze ab und verwenden Sie die abgerufenen Daten
Öffnen Sie zum Erstellen dieser VBA-Subroutine das Formular CustomerDataEntry und rufen Sie die Eigenschaften des Felds CustomerID ab. Klicken Sie auf der Registerkarte „Ereignisse“ auf die drei Punkte rechts neben dem Ereignis „On Dbl Click“. Wählen Sie Code Builder und der Stub wird wie folgt erstellt:
Private Sub CustomerID_DblClick(Cancel As Integer) End Sub
Fügen Sie den folgenden Code hinzu:
Private Sub CustomerID_DblClick(Cancel As Integer) ' Create a new CustomerID when user double-clicks in the CustomerID field On Error GoTo ErrorHandler Dim rstResults As Recordset ' This will hold the set of result records Dim strSQL As String ' This variable will hold the text of the SQL Statement ' If there is nothing in the CustomerID text box If IsNull(CustomerID) Then ' Make the SQL statement strSQL = "SELECT MAX(customerid) + 1 AS NewID FROM customer" ' Run the SQL query against the current database Set rstResults = CurrentDb.OpenRecordset(strSQL) ' If at least 1 record is returned If rstResults.EOF = False Then ' Assign the NewID to the CustomerID field CustomerID = rstResults!NewID End If rstResults.Close ' Close up the result set Set rstResults = Nothing ' Empty out the result set End If Exit Sub ErrorHandler: Set rstResults = Nothing End Sub
Der Code sieht wie folgt aus, sobald alles vorhanden ist:
Speichern Sie die Datei und zeigen Sie dann das CustomerDataEntry-Formular an. Navigieren Sie zu einem neuen Datensatz und doppelklicken Sie dann auf das Feld CustomerID. Eine neue Kunden-ID sollte automatisch erstellt werden.