Эта проблема

Я работаю над базой данных в MS Access 2010, содержащей в основном текст.

Каждая из моих около 4000 записей имеет поле для заметок, содержащее фрагмент текста размером около 2000-4000 символов. В течение длительного периода времени я выделял различные части этих текстов, применяя к ним в поле формы такие вещи, как "жирный шрифт", "выделение желтым" или "подчеркивание" и т.д. Это работало нормально.

Теперь проблема: внезапно в старых записях форматирование больше не отображается так, как задумано. Вместо этого я вижу соответствующие HTML-теги, такие как <b>, <u>, <BACKGROUND COLOR =...>, <div></div> и так далее.

Итак, разметка не потеряна. Это даже выглядит здоровым (все закрывающие теги есть). Но Access больше не отображает его правильно (жирный, желтый, маркированный список и т.д.)

С другой стороны, те записи, с которыми я работал недавно, все еще хорошо отформатированы в RTF, как и должны.

Вопрос

Мне нужен совет, что я мог бы сделать, чтобы Access правильно распознал HTML и использовал его для отображения графических функций. Некоторая форма строковых операций? Некоторая форма реимпорта?

Документация

Вот пример одной такой записи, которая не отображается правильно:

Снимок экрана: текст в таблице, показывающий 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 затем отображает предупреждение следующим образом:

Преобразование полей таблицы MS Access из простого текста в (псевдо) RTF

1 ответ1

0

Решение проще, чем можно было бы поверить.

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"));

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .