Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Christoph Spielmann, Düsseldorf
Auch erfahrene Access-Entwickler müssen von Zeit zu Zeit passen, wenn knifflige Fragen zu beantworten oder Probleme zu lösen sind. Oft versucht man sich dann mit dem Satz „Ich hab“ da mal was gelesen …“ aus der Affäre zu ziehen (sofern das Gegenüber nicht mit der Frage „Was denn“ kontert). Hierbei soll Ihnen die Knowledge-Base (kurz „KB“) helfen, die Ihnen in dieser Musterlösung vorgestellt wird.
Die Knowledge-Base besteht aus einer Ansammlung von Artikeln, die zusammen mit einem Titel, einem Text sowie mehreren Schlüsselwörtern gespeichert werden. Das besondere Augenmerk liegt hierbei in der Suchfunktion, die nicht nur die gefundenen Artikel auflistet, sondern zusätzlich auch den Textausschnitt mit dem gefundenen Text anzeigt.
Feldname |
Beschreibung |
KBEintragID |
AutoWert-Primärschlüssel |
EintragstypID |
Typ des Eintrags (Text oder Programmcode) |
KategorieID |
Kategorie, unter der der Eintrag abgelegt ist (z. B. Access, API, Word …) |
Titel |
Titel des Artikels (Text) |
Text |
Artikeltext (Memo) |
Schlüsselwörter |
Auflistung von Schlüsselwörtern zum leichteren Auffinden eines Beitrags |
Tab. 1: Der Aufbau der Tabelle tblKBEinträge
Die Datenstruktur besteht im Wesentlichen aus der Tabelle tblKBEinträge. Hier sind die einzelnen Artikel untergebracht. Sie finden die Struktur dieser Tabelle in Tab. 1.
Bei den Feldern EintragstypID und KategorieID handelt es sich jeweils um Fremdschlüssel, die auf die beiden Tabellen tblEintragstypen und tblKategorien zeigen. Den Aufbau der beiden Tabellen entnehmen Sie dem ER-Diagramm (siehe Bild 1) oder der Beispieldatenbank.
Um die spätere Anlage von Formularen zu vereinfachen, sind die beiden Fremdschlüssel als Nachschlagefelder konfiguriert. Hierbei sind die Eigenschaften aus Tab. 2 definiert.
Eigenschaft |
Einstellung |
Steuerelement anzeigen |
Kombinationsfeld |
Herkunftstyp |
Tabelle/Abfrage |
Gebundene Spalte |
2 |
Spaltenanzahl |
2 |
Spaltenüberschriften |
Nein |
Spaltenbreiten |
5cm;0cm |
Zeilenanzahl |
16 |
Listenbreite |
Automatisch |
Nur Listeneinträge |
Ja |
Tab. 2: Formulareigenschaften und deren Einstellung
Die Datensatzherkunft des Feldes EintragstypID ist wie folgt eingestellt:
SELECT Eintragstyp, EintragstypID FROM tblEintragstypen ORDER BY Eintragstyp;
Die Datensatzherkunft des Feldes KategorieID hat einen ähnlichen Aufbau:
SELECT tblKategorien.Kategorie, tblKategorien.KategorieID FROM tblKategorienORDER BY tblKategorien.Kategorie;
Die beiden SQL-Anweisungen fragen jeweils das Text- und das Primärschlüsselfeld beider Nachschlagetabellen ab und sortieren es zudem nach dem Textfeld. Durch die Einstellung der Spaltenbreiten-Eigenschaft ist später nur das Textfeld sichtbar.
Neben den drei bereits vorgestellten Tabellen enthält das Datenmodell noch eine vierte Tabelle namens tblSuchergebnis. Hier wird das Ergebnis eines Suchvorgangs abgelegt. Die genaue Funktion dieser Tabelle lernen Sie später noch kennen.
Bild 1: Das ER-Diagramm der Musterlösung
Hinweis
Die Datenbank liegt in zwei Versionen für Access 97 (KB97.mdb) und für Access 2000/XP (KB2000.mdb) auf der Heft-CD der vorliegenden Ausgabe von Access im Unternehmen vor. Die Version für Access 97 verwendet einige DAO-Anweisungen für den Datenzugriff, die im Beitrag nicht beschrieben werden. Im Beitrag finden Sie die Beschreibung der Vorgehensweise anhand des ADO-Objektmodells, das in Access 2000 und höher standardmäßig eingesetzt wird.
Die Erfassung und Pflege einzelner Artikel erfolgt über das Formular frmKBEinträge (siehe Bild 2). Als Basis kann ein Standardformular dienen, das Sie mit Hilfe des Formularassistenten von Access anlegen:
Durch die Definition der Nachschlagefelder sollte das neu erzeugte Formular für die beiden Felder EintragstypID und KategorieID bereits zwei Kombinationsfelder enthalten.
Speichern Sie das Formular unter dem Namen frmKBEinträge.
Zur Verbesserung des optischen Erscheinungsbildes entfernen Sie noch das Primärschlüsselfeld samt Bezeichnung.
Aus den Bezeichnungsfeldern der beiden Fremdschlüssel entfernen Sie außerdem das „ID“ und vergrößern das Textfeld Text.
Um von dem Formular einfach in das Suchformular zu wechseln, das später noch angelegt wird, schalten Sie in die Entwurfsansicht um und platzieren im oberen Bereich des Formulars eine neue Schaltfläche.
Beschriften Sie diese mit dem Text Suchen… und geben Sie ihr den Namen btnSuchen.
Bild 2: Das Formular frmKBEinträge
Bild 3: Der Kopfbereich des Suchformulars
Private Sub RefreshUI() Me.cmbEintragstypID.Enabled = _ Me.chkEintragstyp.Value Me.cmbKategorieID.Enabled = Me.chkKategorie.Value End Sub
Quellcode 1
Private Sub chkEintragstyp_Click() RefreshUI End Sub Private Sub chkKategorie_Click() RefreshUI End Sub Private Sub Form_Load() RefreshUI End Sub
Quellcode 2
Zur Anlage der Ereignisprozedur wählen Sie den Befehl Ereignis aus dem Kontextmenü der neu erstellten Schaltfläche.
Bestätigen Sie das folgende Dialogfenster mit einem Doppelklick auf Code-Generator und ergänzen Sie die Ereignisprozedur wie folgt:
DoCmd.OpenForm _ "frmSuchen", acNormal
Diese Anweisung öffnet das im folgenden Abschnitt vorgestellte Formular frmSuchen.
Das Suchformular hat zwei Aufgaben: Zu einem ermöglicht es die Erfassung der Suchkriterien und zum anderen zeigt es das Suchergebnis an.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo