2013-11-14 4 views
0

В настоящее время я создаю приложение, которое генерирует отдельную букву для каждого пользователя в наборе данных. Содержимое письма управляется через приложение vb.net и их формат RTF сохраняется в базе данных. Когда письмо создается, весь контент извлекается из базы данных для формирования буквы с использованием логики vb.net.Можете ли вы конкатенировать RTF в формуле Crystal Reports? Поле

После компиляции он был отправлен как параметр Crystal. Это отлично поработало, установив интерпретацию текста в полевых условиях, чтобы RTF разрешил просмотр RTF. Клиент решил, что вместо этого они захотят внести изменения в логику (если инструкции, которые компилируют текст) в Crystal.

Так что я создал пустой набор данных с кучей столбцов и заполнил эти столбцы с помощью RTF (упорядоченный по ID, чтобы значения никогда не изменились, если абзац не был удален, и для этого нет возможности). Это позволило бы мне построить строку RTF, перейдя {table.1} + {table.2} и т. Д.

В этом проблема. При построении строки RTF в Формуле (с использованием + или &) она отображает только первую запись RTF. Если я переключу формулу на отсутствие интерпретации, я могу увидеть RTF для записей, списанных со всем их содержанием, поэтому я знаю, что он есть. Я также вручную объединил RTF в поле формулы и имел ту же проблему.


StringVar output;

выход: = выход & «{\ rtf1 \ ANSI \ ansicpg1252 \ deff0 {\ fonttbl {\ f0 \ fnil \ fcharset0 Times New Roman;}} \ viewkind4 \ uc1 \ пард \ lang1033 \ f0 \ FS23 это первый тест} "; output: = output & «{\ rtf1 \ ansi \ ansicpg1252 \ deff0 {\ fonttbl {\ f0 \ fnil \ fcharset0 Times New Roman;}} \ viewkind4 \ uc1 \ pard \ lang1033 \ f0 \ fs23 это второй тест \ п \ п} ";


Выход

На данный момент я не уверен, если есть способ обойти эту проблему, кроме перемещения всего текста на отдельные поля Формулы внутри самого кристалла и затем объединить. Это будет означать, что если они захотят изменить текст, это нужно будет сделать в кристалле. Я бы предпочел не идти по этому маршруту, поэтому я ищу мнения и предложения.

ответ

0

Кристалл поддерживает RTF, однако он должен быть полностью сформирован в течение первого появления записи RTF. В моем вопросе он показывает две отдельные записи COMPLETE RTF. Поскольку все записи имеют теги RTF ID, это будет невозможно. Такая же проблема возникнет, если вы скопировали вышеуказанный текст в текстовый редактор и сохранили его как RTF. Вы получите только первую строку. Это не объясняет, почему он работает как параметр, а не формула, но вероятнее всего, что каждый из них оценивается, а позже (параметр может потерять поддержку в будущем).

Чтобы правильно передать RTF в кристалл, вам понадобится два объекта с богатым текстовым полем. Один из них является временным блоком, а другой является блоком построителя и выбирает только форматированный текст, а не весь RTF-контент. Пример этого может быть найден по адресу:

http://moneybaron.org/2011/08/23/vb-net-merge-rtf-documents/

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

Надеюсь, что это поможет!

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