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 2/2008.

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

Zusammenfassung

Fügen Sie Ihrer Datenbank eine Funktion hinzu, mit der Sie einfach die zuletzt aufgerufenen Datensätze anzeigen können.

Techniken

VBA, ADO, Formulare

Voraussetzungen

Access 2000 und höher

Beispieldateien

MRU2000.mdb

Shortlink

575

Zuletzt verwendete Datensätze anzeigen

Uwe Ricken, Erzhausen

Sie kennen sicherlich die Funktion aus dem Office-Ppaket, die Ihnen immer die letzten verwendeten Dokumente im Menü anbietet. Diese Funktionalität hat den charmanten Vorteil, dass Sie diese Dateien nicht in der Verzeichnisstruktur Ihrer Festplatte suchen müssen, sondern direkt darauf zugreifen können. Dieses Prinzip namens Most Recent Used (MRU) soll im nachfolgenden Programmierbeispiel für Kundendaten verwendet werden.

Das Fallbeispiel

In der Beispieldatenbank MRU2000.mdb finden Sie alle in diesem Artikel beschriebenen Objekte und Codierungen. Öffnen Sie in der Beispieldatenbank das Formular frmStammdaten, über das Sie Firmendaten verwalten können (s. Abb. 1). Links von den eigentlichen Daten befindet sich ein Listenfeld, in dem alle Datensätze angezeigt werden, die über Suchen ermittelt wurden oder an deren Stammdaten Änderungen vorgenommen worden sind.

missing image file

Abb. 1: Verwaltungsformular für Unternehmensdaten

Geben Sie in das Textfeld Suchen einen beliebigen Suchbegriff für ein Unternehmen ein. Als Platzhalter für eine beliebige Zeichenkette kann das Sternchen (*) verwendet werden. Sobald Sie den zu suchenden Begriff eingegeben haben, bestätigen Sie den Eintrag mit der Eingabetaste und anschließend öffnet sich ein Dialog, in dem alle dem Suchmuster entsprechenden Unternehmen angezeigt werden (s. Abb. 2). Um zum gewünschten Datensatz zu navigieren, klicken Sie entweder doppelt auf den Namen im Listenfeld oder Sie markieren den Datensatz und bestätigen anschließend Ihre Auswahl mit Auswählen. Sobald der Dialog geschlossen wird und das aufrufende Formular zum ausgewählten Datensatz navigiert, erscheint der von Ihnen ausgewählte Datensatz in der Liste der zuletzt verwendeten Datensätze und Sie müssen nun nicht mehr mühsam über den Suchdialog zu diesem Datensatz navigieren.

missing image file

Abb. 2: Dem Suchkriterium entsprechende Datensätze

Eine weitere Möglichkeit der Übernahme eines Datensatzes in die MRU besteht darin, einen existierenden Datensatz zu ändern. Sobald die Änderungen an einem Datensatz gespeichert wurden, wird dieser Datensatz ebenfalls in die MRU übernommen.

Technische Umsetzung

Um eine MRU zu programmieren, bedarf es nicht viel Aufwands. Auf Basis der Datenstruktur benötigen Sie zwei Tabellen zur Steuerung der MRU.

tblMRU

Die wichtigste Tabelle für die Speicherung der letzten Datensätze ist die Tabelle tblMRU. Ihre Aufgabe ist es, den Primärschlüssel der Unternehmensdaten nebst Datum des Eintrags zu speichern (s. Tab. 1).

Feld

Beschreibung

TableName

Der Name der Tabelle, aus der der Datensatz gespeichert wurde

PrimaryKey

Feldname der Tabelle, der den eindeutigen Schlüssel eines Datensatzes definiert

KeyValue

Wert des eindeutigen Schlüssels eines Datensatzes (muss numerisch sein!)

InsertDate

Datum und Uhrzeit der Eintragung und/oder der letzten Aktualisierung des entsprechenden MRU-Datensatzes

Tab. 1: Aufbau der Tabelle tblMRU

Sobald ein neuer Eintrag in der Tabelle vorgenommen wird, wird das Datum automatisch durch Access hinzugefügt.

tblMRUParameter

Die Tabelle tblMRUParameter dient der Verwaltung der Steuerungsvariablen für die Verwaltung der MRU. Auch diese Tabelle (s. Tab. 2) hat einen recht simplen Aufbau und speichert ausschließlich einen Parameternamen sowie einen Parameterwert.

Feld

Beschreibung

Parameter

Name des Parameters

Wert

Wert des Parameters

Tab. 2: Aufbau der Tabelle tblMRUParameter

Für das obige Beispiel benötigen Sie nur einen einzigen Parameter, der steuert, wie viele Einträge maximal in der MRU gespeichert werden sollen. Dazu dient der Parameter MAX_ENTRIES, der aktuell auf den Wert 25 festgelegt ist.

Es wäre auch möglich, ein Verfallsdatum zu verwenden, indem man die Tage angibt, nach denen ein Eintrag automatisch aus der MRU entfernt werden soll.

Eine Klasse für die Kapselung der Funktion

Die Funktionen der MRU sind in einer Klasse gekapselt, was so eine einfachere Verwaltung und Weiterentwicklung ermöglicht.

Die erste Grundüberlegung für die Funktion ist natürlich der Leistungsumfang. Sie müssen zunächst festlegen, was die Klasse alles leisten soll. Grundsätzlich müssen die Funktionen aus Tab. 3 erfüllt sein.

Funktionalität

Funktion

Hinzufügen von neuen MRU-Einträgen

AddEntry

Löschen von bestehenden MRU-Einträgen

DeleteEntry

Tab. 3: Basisfunktionalität der MRU

Neben den oben aufgeführten öffentlich zugänglichen Methoden der Klasse werden natürlich auch Hilfsfunktionen benötigt, die Grundfunktionen der Klasse steuern (s. Tab. 4).

Funktionalität

Funktion

Parameterwert ermitteln

GetParameterValue

Löschen von veralteten und verwaisten MRU-Einträgen

fn_app_ReorgMRUList

Tab. 4: Hilfsfunktionen der MRU

Aufbau der Klasse clsMRU

Die oben beschriebene Funktionalität ist in der Klasse clsMRU programmiert. Sie befindet sich in der Beispieldatenbank und kann durch einen Doppelklick im Visual Basis Editor angezeigt und bearbeitet werden.

Für die korrekte Arbeitsweise der Klasse werden Parameter eingesetzt. Damit diese Parameter nicht in jeder Funktion erneut abgerufen werden, speichert die Klasse die Parameterwerte in lokalen Variablen und Konstanten, die während des gesamten Lebenszyklus der Klasse zur Verfügung stehen. Es bietet sich also an, die Parameter für den Gebrauch gleich bei der Initialisierung der Datenklasse auszulesen und zu speichern.

Um Code gleich bei der Initialisierung einer Klasse ausführen zu lassen, verwenden Sie das Ereignis Initialize des Klassenobjektes. Es wird automatisch ausgeführt, sobald Sie auf Methoden und Eigenschaften einer Klasse zum ersten Mal zugreifen. In diesem Beispiel ist die Initialisierung nicht sehr aufwändig, da lediglich die lokale Variable lngNumOfEntries gefüllt wird. Sie speichert den Wert der maximal zu speichernden Einträge in die MRU:

Private Sub Class_Initialize()

    lngNumOfEntries = _

    GetParameterValue("MAX_ENTRIES")

    End Sub

Der Wert der Variablen wird durch die Funktion GetParameterValue gesetzt. Diese Funktion liest aus der Tabelle tblMRUParameter den Wert zum entsprechenden Parameterdatensatz aus.

Private Function GetParameterValue(strParameter _

    As String) As Variant

    ...

    Set cmd = New ADODB.Command

    With cmd

    Set .ActiveConnection = _

    CurrentProject.Connection

    .CommandText = SQL_MRU_PARAMETER

    .CommandType = adCmdText

    Set prm = .CreateParameter("Parameter", _

    adVarChar, adParamInput, _

    Len(strParameter) + 1, strParameter)

    .Parameters.Append prm

    Set rst = .Execute()

    End With

    If Not rst Is Nothing Then

        If Not rst.EOF And rst.BOF Then

            GetParameterValue = _

            rst.Fields(0).Value

        End If

    End If

    ...

End Function

Da diese Funktion lediglich innerhalb der Klasse benötigt wird, ist sie als Private deklariert und somit nach außen nicht sichtbar. Der Zugriff auf die Datenstrukturen der Tabellen erfolgt über ADO und OLEDB, aber selbstverständlich können Sie auch mittels DAO die gleiche Funktionalität erreichen. Das Ergebnis der Abfrage wird in einem ADO-RecordSet rst gespeichert und kann anschließend für die weitere Bearbeitung verwendet werden.

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:

Verwandte Beiträge:

Validieren mit Klasse

Ereignisprozeduren implantieren

Arbeiten mit den DataGrid-Steuerelement

Benutzerverwaltung

Modale Dialoge mal anders

© 2003-2015 André Minhorst Alle Rechte vorbehalten.