Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Ribbon zu groß

Wer größere Anwendungen mit einem Ribbon ausstattet, dass viele, viele Befehle mit langen Screentip- und Supertiptexten enthält, kann an die Grenzen der für das Speichern der Ribbondefinition verwendeten Tabelle USysRibbons stoßen. Der Grund: Ein Memo-Feld fasst maximal 64.000 Zeichen und ist irgendwann voll. Was tun?

Grenzen von Memofeldern

Wenn Sie einem Memofeld von Hand Text hinzufügen, ist laut Access-Spezifikation bei 65.536, nach praktischen Tests jedoch schon bei 64.000 Zeichen Schluss.

Wie also bekommen Sie die Ribbon-Definition in die Tabelle?

Das ist nicht schwer, genau genommen liefert die Spezifikation nämlich auch auf diese Frage eine Antwort: nämlich per Code.

Dummerweise funktionierten aber nicht alle Möglichkeiten, um per Code Text in ein Memofeld zu schreiben, gleichgut und mit langen Zeichenketten, die größer als 64.000 Zeichen sind: Mit CurrentDB.Execute gelingt dies nämlich genauso wenig wie von Hand.

Sie müssen dazu schon ein Recordset öffnen und die Daten per DAO hinzufügen. Wenn der Datensatz in USysRibbons neu hinzugefügt werden soll, kann dies ungefähr so aussehen:

Dim rst As DAO.Recordset

Dim db As DAO.Database

Set db = CurrentDB

Set rst = db.OpenRecordset("SELECT * FROM USysRibbons Where 1=2", dbOpenDynaset)

rst.AddNew

rst!Ribbonname = strRibbonname

rst!RibbonXML = strXML

rst.Update

Dabei fügen Sie den Ribbonnamen und die Ribbon-Definition zuvor in die entsprechenden String-Variablen ein. Auf diese Weise können Sie nun bis zu einem Gigabyte lange Ribbon-Definitionen einsetzen.

Nur zur Information: Wer die Anzahl von 64.000 Zeichen überschreitet, hätte theoretisch den gesamten Speicherplatz des guten, alten C64 mit einer Ribbon-Definition gefüllt - das sind Ram und Rom zusammen.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.