MS Access 2010: текст в поле «RTF» (на самом деле это HMTL) показывает HTML-код вместо предполагаемого форматирования
1350
Christian Geiselmann
Эта проблема
Я работаю над базой данных в 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 затем отображает предупреждение следующим образом:
RTF очень отличается от HTML. Я подозреваю, что HTML был вставлен (или, как вы говорите, импортирован из других источников), а не применен с использованием гаджетов форматирования любого типа. например, Bold является ``в html, но` \ b \ b0` в формате rtf.
Yorik 6 лет назад
0
@Yorik. Важно здесь! Я сделал все это исключительно в MS Access 2010, и все форматирование там на самом деле HTML, хотя в свойствах поля оно называется «RTF». Но нет фактического «RTF» (как в вашем примере), это, я повторяю, весь (!) Чистый (!) HTML (!) Как в старых, так и в новых записях. - Я не импортирую текст RTF; Я импортирую только простой текст.
Christian Geiselmann 6 лет назад
0
Извините, мои изменения, чтобы сделать ваше изображение встроенным, возможно, пересеклись с вашим последним обновлением. Я посмотрел на различия, но мне трудно разобраться, если я ранее отменил ваше предыдущее обновление.
AFH 6 лет назад
0
Тогда это не RTF, вы должны изменить свои теги. Кстати, вы использовали запрос и т. Д.? Запросы иногда искажают типы полей
Yorik 6 лет назад
0
@Yorik Да, ты прав. Я сделаю это прямо сейчас. Я был введен в заблуждение этой странной терминологией, которую они используют.
Christian Geiselmann 6 лет назад
0
@Yorik: Использование запросов: запросы участвуют все время. Содержимое поля проходит через запрос для отображения в двух разных формах и одном отчете. - Во время обычной работы я делаю много фильтрации в основной форме (обычно с «фильтром по форме»). Фильтрация - это точка всей базы данных.
Christian Geiselmann 6 лет назад
0
1 ответ на вопрос
0
Christian Geiselmann
Решение проще, чем можно было бы поверить.
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"));