MS Access не отображает разрывы строк в существующих данных.

Вопрос или проблема

Я создаю интерфейс MS Access для данных из другого источника.

В данном случае это связанная таблица SQL Server.
Данные фактически импортированы из веб-сервера LAMP с общим хостингом.
Это результаты онлайн-викторины со страницы WordPress, из плагина (wp-pro-quiz).

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

Я нахожусь в форме, потому что выполняю ввод данных, связанный с этой информацией.
Я пробовал это с текстовым полем или меткой — оба варианта подходят, потому что я не хочу редактировать сам этот столбец.
Я продолжаю проверять с помощью разных инструментов, что там есть символы разрыва строк.

Я также пытался редактировать данные, используя текстовое поле и нажимая Ctrl-Enter.
Это дает мне разрыв строки на экране.
Клянусь, когда я проверяю данные в текстовом редакторе, символы такие же, как в моей таблице.
Ааргх!

Что нужно Access, чтобы быть счастливым и показывать мои разрывы строк из таблицы?

Итак, что нужно Access для уважения разрывов строк:

  • Windows разрывы строк
  • == CR-LF
  • или – если вам нравится Access – Chr(13)&Chr(10), или vbCrLf

Если ваши данные из unix-системы, очень возможно, что используются просто “linefeed” = LF = Chr(10).

Вы говорите, что проверяете исходные данные в текстовом редакторе и они имеют crlf. Предполагаю, что вы работаете на Windows, если используете Access.
Поскольку crlf является стандартом в Windows, следует спросить:

Есть ли вероятность, что вы проводите эту проверку таким образом, который заставляет все разрывы строк отображаться как crlf в этом текстовом редакторе – скрывая проблему исходных данных?
Если вы копируете и вставляете, риск этого еще выше в некоторых текстовых редакторах.



Наличие всех разрывов строк LF – это действительно реалистичное объяснение здесь.
Поскольку вы комфортно просматриваете специальные символы, попробуйте проверить окончания строк в ваших исходных данных с помощью инструмента, который никогда не изменяет данные автоматически, такого как xvi32:
http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm

  • Если вы обнаружите, что это только LF для всех ваших разрывов строк,
  • сделайте замену строки для Chr(10) –> Chr(13)&Chr(10)
  • в зависимости от того, где это наиболее целесообразно для вашего приложения.

и Access покажет разрывы строк.

Ответ или решение

Ваш запрос связан с проблемой отображения переносов строк в MS Access при работе с данными, импортированными из внешней базы данных, основанной на SQL Server. Важно отметить, что данные поступают из WordPress плагина (wp-pro-quiz), развернутого на LAMP серверe. Давайте подробно разберем, как решить проблему отображения переносов строк в MS Access.

Формулировка проблемы

MS Access не отображает переносы строк в одном из столбцов таблицы, связанной с SQL Server. Вы хотите видеть текст с сохранением форматирования, но пока добиваетесь этого только путем редактирования вручную, используя Ctrl+Enter.

Причины

Наиболее вероятная причина — использование различных символов, обозначающих перенос строки в Windows и Unix-системах:

  • Windows использует последовательность CR-LF (Carriage Return – Line Feed), что сохраняется как Chr(13) & Chr(10) или vbCrLf в Visual Basic.
  • Unix-системы, включая большинство LAMP серверов, используют только LF (Line Feed), что соответствует Chr(10).

Решение проблемы

  1. Перепроверка данных: Убедитесь, что данные действительно содержат нужные символы CR-LF. Сделать это можно с помощью текстового редактора, который не изменяет форматирование, например, xvi32. Используйте его для тщательной проверки конца строк в вашем источнике данных.

  2. Конвертация символов: Если обнаружится, что данные содержат только LF, необходимо преобразовать эти символы в CR-LF. Это можно сделать с помощью:

    • Функции в SQL Server, если у вас есть доступ к изменениям базы данных:
      UPDATE Таблица
      SET Столбец = REPLACE(Столбец, CHAR(10), CHAR(13) + CHAR(10))
    • Использования VBA в MS Access для замены:
      Private Sub ConvertLineBreaks()
       Me.Текстовое_Поле = Replace(Me.Текстовое_Поле, Chr(10), Chr(13) & Chr(10))
      End Sub

      Этот код можно связать с событием загрузки формы или другого подходящего события.

  3. Проверка на других платформах: После преобразования символов переноса строки проверьте отображение данных в Access для буквального восприятия переноса строк.

Заключение

Для уверенности в корректной работе MS Access с данными, содержащими переносы строк, необходимо гарантировать наличие CR-LF в соответствующих местах. Избегайте редакторов, которые могут неправильно интерпретировать стандартные символы. При внедрении изменений и проверке полученной информации вы добьетесь правильного отображения данных во всех представлениях в Access.

Эти шаги помогут улучшить взаимодействие системы с данными и обеспечить корректное поведение приложения.

Оцените материал
Добавить комментарий

Капча загружается...