Knowledgebase mit Suchfunktion

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:

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

    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

    Schreibe einen Kommentar