Вопрос или проблема
Я создаю интерфейс 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).
Решение проблемы
-
Перепроверка данных: Убедитесь, что данные действительно содержат нужные символы CR-LF. Сделать это можно с помощью текстового редактора, который не изменяет форматирование, например, xvi32. Используйте его для тщательной проверки конца строк в вашем источнике данных.
-
Конвертация символов: Если обнаружится, что данные содержат только 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
Этот код можно связать с событием загрузки формы или другого подходящего события.
- Функции в SQL Server, если у вас есть доступ к изменениям базы данных:
-
Проверка на других платформах: После преобразования символов переноса строки проверьте отображение данных в Access для буквального восприятия переноса строк.
Заключение
Для уверенности в корректной работе MS Access с данными, содержащими переносы строк, необходимо гарантировать наличие CR-LF в соответствующих местах. Избегайте редакторов, которые могут неправильно интерпретировать стандартные символы. При внедрении изменений и проверке полученной информации вы добьетесь правильного отображения данных во всех представлениях в Access.
Эти шаги помогут улучшить взаимодействие системы с данными и обеспечить корректное поведение приложения.