MS Access 2010: текст в поле "RTF" (на самом деле это HMTL) показывает HTML-код вместо предполагаемого форматирования
Эта проблема
Я работаю над базой данных в MS Access 2010, содержащей в основном текст.
Каждая из моих около 4000 записей имеет поле для заметок, содержащее фрагмент текста размером около 2000-4000 символов. В течение длительного периода времени я выделял различные части этих текстов, применяя к ним в поле формы такие вещи, как "жирный шрифт", "выделение желтым" или "подчеркивание" и т. Д. Это работало нормально.
Теперь проблема: внезапно в старых записях форматирование больше не отображается так, как задумано. Вместо этого я вижу соответствующие HTML-теги, такие как <b>, <u>, <BACKGROUND COLOR =...>, <div></div>
и так далее.
Итак, разметка не потеряна. Это даже выглядит здоровым (все закрывающие теги есть). Но Access больше не отображает его правильно (жирный, желтый, маркированный список и т. Д.)
С другой стороны, те записи, с которыми я работал совсем недавно, все еще хорошо отформатированы в RTF, как и должны.
Вопрос
Мне нужен совет, что я могу сделать, чтобы Access правильно распознал HTML и использовал его для отображения графических функций. Некоторая форма строковых операций? Некоторая форма реимпорта?
Документация
Вот пример одной такой записи, которая не отображается правильно:
Важная деталь: то, что они называют "RTF", на самом деле является HTML
Обратите внимание, что я делал все исключительно в MS Access 2010. Вся разметка установлена мной лично (нет импортированной разметки), и вся эта разметка на самом деле HTML. Тем не менее, установка поля таблицы и свойств поля формы для использования HTML означает установку для них того, что они по-прежнему называют "RTF". Очевидно, они не удосужились переименовать его. Из всего, что я знаю, никакой "настоящий" RTF не задействован, это все HTML.
Недавние изменения
Я понятия не имею, что вызвало это. В последнее время я проделал много операций, особенно импортировал еще 1000 записей из внешнего источника, и некоторую дополнительную работу по программированию базы данных на VBA. Я не думаю, что импорт или программирование на VBA вызвало у него проблемы.
Возможный виновник
Однако, одна вещь, которая вполне может быть связана с этим: во время моих различных недавних действий в базе данных я обнаружил, что в таблице, содержащей все записи (t01_main), одно поле, которое должно было иметь форматированный текст (fiedl с именем [SummaryRTF]), не было установить в "RTF" (см. примечание выше; означает HTML), но в "обычный текст".
Как ни странно, до сих пор это не было проблемой. Поле формы, которое отображает текст и где я делаю форматирование было установлено в "RTF" (то есть HTML) в любом случае. У меня не было проблем с форматированием в то время.
Затем я настроил свойство поля таблицы на "RTF" (читай: HTML).
Я решительно полагаю, что именно это сейчас вызывает проблемы. Я полагаю, что на этом этапе в текст были внесены определенные изменения.
Итак, снова вопрос
Вопрос в том, что теперь я могу сделать, чтобы восстановить мое хорошее форматирование на основе HTML, который, очевидно, все еще хранится в поле?
Возможно, полезно знать
- У меня есть резервные копии фаз моей работы, и я могу, если это поможет, импортировать оттуда более старые "здоровые" данные - (из поля таблицы со свойством: plain) в то же поле в последней версии моей таблицы (с теперь "плохие" данные, где то же поле "rtf")
- Я могу работать с VBA для выполнения строковых операций или чего-либо еще, или делать запросы SQL через VBA
- Но, конечно, чем быстрее решение, тем лучше
Addenda
1) Я сейчас проверил в резервной версии базы данных (с полем в таблице, установленным как "обычный текст"). Здесь в табличном представлении текст также имеет HTML-теги; тем не менее, в поле формы (установленном как "RTF") он отображается красиво отформатированным (жирный, желтый и т. д.)
2) Я проверил - в резервной версии - что происходит, когда вы меняете настройку поля таблицы с "Текстовый формат: обычный текст" на "Текстовый формат: RTF". Access 2010 затем отображает предупреждение следующим образом:
1 ответ
Решение проще, чем можно было бы поверить.
MS Access имеет встроенный инструмент для решения проблемы. Как и в исходном вопросе, видимом в разделе "Дополнения", есть функция "PlainText", которую можно использовать с помощью запроса на обновление для удаления тегов HMTL.
Теперь, это само по себе не будет полезным, потому что мне не нужен простой текст; ценной вещью было все мое тщательное форматирование. Однако, как ни странно, он делает больше, а именно восстанавливает старое форматирование.
Итак, я выполнил запрос на обновление
UPDATE t01_main SET t01_main.SummaryTEST = PlainText([SummaryRTF]);
заполнить новое поле [SummaryTEST]. (Я использовал новое поле, а не поле источника, чтобы быть уверенным, что смогу поменять его, если что-то пойдет не так).
Теперь форматирование снова хорошо.
Но внимание! Если некоторые из ваших полей, которые вы смешиваете через мельницу "PlainText()", уже хороши и красивы, функция удалит ваше форматирование.
В любом случае это означало, что я должен был исключить из запроса на обновление все записи, которые все еще были в порядке, то есть те, которые я отформатировал только сегодня после того, как я установил свойство поля таблицы с "обычного" на "RTF". К счастью, все они были только в прошлом году 2017, так что я мог бы просто исключить их:
UPDATE t01_main SET t01_main.SummaryRTF = PlainText([SummaryRTF]) WHERE (((t01_main.Year)<>"2017"));