2009-11-04 7 views
1

Мне нужно использовать форматирование форматированного текста для поля в отчете в MS Access, чтобы использовать интервал между символами. В отчете попытка изменить текстовый формат в свойствах поля из простого текста в Rich Text. Выдает ошибку: «Введенное вами значение недействительно для этого свойства». Я предполагаю, что это потому, что поле не является типом данных memo (видимо, единственным типом данных, поддерживающим RTF). Именно в формате «XXXX_XXXX», где * и _ прописные буквы, а крестики представляют цифры от 0 до 9.MS Access Преобразование подобной функции в Memo Тип данных

Для связи: рабочий процесс этой БД является то, что она имеет одну форму, что при указании Id , запрашивает связанную таблицу, генерирует отчет на основе результата запроса и выводит его в PDF.

Источник управления полем является полем из результата запроса.

Все работает нормально, но мне нужно установить это поле в RTF. Шрифт - это шрифт TrueType, если это имеет значение. По существу, я хочу иметь фиксированную высоту на поле и растягивать ее по горизонтали по ширине. т. е. в CSS он будет определен примерно как «максимальная высота: 30 пикселей, ширина: 100%»;

Вещи, которые я пытался:

В Query Design View, настройки формата текста данного поля в Rich Text. Я все еще получаю сообщение об ошибке при установке текстового формата поля в представлении проекта отчета.

Другая идея - явно преобразовать поле в тип данных Memo (что-либо более 255 неявно преобразуется в этот тип), но я не уверен, как это сделать в SQl [MS SQL Server мы будем использовать что-то вроде CONVERT ([имя поля], текст)]

Создает ли пользовательский формат помощь? Я бы не подумал, потому что это все равно будет открытым текстом.

Заранее благодарим за любую помощь и комментарии.

+0

Предпочитаемый MS Access 2007 Еще раз спасибо! – Michael

+0

Также обратите внимание: в Word 2007 вы должны установить масштаб шрифта на 150% ... снова, я уверен, что вы можете сделать это только на RTF, но только для того, чтобы вы точно поняли цель – Michael

ответ

3

Вы не можете изменить текстовое поле «БОЙН» в расширенный текст, если только в колонке с колонтитулом не будет столбца с богатым текстом (памятка). Однако простым обходным решением является размещение в отчете текстового поля без привязки.Просто установите текст в расширенный текст в лист свойств (опять же, нет необходимости использовать код, чтобы попытаться изменить это значение). Если у вас есть текстовое поле помещается на форме, то в формах «подробно формат», который выстреливает для каждой записи, вы можете в коде Go:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 

    Me.MyTextBox = "<div><font face=Arial size=4 color=Blue>" & _ 
        "<strong>My Blue Bold Text</strong></font></div>" 

End Sub 

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

+0

Этот метод также работает в Access 2003 ADP при открытии в A2007. Вы также можете сделать это без кода - отбросьте поле (например, custName) в отчете и сделайте его невидимым, затем скопируйте/вставьте поле и измените источник управления на «= [custName]» - теперь установите формат «Rich Text» ». –

+0

Еще один момент, который следует отметить, заключается в том, что связанные элементы управления Rich Text работают с формами, но не с отчетами. –

-3

Попробуйте сделать текстовое поле последним полем в таблице. Кажется, я кое-что вспомнил, что вы можете иметь только одно поле memo для каждой таблицы, и это поле memo должно быть последним полем.

+0

Это совершенно неправильно - вы можете добавить более одного поля memo –

2

Просто обратиться один из ваших предложенных идей:

Other idea is to explicitly convert field to the Memo data type (anything over 255 implicitly gets converted to this type), but I am not sure of how to do that in SQl [MS SQL Server we would use something like CONVERT([fieldname], text)]

К сожалению, база данных Access Engine не поддерживает CAST() функции Standard SQL в :(

, потому что акции базы данных Access Engine выражение обслуживания с Библиотека VBA5 (почему не VBA6? - кто знает ?!), он может использовать большинство функций трансляции VBA, однако, к сожалению, сопоставление между типами данных не очень хорошо. Единственная соответствующая функция - CStr() (отличная от String), но как ее результат принуждаются к различным механизмам доступа к базам данных текстовые типы данных (переменная длина VARCHAR, фиксированная длина CHAR, с или без сжатия Юникода и MEMO), к сожалению, недокументировано.

Существует одно исключение: у механизма доступа к базе данных есть функция CDEC() (отличная от DECIMAL), но, к сожалению, всегда было completely broken.

+0

как cast() собирается помочь в форматировании большого текста в репо? (вы даже потрудились прочитать пост ????) -1 для этой темы ... –

+0

Альберт Д. Каллал: Я обращаюсь к той части вопроса, где говорят: «Другая идея - явно преобразовать поле к типу данных Memo ... Я не уверен, как это сделать ... в SQl [MS SQL Server мы будем использовать что-то вроде CONVERT ([fieldname], text)] ... «Я отредактировал свой ответ чтобы сделать его актуальным для вопроса более ясным для случайного наблюдателя;) – onedaywhen

+0

Есть много функций преобразования VBA, которые вы можете использовать. CBool ​​(), CByte(), CCur(), CDate(), CDbl(), Cstr() (список можно продолжить). Нам вообще не недостает доступа к кастингу (во всяком случае, у нас есть больше вариантов, чем сервер sql в этом отношении). Однако простое удаление столбца в памятку недостаточно, так как при создании меню вам также необходимо изменить настройку столбца в дизайне таблицы на богатый текст. Таким образом, расширенный текстовый параметр для заметки является необязательным. Простое внесение в памятку не решит эту проблему. Также необходимо включить (установить) текстовую настройку для этого столбца заметки в расширенный текст. –

Смежные вопросы