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 5/2005.

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

Sie erfahren, wie Sie eine Anwendung mit einem individuellen und durch den Benutzer erweiterbaren Hilfesystem ausstatten.

Techniken

Formulare, Berichte, VBA

Voraussetzungen

Access 97 oder höher

Beispieldateien

Hilfesystem97.mdb, Hilfesystem00.mdb

Dynamisches Hilfe- und Dokumentationssystem

Dirk Bauer, Düsseldorf

Haben Sie wieder einmal eine Anwendung auf Basis von Access fertig gestellt und verzweifeln nun an der Dokumentation sowie dem beauftragten Hilfesystem? Dieser Beitrag zeigt einen Ansatz, mit dem Sie die Hilfe und die Dokumentation einfach in Ihre Anwendung integrieren können. Und das Schönste für den Entwickler ist: Die Anwender können einen nicht unerheblichen Beitrag zu diesem Thema leisten.

Das Problem

Welcher Softwareentwickler kennt das nicht: Nach intensiver Arbeit wird die lang geplante Software endlich fertig gestellt. Was nun noch fehlt, ist eine Dokumentation aller Masken und Eingabemöglichkeiten der Applikation. Diese Dokumentation soll dann je nach Einsatzzweck entweder als Hilfesystem in die Anwendung integriert sein oder als druckbare Referenz übergeben werden. Wenn dann aber einige Formulierungen des Softwareentwicklers nicht exakt die internen Abläufe und Begriffe des Auftraggebers wiedergeben, wird das Thema schnell sehr komplex und aufwändig.

Der Lösungsansatz

In der letzten Zeit erfährt die Internetseite Wikipedia (http://www.wikipedia.de) immer mehr Aufmerksamkeit.

Wikipedia ist eine freie Enzyklopädie in mehr als 100 Sprachen, zu der jeder mit seinem Wissen beitragen kann. Auf der Internetseite ist es jedem Anwender möglich, neue Texte zu erfassen, bereits vorhandene Texte zu überarbeiten und zu ergänzen sowie Fehler zu korrigieren.

Was bei tausenden von Anwendern klappt, kann nun auch in Ihrer Anwendung zu einem echten Highlight werden.

Das Konzept

Die Grafik aus Abb. 1 stellt eine Übersicht des Lösungsansatzes dar.

Um die nachträgliche Implementierung dieses lernfähigen Hilfekonzeptes in eine bestehende Access-Anwendung so einfach wie möglich zu gestalten, werden alle wesentlichen Routinen und Elemente nur einmal zentral angelegt.

Abb. 1: Das Konzept

Abb. 2: Entwurf der Tabelle tblHilfesystem

Abb. 3: Beispielansicht einer gefüllten Tabelle tblHilfesystem

Die Anwendung besteht aus den folgenden Elementen:

  • Tabelle tblHilfesystem
  • Formular frmHilfesystem
  • Bericht repHilfesystem
  • Modul basHilfesystem
  • Sobald diese zentralen Elemente in der Anwendung vorhanden sind, beschränkt sich der Änderungsaufwand in den einzelnen Formularen auf das Einfügen einer einzigen Schaltfläche zum Öffnen der Hilfe.

    Im Folgenden erfahren Sie, wie die genannten Elemente erstellt und miteinander verbunden werden.

    Die Datenspeicherung

    Die Tabelle tblHilfesystem dient zur Aufnahme der Formulare, der in den Formularen enthaltenen Steuerelemente sowie der Dokumentation der Elemente.

    Erstellen Sie in Ihrer Datenbank eine neue Tabelle tblHilfesystem mit den Feldern aus Abb. 2. Die Textfelder erhalten jeweils die Feldgröße 100.

    Das Feld HilfeID wird als Primärschlüssel (PK) markiert.

    Das Feld Formularname wird später automatisch mit dem Formularnamen gefüllt, den Sie im Datenbankfenster für das jeweilige Formular verwendet haben.

    Das Feld SteuerelementName nimmt alle Namen der Steuerelemente auf, die vom Anwender zur Eingabe von Daten verwendet werden können.

    Das Feld Beschreibung wird von der Laderoutine beim erstmaligen Öffnen eines Formulars zunächst mit einer Kopie des Wertes aus dem Feld SteuerelementName vorbelegt.

    Falls Sie etwa in einem Formular ein Feld txtVorname verwenden, können Sie die Bezeichnung in ein anwenderfreundliches Vorname ändern. Das Feld Bezeichnung wird dem Anwender später in der Benutzeroberfläche präsentiert. Das Feld Hilfetext nimmt alle Hinweise und Beschreibungen zu dem jeweiligen Steuerelement auf. Aufgrund der nicht vorhersehbaren Textmengen wird dieses Feld mit dem Datentyp Memo angelegt, da es bei Textfeldern in Access eine Begrenzung auf 255 Zeichen gibt. Abb. 3 zeigt exemplarisch die mit einigen Beispieldaten gefüllte Tabelle tblHilfesystem.

    Quellcode 1: Code des Moduls basHilfesystem

    Public Function HilfeAnzeigen()

        'nimmt eine Referenz auf das aktuell geöffnete Form auf

        Dim frm As Form

        Dim ctrl As Control    

        Dim db As DAO.Database

        Dim rs As DAO.Recordset

        ' Ermitteln des aktiven Formulars

        Set frm = Screen.ActiveForm    

        ' Ermitteln, ob für das aktuelle Form bereits Daten hinterlegt wurden

        Set db = CurrentDb

        Set rs = db.OpenRecordset("SELECT * FROM tblHilfesystem WHERE FormularName = '" _
            + frm.Name + "'")    

        If rs.RecordCount = 0 Then

            ' keine Daten vorhanden, also alle Controls des aktuellen Formulars einlesen

            For Each ctrl In frm.Controls        

                Select Case ctrl.ControlType

                    Case acTextBox, acCommandButton, acCheckBox, acComboBox, acListBox, _
                        acOptionButton, acToggleButton, acOptionGroup
                        rs.AddNew

                        ' Name des Formulars

                        rs!FormularName = frm.Name

                        ' Name des Steuerelementes (fix)

                        rs!SteuerelementName = ctrl.Name

                        ' Kopie des Wertes "Name des Steuerelementes", 
                        ' kann vom Anwender editiert werden

                        rs!Beschreibung = ctrl.Name

                        rs.Update

                End Select            

            Next    

        End If

        rs.Close

        db.Close    

        ' Öffnen des Hilfeformulars mit dem Verweis auf das aktuelle Formular

        DoCmd.OpenForm FormName:="frmHilfesystem", OpenArgs:=frm.Name, _
            WhereCondition:="FormularName='" + frm.Name + "'"        

    End Function

    Der Quellcode

    Bei der Entwicklung des vorliegenden Lösungsansatzes wurde besonderer Wert auf eine einfache Integration in vorhandene und zukünftige Projekte gelegt. Aus diesem Grund wird der komplette Quellcode in dem zentralen Modul basHilfesystem und in dem unter Punkt 6 beschriebenen Formular frmHilfesystem abgelegt. Wenn Sie die Lösung einmal in einer Anwendung fertig gestellt haben, können Sie eine weitere Datenbank durch den einfachen Import der weiter oben beschriebenen Objekte jederzeit mit dem Hilfesystem ausstatten.

    Dreh- und Angelpunkt der Funktionalität ist die Routine HilfeAnzeigen im Modul basHilfesystem. Diese öffentliche Funktion wird später von jedem Formular aus aufgerufen, welches Zugriff auf das zentrale Hilfesystem hat.

    Die Routine deklariert zunächst die notwendigen Variablen und ermittelt anschließend mit der Methode Screen.ActiveForm das Formular, von dem aus der Aufruf erfolgt.

    Das Recordset-Objekt rs wird anschließend mit allen Datensätzen der Tabelle tblHilfesystem gefüllt, die sich auf das soeben ermittelte Formular beziehen.

    Enthält die Tabelle tblHilfesystem keine passenden Datensätze, durchläuft die Routine in einer For Each-Schleife alle im Formular enthaltenen Steuerelemente, die zur Eingabe oder Auswahl von Daten verwendet werden können.

    Die Variable ctrl enthält jeweils den Verweis auf das entsprechende Steuerelement. Einige Attribute des Steuerelementes werden dann in der Tabelle tblHilfesystem gespeichert:

  • der Formularname im Feld Formularname,
  • der Steuerelementname im Feld Steuerelementname
  • und nochmals der Steuerelementname im Feld Beschreibung.
  • Letzteres Feld kann später vom Anwender überschrieben werden.

    Unabhängig davon, ob die Steuerelemente des Formulars erst jetzt oder bereits vorher in der Tabelle tblHilfesystem gespeichert wurden, wird nun das Formular frmHilfesystem geöffnet und es zeigt die Einträge für die in dem Formular enthaltenen Steuerelemente an - mehr zu diesem Formular weiter unten.

    Der Aufruf des Formulars erfolgt mit der Anweisung DoCmd.OpenForm. Hierbei sind besonders die beiden Argumente OpenArgs und WhereCondition zu beachten. Mit OpenArgs:=frm.Name wird dem zentralen Hilfeformular der Name des derzeit noch aktiven Formulars übergeben.

    Der Parameter WhereCondition:="FormularNa
    me='" + frm.Name + "'" filtert die Datenherkunft des Formulars - die Tabelle tblHilfesystem.

    Die Benutzeroberfläche

    Nach der Erstellung der Tabelle und der Funktion zum Bestücken der Tabelle sowie zum Anzeigen des Hilfeformulars erfolgt nun das Design der Benutzerschnittstelle.

    Das Formular frmHilfesystem basiert auf der bereits beschriebenen Tabelle tblHilfesystem. Es zeigt die zum aktuellen Formular verfügbaren Beschreibungen und Hilfetexte an.

    Eigenschaft

    Wert

    Datenherkunft

    tblHilfesystem

    Beschriftung

    Dynamisches Hilfe- und Informationssystem

    Standardansicht

    Endlosformular

    Löschen zulassen

    Nein

    Anfügen zulassen

    Nein

    Bildlaufleisten

    Nur vertikal

    Datensatzmarkierer

    Nein

    Rahmenart

    Dünn

    Tab. 1: Eigenschaften des Formulars frmHilfesystem

    Führen Sie anschließend die folgenden Schritte durch:

    Quellcode 2: Routine zum Filtern der angezeigten Datensätze

    Private Sub FilterAktualisieren()

        If Len("" + Me!txtFilter) > 0 Then

            Me.Filter = "FormularName = '" + Me.OpenArgs + "' AND (Beschreibung LIKE '*" _
                + Me!txtFilter + "*' OR SteuerelementName LIKE '*" + Me!txtFilter + "*')"

        Else

            Me.Filter = "FormularName = '" + Me.OpenArgs + "'"

        End If

    End Sub

    Abb. 4: Formular frmHilfesystem im Entwurf

    Das Textfeld zum Filtern der Steuerelemente soll den vom Anwender eingegebe Text mit einer LIKE-Abfrage aus den Feldern SteuerelementName oder Beschreibung filtern. Dazu legen Sie zunächst im Formular frmHilfesystem die Routine aus Quellcode 2 an.

    Die Routine geprüft zunächst, ob das Feld txtFilter überhaupt einen Text enthält. Falls es leer ist, besteht der Filter lediglich aus dem Feld Formularname und wird wie in der Voreinstellung auf den Formularnamen gesetzt.

    Das führt dazu, dass in dem Hilfeformular alle abgelegten Steuerelemente des aufrufenden Formulars angezeigt werden.

    Falls das Feld txtFilter hingegen mit einem Text gefüllt ist, wird der Filter so ergänzt, dass auch alle Einträge angezeigt werden, deren Felder Steuerelementname und Beschreibung den im Textfeld angegebenen Begriff enthalten.

    Es werden nun nur noch die Steuerelemente des aktiven Formulars angezeigt, die dem zusätzlichen Filterkriterium entsprechen.

    Die Routine FilterAktualisieren kann nun nach Eingabe eines Textes und/oder durch einen Mausklick auf die Schaltfläche Filtern ausgeführt werden.

    Ergänzen Sie dazu das Ereignis Nach Aktualisierung des Steuerelements txtFilter sowie das Ereignis Beim Klicken des Steuerelements cmdFilter um dem VBA-Code aus Quellcode 3.

    Den passenden Prozedurrumpf erzeugen Sie, indem Sie für die entsprechende Ereigniseigenschaft den Wert [Ereignisprozedur] auswählen und anschließend auf die Schaltfläche mit den drei Punkten klicken (s. Abb. 5).

    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:

    Termine in Berichten darstellen

    Gruppensummen ohne Gruppen im Berichtsfuß

    Berichte manuell füllen

    Zugriff auf Daten in Formularen und Steuerelementen

    Verwaltung von Projekten des Handwerks

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.