Das zweifelsohne prominenteste Steuerelement in Datenbanken ist, vom Label vielleicht abgesehen, das Textfeld. Fast alle Ein- und Ausgaben geschehen über datengebundene Textboxen. Der Umgang mit ihnen scheint trivial zu sein, und in der Regel ist das auch der Fall, aber hin und wieder ist genaueres Hinsehen erforderlich. Schauen wir uns einmal die spezielleren Situationen an.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1605_Textboxen.accdb
Feldentwürfe für Text in Tabellen
Die möglichen Formen von Textfeldern demonstriert die Tabelle tblTexte in Bild 1 in gleich drei Variationen. üblicherweise nimmt der Feldtyp Text String-Daten auf. Die von Access eingestellten Vorgaben für die Eigenschaften des Felds beim Anlegen lassen sich in der Regel unverändert übernehmen.
Bild 1: Entwurfsansicht der Tabelle tblTexte mit markierten Rich-Text-Memofeld
Sie können sie eventuell um Gültigkeitsregeln oder Standardwerte erweitern. Die Länge des Felds ist auf 255 Zeichen voreingestellt. Diesen Wert brauchen Sie nicht zu verändern. Größer geht nicht, und kleiner ist überflüssig, da dies in der Datenbank keinerlei Platz einspart. Soll die Länge begrenzt sein, wie etwa bei Postleitzahlen auf 5, so erledigen Sie dies besser über eine zusätzliche Gültigkeitsregel.
TextKurz ist also ein normales Textfeld. Soll die Kapazität des Felds größer sein, als 255 Zeichen, so nehmen Sie ein Memofeld (TextLang). Es ist in der Lage, bis circa 1 Milliarde Zeichen zu speichern. Das ist gleichzeitig die maximale Größe einer Access-Datenbank in Bytes. Denn grundsätzlich werden alle Textzeichen als Unicode in der Tabelle gespeichert. Somit belegt ein Zeichen zwei Bytes. Allerdings verringert sich das durch die Unicode-Kompression im Schnitt wieder, jedoch nie um den Faktor zwei.
Seit Access 2007 kann direkt im Tabellenentwurf für ein Memofeld zusätzlich die Eigenschaft Textformat gesetzt werden (siehe TextRich). Neben dem normalen Format steht nun auch das Rich-Text-Format zur Verfügung. Intern ändert das nichts am Memofeld und dem Speichermodus, Access weiß dann aber, wie es den Text zu interpretieren hat. So ein Feld gestattet dann schon in der Datenblattansicht der Tabelle die Formatierung des Texts über einen aufpoppenden Toolbar (Bild 2). Dieser taucht nicht auf, wenn die Eigenschaft Rich-Text deaktiviert ist.
Bild 2: Formatierungs-Toolbar für Rich-Text
Access speichert neben den eigentlichen Textdaten dann auch HTML-Tags zur Formatierung, die Sie aber nicht zu Gesicht bekommen. Das funktioniert auch dann nicht, wenn Sie später das Rich-Text-Format deaktivieren. Access entfernt bei diesem Vorgang nämlich sämtliche HTML-Tags.
Die Tabelle tblText wurde mit zwei Datensätzen gefüllt, wobei ein Lore-Ipsum-Generator im Internet zu Anwendung kam (Bild 3). In den Kurztext sind nur wenige Zeichen kopiert, während TextLang und TextRich mit dem identischen Text von etwa 60.000 Zeichen versehen wurden. Für den dritten Datensatz wurde der erste zunächst kopiert. TextLang und TextRich sollten dann durch Copy&Paste in der Länge verdoppelt werden. Das schlägt indes fehl!
Bild 3: Die Tabelle tblTexte enthält drei Datensätze, wobei die Inhalte des letzten durch die Abfrage qry_NewRecord zustandekam
Denn für die Datenblattansicht kommt intern ebenfalls eine Textbox zum Einsatz, und diese erlaubt nur Bearbeitungen bis etwa 65.000 Zeichen! Andernfalls erscheint die Meldung Text ist zu lang, um bearbeitet werden zu können.
Wie aber bekommt man dann mehr Zeichen in das Tabellenfeld
Die eine Möglichkeit ist der Import aus einer Textdatei.
Die andere ist das Füllen des Textfelds über VBA und ein Recordset. Das ist sicher die umständlichste Variante.
Eine Lösung ist jedoch ebenfalls das Anlegen oder Modifizieren von Datensätzen über Anfüge– oder änderungsabfragen. So geschehen in der Abfrage qry_NewRecord aus Bild 4. Die Anfügeabfrage nimmt den Ausgangsdatensatz mit der ID 2 und fügt diesen an die Tabelle tblTexte selbst wieder an, dupliziert ihn also. Dabei werden die Inhalte von TextLang und TextRich aber verdoppelt:
Bild 4: Anfügeabfrage qry_NewRecord zum Duplizieren eines Datensatzes innerhalb der gleichen Tabelle mit Vergrößern zweier Textfelder
[TextLang neu]=[TextLang] & [TextLang]
So kam der Datensatz mit der ID 7 in Bild 2 zustande. Versuchen Sie in der Datenblattansicht nun, den Inhalt der Memofelder dieses Datensatzes zu ändern, sei es durch Einfügen oder Löschen von Zeichen, so funktioniert das abermals nicht. Hier tritt noch nicht einmal eine Meldung auf. Der Datensatz verhält sich so, als sei er gesperrt!
Um es kurz zu machen: Sie werden eine Access-Textbox, ob in der Datenblattansicht oder im Formular, durch keinerlei Tricks dazu bewegen können, Texte länger als 65.000 Zeichen zu bearbeiten. Ist das gewünscht, so kommen Sie um den Einsatz einer alternativen Textbox, etwa dem ActiveX-Steuerelement MSForms-Textbox, die solche Beschränkungen nicht aufweist, nicht vorbei.
Textboxen im Formular
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: