Volltextsuche mit Highlight

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Haben Sie schon einmal mit Google Groups versucht, die Lösung zu einem Access-Problem zu finden? Dann kennen Sie das: Google markiert alle angegebenen Suchbegriffe in den gefundenen Postings in unterschiedlichen Farben. Keine Frage: Das bekommt man auch in Access hin – und wenn dafür auch das Webbrowser-Steuerelement aushelfen muss.

Google macht es wieder einmal vor: Sucht man dort unter “Groups” nach bestimmten Begriffen und wählt dann einen Eintrag aus den gefundenen Threads aus, zeigt Google die in den Postings enthaltenen Suchbegriffe farbig unterlegt an (s. Abb. 1). Das macht es einfacher, wichtigen Text von unwichtigem zu unterscheiden. Auch in Access lassen sich Suchbegriffe in Texten durch farbiges Markieren oder andere Hervorhebungen kennzeichnen – wie das funktioniert, erfahren Sie in den folgenden Abschnitten.

Das Beispielformular zum Anzeigen von Texten mit beliebig hervorgehobenen Suchtreffern benötigt gar nicht viel: ein Textfeld zur Eingabe der Suchbegriffe, eine Schaltfläche zum Starten der Suche und ein ActiveX-Steuerelement namens Microsoft Webbrowser reichen bereits aus. Die drei ordnen Sie wie in Abb. 2 an und fügen dann nur noch ein paar Zeilen Code hinzu, die den Text beim öffnen des Formulars anzeigen und nach der Eingabe von Suchbegriffen farbig markieren.

pic001.tif

Abb. 1: Text-Highlighting bei Google Groups

Zunächst einmal soll der Text überhaupt im Webbrowser-Steuerelement erscheinen. Das Formular ist so konzipiert, dass ein anderes Formular oder Modul es per VBA-Code aufrufen und ihm beim Aufruf den anzuzeigenden Text übergeben kann. Ein solcher Aufruf sähe etwa so aus:

DoCmd.OpenForm "frmTextHighlighting", _
OpenArgs:="<Sehr langer Text>"

Den Platzhalter <Sehr langer Text> müssen Sie natürlich noch mit dem gewünschten Text beziehungsweise einem Verweis darauf füllen. In der Beispieldatenbank finden Sie im Modul mdlTools eine Routine mit einem passenden Aufruf. Beim öffnen des Formulars löst dieses die Ereignisprozedur Beim öffnen aus Listing 1 aus. Diese Routine speichert den übergebenen Text zunächst in der Variablen strText. Dann füllt sie das Webbrowser-Steuerelement mit einem neuen, leeren Dokument, öffnet dieses, schreibt den übergebenen Text hinein und schließt das Dokument wieder. Zwischendurch ersetzt es noch alle Zeilenumbrüche durch das HTML-Tag <br>, das ebenfalls einem Zeilenumbruch entspricht. Anderenfalls würde das Webbrowser-Steuerelement gar keine Zeilenumbrüche anzeigen und somit die Lesbarkeit des Textes wesentlich verschlechtern.

Listing 1: Anzeigen des Formulars mit dem übergebenen Text im Webbrowser-Steuerelement

Private Sub Form_Open(Cancel As Integer)
     strText = Me.OpenArgs
     ctlWebbrowser.Navigate "about:blank"
     ctlWebbrowser.Document.Open
     ctlWebbrowser.Document.write "<span style=''font-family:tahoma;font-size:8pt''>" & Replace(Nz(strText, ""), Chr(10), "<br>") & "</span>"
     ctlWebbrowser.Document.Close
End Sub

Suchen und highlighten

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