Knowledgebase mit Suchfunktion

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 (s. Abb. 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.

Abb. 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 (s. Abb. 2). Als Basis kann ein Standardformular dienen, das Sie mit Hilfe des Formularassistenten von Access anlegen:

  • Wählen Sie den Befehl Formular des Menüpunkts Einfügen aus.
  • Wählen Sie den Assistenten AutoFormular: Einspaltig.
  • Selektieren Sie aus dem Kombinationsfeld die Tabelle tblKBEinträge.
  • Bestätigen Sie mit OK. (
  • 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.

    Abb. 2: Das Formular frmKBEinträge

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

    Zu diesem Zweck kommt ein Formular mit Endlosansicht zum Einsatz, bei dem zusätzlich der Formularkopf eingeblendet ist.

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar