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 MemofeldernWenn 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. |