Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 12:03   #1
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию Поля MEMO и тэги форматирования

Добрый день

Возникла такая проблема.
В рабочей базе есть поля MEMO в которые, пользователи вставляют текст через буфер обмена (Ctrl+C, Ctrl+V) из разных источников (Word, Excel, HTML). И помимо самого текста переносятся форматирование текста (Шрифты), которое отображается в поле в виде тэгов (<div><font face="Times New Roman" size=3 color=black>ТЕКСТ</font></div>).

Как возможно вставлять текст из буфера без форматирования?

Поиском ничего подходящего не нашел, кроме сторонних программ. Вариант сторонние программы не подходит так как с базой работают с разных компьютеров и лишний софт устанавливать не желательно.
Wind-up Bird вне форума Ответить с цитированием
Старый 06.09.2012, 16:37   #2
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Как изящно от этого избавиться я не знаю, поэтому делал бы банальным реплэйсом на событие, наверное, потеря фокуса.

Теги имеют структурированный вид, а значит, предположительно, можно привязаться к символам: <, >, color и т.д. Используя функции InStr, Mid, можно забирать эти символы и их окружение.
Предположительно...
Андрэич вне форума Ответить с цитированием
Старый 06.09.2012, 18:45   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Wind-up Bird.
"..Возникла такая проблема.."

Заменив у поля формы значение Формат текста с Формат RTF на Обычный текст
(и для соответствующего поля MEMO таблицы на Обычный текст если не будет использоваться форматирование)
Вы избавитесь от своей "проблемы" без всяких танцев с бубнами.

У Access старше А2007 такой проблемы не было, может стоит перейти на А2003.

Евгений.

Последний раз редактировалось Teslenko_EA; 06.09.2012 в 19:34.
Teslenko_EA вне форума Ответить с цитированием
Старый 07.09.2012, 14:41   #4
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Цитата:
Заменив у поля формы значение Формат текста с Формат RTF на Обычный текст
(и для соответствующего поля MEMO таблицы на Обычный текст если не будет использоваться форматирование)
Вы избавитесь от своей "проблемы" без всяких танцев с бубнами.
В таблице поля MEMO хранятся в виде обычного текста. И при вставке эти тэги появляются.
В этом и загвоздка что форматирование нужно. Т.е необходимо нечто подобное Копирование - очистка формата - вставка - и добавление пользовательского форматирования текста.

В Word Excel есть для этого кнопка Очистить формат..Есть что-то подобное в Access?
Wind-up Bird вне форума Ответить с цитированием
Старый 07.09.2012, 15:39   #5
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Wind-up Bird,
а вы работаете с формами или напрямую с таблицами?
Андрэич вне форума Ответить с цитированием
Старый 07.09.2012, 15:43   #6
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Андрэич Посмотреть сообщение
Wind-up Bird,
а вы работаете с формами или напрямую с таблицами?
через формы.
Wind-up Bird вне форума Ответить с цитированием
Старый 07.09.2012, 18:52   #7
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Цитата:
Сообщение от Wind-up Bird Посмотреть сообщение
В рабочей базе есть поля MEMO в которые, пользователи вставляют текст через буфер обмена (Ctrl+C, Ctrl+V) из разных источников (Word, Excel, HTML). И помимо самого текста переносятся форматирование текста (Шрифты), которое отображается в поле в виде тэгов (<div><font face="Times New Roman" size=3 color=black>ТЕКСТ</font></div>).
Примерно так:
Код:
Function RemoveTags(ByVal str As String) As String

Dim objRegExp As Object
Dim objMatch As Object
Dim objMatches As Object
Dim i As Integer

Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "<.*?>"

Set objMatches = objRegExp.Execute(str)
    For i = 0 To objMatches.Count - 1
        Set objMatch = objMatches.Item(i)
        RemoveTags = objRegExp.Replace(str, " ")
    Next
'MsgBox RemoveTags
End Function
Цитата:
В рабочей базе есть поля MEMO в которые, пользователи вставляют текст через буфер обмена (Ctrl+C, Ctrl+V) из разных источников (Word, Excel, HTML). И помимо самого текста переносятся форматирование текста (Шрифты), которое отображается в поле в виде тэгов ( ТЕКСТ ).
Ещё предварительно с кавычками надо что-то делать...
Вложения
Тип файла: zip RemoveTags.zip (19.0 Кб, 14 просмотров)
Андрэич вне форума Ответить с цитированием
Старый 07.09.2012, 22:28   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Wind-up Bird.
"..В этом и загвоздка что форматирование нужно.." - или Вы не поняли моё сообщение
или Вам на самом деле нравятся "танцы с бубнами", или я не понял Вашего объяснения
не думал, что это может стать проблемой.
В образце БД который любезно предоставил Андрэич, (в его варианте формат БД А2003),
выполняется "борьба" с тэгами пользовательской VBA функцией это я и называл - "танцы с бубнами"
А2003 не поддерживает ввод/отображение RTF форматирования вовсе(!)
отображение тэгов не зависит от формата "хранилища" (MEMO поля таблицы)
только с помощью новых контролов (поля ввода MS Access версий старше 2003)
можно вводить/отображать данные с форматированием RTF
Потому можно предположить, что используемая Вами БД сетевая и кто-то из пользователей
обращается к ней из интерфейса А2007 или выше и тэги вместе с текстом сохраняются.

Текст вставляемый в поле формы со значением Формат текста = Обычный текст теряет всякое
форматирование и соответственно тэги, этого достаточно для "борьбы" с этими служебными символами.
В образце форма с четырьмя полями с заданным форматированием Текст, RTF, Текст, RTF соответственно.
Источником для этих четырех полей служат два МЕМО поля с Текст и RTF форматированием.
Поупражняйтесь во вставке данных с форматированием в разные поля

Евгений.
Вложения
Тип файла: rar RemoveTags_2007.rar (17.6 Кб, 16 просмотров)

Последний раз редактировалось Teslenko_EA; 07.09.2012 в 22:31.
Teslenko_EA вне форума Ответить с цитированием
Старый 10.09.2012, 11:51   #9
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Wind-up Bird.
"..В этом и загвоздка что форматирование нужно.." - или Вы не поняли моё сообщение
или Вам на самом деле нравятся "танцы с бубнами", или я не понял Вашего объяснения
не думал, что это может стать проблемой.
В образце БД который любезно предоставил Андрэич, (в его варианте формат БД А2003),
выполняется "борьба" с тэгами пользовательской VBA функцией это я и называл - "танцы с бубнами"
А2003 не поддерживает ввод/отображение RTF форматирования вовсе(!)
отображение тэгов не зависит от формата "хранилища" (MEMO поля таблицы)
только с помощью новых контролов (поля ввода MS Access версий старше 2003)
можно вводить/отображать данные с форматированием RTF
Потому можно предположить, что используемая Вами БД сетевая и кто-то из пользователей
обращается к ней из интерфейса А2007 или выше и тэги вместе с текстом сохраняются.

Текст вставляемый в поле формы со значением Формат текста = Обычный текст теряет всякое
форматирование и соответственно тэги, этого достаточно для "борьбы" с этими служебными символами.
В образце форма с четырьмя полями с заданным форматированием Текст, RTF, Текст, RTF соответственно.
Источником для этих четырех полей служат два МЕМО поля с Текст и RTF форматированием.
Поупражняйтесь во вставке данных с форматированием в разные поля

Евгений.
Используется всеми пользователями Access 2010.
Форматирование нужно, иначе бессмысленно хранить тэги форматирование (форматирование). Но при вставке из разных источником (с разным форматированием). И последующей изменение пользователем форматирование получается "каша" из тэгов форматирования. Так как изначальное форматирование не удаляется
Wind-up Bird вне форума Ответить с цитированием
Старый 10.09.2012, 12:31   #10
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Wind-up Bird,
после того как данные попадают в это мемо-поле, они впоследствии ещё редактируются?

Если ответ Да -то я полностью присоединяюсь к тому, что говорит вам Евгений. В этом случае служебный текст храниться не должен. А предложенное им решение - это самый оптимальный способ этого избежать
Андрэич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойство Lines поля Memo Jaga_89 Общие вопросы Delphi 8 16.02.2012 18:11
Загрузка Memo поля в Hint Gulik БД в Delphi 1 03.07.2011 00:54
Помещать поля таблицы БД в MEMO ulala Помощь студентам 16 24.10.2010 20:38
DBGrid и поля с типом MEMO doncova1 БД в Delphi 4 27.03.2009 01:20
Отображение Аксесовского поля MEMO в DBMemo Pinya БД в Delphi 2 12.08.2008 09:20