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 6/2006.

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

Bauen Sie sich ein Formular für die Suche im Inhalt eines Textfeldes.

Techniken

Formulare, VBA

Voraussetzungen

Access 97 oder höher

Beispieldatei

SucheInTextfeldern.mdb

Shortlink

414

Suchen in Textfeldern

André Minhorst, Duisburg

Das Suchen nach Texten in Memofeldern funktioniert in Access tadellos - wenn auch nicht besonders schnell, da der Inhalt von Memofeldern nicht indiziert werden kann. Hat man aber einmal den gewünschten Datensatz gefunden, steht man vor dem nächsten Problem: Wie kommt man nun zur passenden Textstelle? Dies ist ganz einfach: Sie schauen sich die Lösung in diesem Beitrag an.

Manchmal sucht man auch gar nicht erst nach dem Datensatz, dessen Memofeld den passenden Text enthält, weil man genau weiß, wo sich dieser befindet. Dies ist etwa bei der Vertragsverwaltung aus [1] der Fall, bei der man den passenden Vertragsdatensatz schon herausgesucht hat und nur noch eine bestimmte Textstelle im Vertragstext sucht.

Da das dortige Formular zur Erfassung und Bearbeitung von Verträgen bereits mit ausreichend Steuerelementen gesegnet ist, wird die Anzeige der Vertragstexte in ein eigenes Formular ausgelagert – etwa in jenes aus Abb. 1.

pic001.tif

Abb. 1: Das Formular zum Durchsuchen von Texten

Ein solches Formular sollte ein Eingabefeld zum Erfassen des Suchbegriffs sowie eine Schaltfläche zum Starten des Suchvorgangs sowie eine Möglichkeit zum Fortsetzen des Suchvorgangs nach der ersten gefundenen Textstelle besitzen.

Im Beispiel erledigt eine Schaltfläche mit der Beschriftung Weitersuchen diese Aufgabe.

Bevor es zur eigentlichen Suche geht, soll das Formular mit den Steuerelementen sowie ein wenig Komfort ausgestattet werden: Wenn Sie in diesem Formular nicht in langen Texten suchen wollten, brauchten Sie kein solches Formular, also soll der Benutzer auch eine Menge Text sehen können. Möglichst so viel, wie auf seinen Monitor passt oder wie er gerade sehen möchte. Das bedeutet, dass der Benutzer das Formular sowie das enthaltene Textfeld anpassen können soll.

Da die anderen Steuerelemente nicht von der Größenänderung betroffen sind, packen Sie diese am besten in den Kopfbereich des Formulars und das Textfeld in den Detailbereich, sodass die Entwurfsansicht wie in Abb. 2 aussieht.

pic002.tif

Abb. 2: Die Entwurfsansicht des Suchformulars

Fehlt nur noch ein kleine Routine, die beim Ändern der Größe des Formulars das Textfeld anpasst. Diese finden Sie in Listing 1: Die Routine verwendet die Eigenschaft InsideHeight des Formulars, um dessen Gesamthöhe zu ermitteln, und zieht die Höhe des Kopfbereichs ab.

Listing 1: Diese Routine passt die Größe des Textfeldes dem übergeordneten Formular an.

Private Sub Form_Resize()

     If Me.InsideHeight - Me.Formularkopf.Height > 150 Then

         Me!txtInhalt.Height = _
Me.InsideHeight - Me.Formularkopf.Height - 150

     End If

     Me!txtInhalt.Width = Me.Form.InsideWidth - 150

End Sub

Ist dieser größer als ein bestimmter Wert, der vom Abstand des Textfeldes von den Formularrändern abhängt, passt die Routine die Höhe des Textfeldes um eben die um den Rand reduzierte Höhe an.

Bei der Breite ist dies nicht nötig: Hier muss mit Ausnahme des Abstands kein weiterer Bereich links oder rechts vom Textfeld berücksichtigt werden, sodass die Textfeldbreite der um den Wert 150 verminderten Formularbreite entspricht.

Jedesmal, wenn der Benutzer die Größe des Formulars verändert, ruft er damit diese Routine auf und passt die Größe des Textfeldes damit automatisch an. Wenn Sie selbst ein ähnliches Formular erstellen, müssen Sie noch prüfen, wie groß die vorhandenen Abstände zwischen Textfeld und oberem und unterem Rand sowie linkem und rechtem Rand sind, und die Summen der jeweiligen Paare von Höhe und Breite subtrahieren. Die Abstände bekommen Sie am einfachsten heraus, indem Sie etwa in der Ereignisprozedur Beim Öffnen folgende Zeilen einfügen (jeweils in einer Zeile):

Debug.Print “Seitlicher Rand: “
& Me.InsideWidth - Me.txtInhalt.Width

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.