MS Access 2010: Text in einem "RTF" -Feld (eigentlich HMTL) zeigt HTML-Code anstelle der beabsichtigten Formatierung

1481
Christian Geiselmann

Das Problem

Ich arbeite an einer Datenbank in MS Access 2010, die im Wesentlichen Text enthält.

Jede meiner ungefähr 4000 Datensätze hat ein Memo-Feld, das einen Text von ungefähr 2000-4000 Zeichen enthält. Über einen langen Zeitraum habe ich verschiedene Teile dieser Texte hervorgehoben, indem ich in einem Formularfeld Dinge wie "Fett" oder "Gelb hervorheben" oder "Unterstreichen" usw. anwende. Das hat gut funktioniert.

Nun das Problem: Bei den älteren Datensätzen wird die Formatierung plötzlich nicht mehr wie beabsichtigt angezeigt. Stattdessen sehe ich die entsprechenden HTML-Tags wie <b>, <u>, <BACKGROUND COLOR =...>, <div></div>und so weiter.

Das Markup geht also nicht verloren. Es sieht sogar gesund aus (alle schließenden Tags sind vorhanden). Access zeigt es jedoch nicht mehr korrekt an (fett, gelb, Aufzählungsliste usw.).

Andererseits sind die Aufnahmen, mit denen ich kürzlich gearbeitet habe, immer noch in RTF so formatiert, wie sie sollten.

Die Frage

Ich brauche einen Rat, was ich tun kann, damit Access die HTML-Datei richtig erkennt und zur Anzeige von Grafikfunktionen verwendet. Eine Form von Stringoperationen? Irgendeine Form des Re-Imports?

Dokumentation

Hier ist ein Beispiel für einen solchen Datensatz, der nicht korrekt angezeigt wird:

Screenshot des Textes in der Tabelle mit HTML statt Formatierung

Wichtiges Detail: Was sie "RTF" nennen, ist eigentlich HTML

Beachten Sie, dass ich alles ausschließlich in MS Access 2010 durchgeführt habe. Das gesamte Markup wird von mir persönlich festgelegt (es wird kein importiertes Markup angezeigt), und dieses Markup ist eigentlich HTML. Wenn Sie jedoch die Eigenschaften von Tabellenfeld und Formularfeld für die Verwendung von HTML festlegen, müssen Sie sie auf das setzen, was sie dort noch "RTF" nennen. Offensichtlich haben sie sich nicht die Mühe gemacht, es umzubenennen. Nach allem was ich weiß, ist keine "echte" RTF beteiligt, es ist alles HTML.

Letzte Änderungen

Ich habe keine Ahnung, was das verursacht hat. Ich habe in letzter Zeit viele Operationen durchgeführt, insbesondere den Import von weiteren 1000 Datensätzen aus einer externen Quelle sowie einige zusätzliche Arbeit bei der VBA-Programmierung der Datenbank. Ich glaube nicht, dass der Import oder die VBA-Programmierung zu Problemen geführt hat.

Ein möglicher Täter

Eine Sache, die möglicherweise in Verbindung steht, ist jedoch: Während meiner verschiedenen kürzlich durchgeführten Aktivitäten in der Datenbank habe ich erkannt, dass in der Tabelle, die alle Datensätze (t01_main) enthält, das eine Feld, das formatierten Text haben sollte (fiedl mit dem Namen [SummaryRTF]), nicht war auf "RTF" gesetzt (siehe Hinweis oben; bedeutet HTML), aber auf "Nur-Text".

Seltsamerweise war dies bisher kein Problem. Das Formularfeld, in dem der Text angezeigt wird und in dem ich die Formatierung vorgenommen habe, wurde trotzdem auf "RTF" (dh HTML) gesetzt. Ich hatte zu dieser Zeit kein Problem mit der Formatierung.

Ich habe dann die Tabellenfeld-Eigenschaft auf "RTF" (gelesen: HTML) eingestellt.

Ich vermute stark, dass dies nun das Problem verursacht. Ich vermute, während dieses Schritts wurden im Text einige Änderungen vorgenommen.

Also nochmal die Frage

Die Frage ist: Was kann ich jetzt tun, um meine schöne Formatierung wiederherzustellen, basierend auf dem HTML-Code, der offensichtlich noch im Feld vorhanden ist?

Vielleicht gut zu wissen

  • Ich habe Backups der Phasen meiner Arbeit und könnte, wenn das hilft, ältere "gesunde" Daten importieren - (aus dem Tabellenfeld mit Eigenschaft: plain) in dasselbe Feld in der neuesten Version meiner Tabelle (mit der jetzt "schlechte" Daten, wobei das gleiche Feld "RTF" ist)
  • Ich kann mit VBA arbeiten, um Zeichenfolgenoperationen oder was auch immer auszuführen, oder SQL-Abfragen über VBA durchführen
  • Je schneller die Lösung, desto besser

Nachtrag

1) Ich habe nun eine Sicherungsversion der Datenbank eingecheckt (wobei das Feld in der Tabelle als "Nur-Text" festgelegt ist). In der Tabellendarstellung enthält der Text auch HTML-Tags. Im Formularfeld (als "RTF" eingestellt) wird es jedoch schön formatiert (fett, gelb usw.) angezeigt.

2) Ich habe - in einer Backup-Version - eingecheckt, was passiert, wenn Sie die Einstellung des Feldes "Textformat: Nur Text" in "Textformat: RTF" ändern. Access 2010 zeigt dann eine Warnmeldung wie folgt an:

MS Access-Tabellenfeldkonvertierung von Nur-Text in (Pseudo) RTF

0
RTF unterscheidet sich sehr von HTML. Ich vermute, der HTML-Code wurde eingefügt (oder importiert aus anderen Quellen, wie Sie sagen), anstatt mit beliebigen Formatierungs-Gadgets angewendet zu werden. Fett ist zum Beispiel ``in HTML aber` \ b \ b0` im RTF-Format. Yorik vor 6 Jahren 0
@Yorik. Wichtig hier! Ich habe das alles ausschließlich in MS Access 2010 gemacht, und alle Formatierungen dort sind eigentlich HTML, obwohl es in den Feldeigenschaften "RTF" heißt. Es gibt aber keine "RTF" (wie in Ihrem Beispiel), es ist, ich repipe, alle (!) Reinen (!) HTML (!) Sowohl in den älteren als auch in den neueren Datensätzen. - Ich importiere keinen RTF-Text. Ich importiere nur Klartext. Christian Geiselmann vor 6 Jahren 0
Entschuldigung, meine Bearbeitung, um Ihr Bild online zu machen, ist möglicherweise mit Ihrem neuesten Update gekreuzt. Ich habe mir die Unterschiede angesehen, aber ich finde es schwer herauszufinden, ob ich Ihr vorheriges Update zuvor zurückgesetzt habe. AFH vor 6 Jahren 0
Dann ist es kein RTF, Sie sollten Ihre Tags ändern. Haben Sie übrigens eine Abfrage verwendet? Bei Abfragen werden manchmal Feldtypen verwirrt Yorik vor 6 Jahren 0
@Yorik Ja, du hast recht. Ich werde das jetzt machen. Ich wurde von dieser seltsamen Terminologie, die sie benutzen, in die Irre geführt. Christian Geiselmann vor 6 Jahren 0
@Yorik: Verwendung von Abfragen: Abfragen sind immer involviert. Der Feldinhalt durchläuft eine Abfrage und wird in zwei verschiedenen Formularen und einem Bericht angezeigt. - Während der normalen Arbeit führe ich viele Filter in meinem Hauptformular aus (normalerweise mit "filter by form"). Die Filterung ist der Punkt der gesamten Datenbank. Christian Geiselmann vor 6 Jahren 0

1 Antwort auf die Frage

0
Christian Geiselmann

Die Lösung ist einfacher als man glauben würde.

MS Access verfügt über ein integriertes Tool zur Behebung des Problems. Wie in der Originalfrage, die unter "Addenda" sichtbar ist, gibt es eine Funktion namens "PlainText", mit der über eine Aktualisierungsabfrage die HMTL-Tags entfernt werden können.

Nun, das allein wäre überhaupt nicht hilfreich, da ich keinen Klartext brauche. das Wertvolle war alles meine sorgfältige Formatierung. Seltsamerweise tut es jedoch mehr, nämlich die alte Formatierung wiederherzustellen.

Ich habe also eine Aktualisierungsabfrage ausgeführt

UPDATE t01_main SET t01_main.SummaryTEST = PlainText([SummaryRTF]); 

um ein neues Feld auszufüllen [SummaryTEST]. (Ich habe ein neues Feld anstelle des Quellfeldes verwendet, um sicherzugehen, dass ich es rückgängig machen kann, falls etwas schief geht).

Nun ist die Formatierung wieder schön.

Aber Achtung! Wenn einige Ihrer Felder, die Sie durch die "PlainText ()" - Mühle mischen, bereits schön und schön sind, würde die Funktion Ihre Formatierung entfernen .

Im Mai bedeutete dies, dass ich alle Datensätze, die noch in Ordnung waren, von der Aktualisierungsabfrage ausschließen musste, dh diejenigen, die ich gerade heute formatiert hatte, nachdem ich die Tabellenfeld-Eigenschaft von "plain" auf "RTF" gesetzt hatte. Zum Glück waren das alles gerade erst vom letzten Jahr 2017, also konnte ich sie einfach ausschließen:

UPDATE t01_main SET t01_main.SummaryRTF = PlainText([SummaryRTF]) WHERE (((t01_main.Year)<>"2017"));