Im Beitrag „Dynamische Standardwerte“ haben wir uns angesehen, wie Sie bestimmte Werte als Standardwerte für neue Datensätze nutzen können. Dabei haben wir immer die zuletzt angegebenen Werte in einer Tabelle gespeichert und diese beim Anlegen eines neuen Datensatzes als Standardwerte vorgegeben. Etwas mehr Flexibilität erhalten Sie noch, wenn Sie selbst festlegen können, welche Daten als Standardwerte für folgende Datensätze genutzt werden sollen. Sprich: Uns fehlt noch die Möglichkeit, einen Wert eines beliebigen Datensatzes als Standardwerts zu nutzen. Außerdem wollen wir noch komplette Datensätze als Vorlage für neue Datensätze nutzen können. Wie dies gelingt, erfahren Sie im vorliegenden Beitrag.
Kompletten Datensatz als Vorlage speichern
Im Beitrag Dynamische Standardwerte (www.access-im-unternehmen.de/1052) haben wir ein Formular mit einer Funktion ausgestattet, die immer die Daten des zuletzt geänderten oder neu angelegten Datensatzes als Standardwerte zu speichern (siehe auch das Formular frmArtikel_Standardwerttabelle in der Beispieldatenbank).
Nun wollen wir in einem weiteren Formular zeigen, wie Sie es dem Benutzer überlassen können, den Datensatz festzulegen, dessen Werte als Standardwerte gespeichert werden sollen. Dazu fügen wir einer Kopie des Formulars frmArtikel_Standardwerttabelle, das wir hier unter dem Namen frmArtikel_Standarddatensatz gespeichert haben, eine Schaltfläche namens cmdDatensatzAlsStandard mit der Beschriftung wie in Bild 1 hinzu.

Bild 1: Schaltfläche zum Speichern des Datensatzes als Standard
Dieser Schaltfläche hinterlegen wir für die Ereigniseigenschaft Beim Klicken die Ereignisprozedur aus Listing 1. Diese Prozedur ruft für jedes Steuerelement, dessen Standardwert wir speichern möchten (also alle außer dem Primärschlüsselfeld), je einmal die Prozedur StandardwertSpeichern auf, die wir im oben genannten Artikel vorgestellt haben. Dabei übergibt sie einen Verweis auf das aufrufende Formular, den Namen des Steuerelements sowie einen Verweis auf den aktuellen Inhalt des Steuerelements an die Prozedur.
Private Sub cmdDatensatzAlsStandard_Click() StandardwertSpeichern Me.Name, "txtArtikelname", Nz(Me!txtArtikelname) StandardwertSpeichern Me.Name, "cboKategorieID", Nz(Me!cboKategorieID) StandardwertSpeichern Me.Name, "cboLieferantID", Nz(Me!cboLieferantID) StandardwertSpeichern Me.Name, "txtLiefereinheit", Nz(Me!txtLiefereinheit) StandardwertSpeichern Me.Name, "txtEinzelpreis", Nz(Me!txtEinzelpreis) StandardwertSpeichern Me.Name, "txtLagerbestand", Nz(Me!txtLagerbestand) StandardwertSpeichern Me.Name, "txtBestellteEinheiten", Nz(Me!txtBestellteEinheiten) StandardwertSpeichern Me.Name, "txtMindestbestand", Nz(Me!txtMindestbestand) StandardwertSpeichern Me.Name, "chkAuslaufartikel", Nz(Me!chkAuslaufartikel) StandardwertSpeichern Me.Name, "txtAufgenommenAm", Nz(Me!txtAufgenommenAm) End Sub
Listing 1: Diese Prozedur wird beim Anklicken der Schaltfläche Datensatz als Standard ausgelöst.
Wenn Sie nun auf die Schaltfläche klicken, werden die Daten des aktuellen Datensatzes in der Tabelle tblStandardwerte gespeichert (s. Bild 2).

Bild 2: Kompletter gespeicherter Datensatz in der Tabelle tblStandardwerte
Nun benötigen wir noch einen Mechanismus, der diesen Datensatz beim Anzeigen eines neuen Datensatzes automatisch als Standardwert vorgibt. Dazu brauchen wir das Rad nicht neu zu erfinden – die entsprechenden Ereignisprozeduren werden durch die Ereignisse Beim Anzeigen und Beim Entladen des Formulars ausgelöst und wurden bereits im oben genannten Beitrag vorgestellt. Die Prozedur Form_Current ruft im Falle eines neuen Datensatzes die Prozedur StandardwerteSetzen auf und übergibt eine Referenz auf das aktuelle Formular. Die Prozedur Form_Unload wird beim Entladen des Formulars ausgelöst und führt ihre Anweisungen ebenfalls nur aus, wenn aktuell ein neuer Datensatz angezeigt wird. Sie fragt dann, ob der neu angelegte Datensatz, der bis dahin noch nicht bearbeitet wurde, gespeichert oder verworfen werden soll. Dies nur zur Sicherheit, falls der Benutzer glaubt, der ausschließlich mit Standardwerten (und somit noch nicht in der Tabelle gespeicherte) gefüllte Datensatz würde automatisch gespeichert.
Standardwerte per Schleife
Bislang ist es noch etwas mühselig, immer alle als Standardwert zu verwendenden Felder wie in den beiden Beispielen des oben genannten Beitrags entweder per Code einzeln zu speichern oder diese zuerst mit einer Marke zu versehen. Zumal man ja vielleicht ohnehin meist eher alle Felder außer dem Primärschlüsselfeld als Standardwerte vorgeben möchte.
Also haben wir noch ein weiteres Formular namens frmArtikel_StandardwertePerSchleife angelegt, in dem wir beim Anklicken der Schaltfläche cmdDatensatzAlsStandard eine Prozedur aufrufen, die automatisch alle Steuerelemente durchläuft und für alle einen Standardwert in der Tabelle tblStandardwerte hinterlegt, die nicht Primärschlüsselwert der zugrunde liegenden Datenherkunft sind.
Nur für Abonnenten
Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.
Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.
So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.
Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.
Bereits Abonnent? Hier einloggen
Kostenlos & unverbindlich
Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →