August 17, 2022, 16:36:12

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Der Text ist zu lang, um bearbeitet zu werden

Begonnen von Haifeif, Juli 27, 2022, 09:59:25

⏪ vorheriges - nächstes ⏩

Haifeif

Moin.

Ich habe eine Menge Source Code Blöcke, die ich katalogisieren und weiterverwendbar machen will.

Dazu verwende ich eine Access 365 Datenbank. Mein Problem ist, das theoretisch der Feldtyp <Langer Text> Gigabyte Platz haben sollte, aber wenn ich einen Source Code von mehr als 64 kB einfügen will, die oben stehende Fehlermeldung erhalte.

Recherchen ergaben, das wohl das Formular das Problem sei. (?) Tatsache ist, ich muss den Text in dem Feld nicht sehen oder gar bearbeiten. Ich muss ihn nur in die Tabelle eintragen und wieder auslesen können.

Hier enden jetzt meine Access Kenntnisse und ich bitte um Hilfe!

Vielen lieben Dank!

ebs17

ZitatSource Code von mehr als 64 kB
Wie viel Zeilen sind das so?

Mein erstes Ansinnen wäre, über ein Refactoring überschaubare und brauchbare Prozeduren zu erhalten. Zielmarke wären so maximal 40 Zeilen pro Prozedur/Funktion.
Das steigert die Wiederverwendbarkeit und nachfolgend dann auch die Verwaltbarkeit.

Mit freundlichem Glück Auf!

Eberhard

Haifeif

Keine Chance, es sind zu viele Zeilen.

Aber warum tut Access nicht, was es soll? Ich möchte nicht wirklich (in erster Linie) meine Anwendung diskutieren - das kommt ggf. später.

Der Datentyp <Langer Text> wird von MICROSOFT wie folgt beschrieben:

Langer Text    Bei ACCDB-Dateien funktioniert das Feld "Langer Text" auf gleiche Weise wie das Feld "Memo" der älteren Versionen. Das heißt, dass bis zu etwa einem Gigabyte Text gespeichert werden kann, auch wenn Steuerelemente in Formularen und Berichten nur die ersten 64.000 Zeichen anzeigen können. Sie können Felder des Typs "Langer Text" für die Anzeige von Rich Text einrichten, der Formatierungen wie Fettschrift und Unterstreichung umfasst.

Und genau das tut nicht! Warum? Oder mache ich was falsch?

Gruß, Uwe

PhilS

Zitat von: Haifeif am Juli 28, 2022, 10:59:13Und genau das tut nicht! Warum? Oder mache ich was falsch?
Was genau "tut nicht"? Du hattest doch ursprünglich geschrieben, dass du das Problem hast, wenn du den Text in der Benutzeroberfläche bearbeiten willst. - Das entspricht doch der Beschreibung aus deinem Zitat.

Um zu erkennen, ob du etwas falsch machst, oder nicht, müsste man erstmal wissen, was du genau machst.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Haifeif

Hallo, Phil.

Wie oben beschrieben, habe ich eine Datenbank erstellt, in der ich Codeblöcke (ASCII Text) speichern und katalogisieren will. In einer Tabelle habe ich dazu, wie oben beschrieben ein Feld als <Langer Text> angelegt, da dieser Feldtyp mehrere Gigabyte handeln können soll.

Füge ich nun ASCII Texte ein und es sind mehr als 64 kB, meldet ACCESS einen Fehler <Fehler: Der Text ist zu lang und kann nicht bearbeitet werden> und verweigert das einfügen.

Auf die Gefahr hin, mich zu wiederholen: Wie oben beschrieben ist das angeblich ein Fehler im Formular Teil von Access.

Brauchst Du sonst noch eine Info?

LG Uwe

ebs17

ZitatTatsache ist, ich muss den Text in dem Feld nicht sehen oder gar bearbeiten. Ich muss ihn nur in die Tabelle eintragen und wieder auslesen können.
Wie kommst Du auf den Fehler?
Sprich: Wie erzeugst Du den Zugriff auf den Code? Wie trägst Du ein?
Vom reinen Anschauen und Nachdenken wird noch keine Fehlermeldung erzeugt.
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: Haifeif am August 02, 2022, 20:18:15Füge ich nun ASCII Texte ein und es sind mehr als 64 kB, meldet ACCESS einen Fehler <Fehler: Der Text ist zu lang und kann nicht bearbeitet werden> und verweigert das einfügen.

Auf die Gefahr hin, mich zu wiederholen: Wie oben beschrieben ist das angeblich ein Fehler im Formular Teil von Access.
Du hast immer noch nicht klar beschrieben, wie du den Text einfügst. Ich vermute, du willst den langen Text per Copy&Paste in eine Textbox einfügen. - Wie wir nun alle wissen, geht das nicht.

Das ist aber kein Fehler. In der Spezifikation, die du auch selbst angeführt hast, steht doch dass maximal 64K Zeichen in einer Textbox bearbeitet werden können.

Alternativ, kannst du längere Texte aus einer Datei einlesen und direkt in die Tabelle schreiben.
Wenn du ein anderes UI-Control,z.B. ein Microsoft Form Textbox (bei den ActiveX-Controls) verwendest, kannst du darüber wahrscheinlich (ungetestet) auch längere Text über Copy&Paste einfügen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Haifeif

Hallo zusammen.

Ja, ich füge den Text mit Copy + Paste ein. Die Texte sind JS Seitenbeschreibungen aus einem anderen System. Sie stehen nicht als eigenständige Dateien zu Verfügung, ich muss sie in einem anderen Programm markieren und kopieren.

Somit ändere ich meine Fragestellung: Wie füge ich den Inhalt der Zwischenablage in ein Feld mit dem Format <Langer Text> ein?

VBA?

Danke für Eure Anstrengungen bis hier hin,

LG Uwe

Haifeif

@PhilS: Habe in einem Deiner Beiträge folgendes gefunden:

DoCmd.GoToRecord acActiveDataObject,,acNewRec
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste

Das klingt ansatzweise gut. Aber wie stelle ich sicher, dass der Inhalt in das "richtige" Feld der Tabelle geschrieben wird?

LG Uwe

ebs17

Zitatlängere Texte aus einer Datei einlesen
Man könnte an der Stelle in eine leere Textdatei hineinkopieren. Die nimmt die Datenmenge klaglos auf.

Zum Schreiben in die Tabelle etwa:
Dim rs As DAO.Recordset
Set rs = CurrentDb.Openrecordset("Zieltabelle", dbOpenDynaset)
With rs
   .AddNew
   .Fields("Code") = ReadFile("X:\Irgendwo\DeineTextdatei.txt")
   ' weitere Felder
   .Update
   .Close
End With
ReadFile aus Beliebige Datei einlesen
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: Haifeif am August 03, 2022, 17:15:51@PhilS: Habe in einem Deiner Beiträge folgendes gefunden:

DoCmd.GoToRecord acActiveDataObject,,acNewRec
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste
Es fällt mir schwer zu glauben, dass ich diesen Code irgendwo gepostet habe, außer vielleicht als Zitat. - Der Grund ist genau deine Frage. Dieses DoCmd/RunCommand-Gerödel ist sehr unpräzise und hochgradig davon abhängig, dass der Benutzer genau das getan hat, was der Entwickler erwartet, ohne es prüfen zu können. Außerdem würde das auch das Problem nicht lösen, weil hier wieder von der konventionellen Access.Textbox blockiert wird.


Zitat von: Haifeif am August 03, 2022, 17:05:08Wie füge ich den Inhalt der Zwischenablage in ein Feld mit dem Format <Langer Text> ein?
Ich hatte doch dazu schon einen Vorschlag gemacht (Microsoft Forms Textbox). Gibt es damit ein Problem, oder hast du den Vorschlag nur überlesen?
Inzwischen habe ich diesen Ansatz auch mit bis zu 200k Zeichen ausprobiert. - Kein Problem.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Haifeif

PhilS, ich habe es gelesen, aber nicht richtig verstanden. Mir war nicht bewusst, dass ich ActiveX Controls statt der Access Komponenten verwenden kann. Mein Fehler ...

Ich versuche das, denn 200k reichen definitiv.

Danke, Uwe

Haifeif

PhilS,

perfekt! Das war die Lösung. Hat auf Anhieb so funktioniert, wie ich es brauche!

Vielen Dank für die Geduld!

LG Uwe

Haifeif

@ Admin: Sorry, aber wie / wo finde ich bitte

<Neuigkeiten: Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!>

PhilS

Zitat von: Haifeif am August 04, 2022, 13:25:39<Neuigkeiten: Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!>
Sorry, der Button ist seit dem letzten Forumsupdate nicht mehr vorhanden.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor