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
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.
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.
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.
Die Grafik aus Bild 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.
Bild 1: Das Konzept
Bild 2: Entwurf der Tabelle tblHilfesystem
Bild 3: Beispielansicht einer gefüllten Tabelle tblHilfesystem
Die Anwendung besteht aus den folgenden Elementen:
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 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 Bild 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. Bild 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
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:
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:=“FormularName=““ + frm.Name + „““ filtert die Datenherkunft des Formulars – die Tabelle tblHilfesystem.
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 Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ... den kompletten Artikel im PDF-Format mit Beispieldatenbank diesen und alle anderen Artikel mit dem Jahresabo |