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.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo