Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2016.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Datensatzvorlage per Mausklick

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.

Schaltfläche zum Speichern des Datensatzes als Standard

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).

Kompletter gespeicherter Datensatz in der Tabelle tblStandardwerte

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.

Hier legen wir für die Ereignisprozedur, die durch das Anklicken der Schaltfläche cmdDatensatzAlsStandard ausgelöst wird, die folgende Anweisung an:

Private Sub cmdDatensatzAlsStandard_Click()
     StandardwerteSpeichernAusserPK Me
End Sub

Die dort aufgerufene Prozedur StandardwerteSpeichernAusserPK finden Sie in Listing 2. Die Prozedur erwartet wieder einen Verweis auf das zu untersuchende Formular als Parameter. Die Prozedur speichert einen Verweis auf das in der Recordset-Eigenschaft des Formulars enthaltene Objekt in der Variablen rst. Dann durchläuft es alle Steuerelemente der Controls-Auflistung des Formulars und schreibt das aktuelle Steuerelement jeweils in die Variable ctl. Nun fügt sie der Variablen strControlsource eine leere Zeichenkette hinzu. Warum das? Weil die Prozedur nachfolgend versucht, diese mit dem Inhalt der Eigenschaft ControlSource des aktuellen Steuerelements aus ctl zu füllen. Warum dies nur ein Versuch ist? Weil wir ja alle Steuerelemente durchlaufen, also beispielsweise auch Bezeichnungsfelder oder Schaltflächen, die ja üblicherweise nicht nur keinen Steuerelementinhalt haben, sondern denen auch die entsprechende Eigenschaft fehlt. Und wenn wir auf die Eigenschaft ControlSource beziehungsweise Steuerelement zugreifen und diese nicht vorhanden ist, löst dies einen Fehler aus.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.