В настоящее время я создаю приложение, которое генерирует отдельное письмо для каждого пользователя в наборе данных. Содержимое писем управляется через приложение vb.net, а их формат RTF сохраняется в базе данных. Когда письмо создается, все содержимое извлекается из базы данных для формирования письма с использованием логики vb.net.
После компиляции он был отправлен в качестве параметра в Crystal. Это отлично сработало, установка интерпретации текста поля в RTF позволила правильно просматривать RTF. Клиент решил, что вместо этого он хотел бы внести изменения в логику (операторы if, компилирующие текст) в Crystal.
Итак, что я сделал, так это создал пустой набор данных с кучей столбцов и заполнил эти столбцы RTF (упорядочены по идентификатору, поэтому значения никогда не изменятся, если абзац не будет удален, и для этого нет возможности). Это позволило бы мне создать строку RTF, перейдя {table.1} + {table.2} и т. д....
Вот в чем проблема. При построении строки RTF в формуле (используя + или &) отображается только первая запись RTF. Если я переключу формулу на отсутствие интерпретации, я смогу увидеть RTF для записей, выписанных со всем их содержимым, поэтому я знаю, что это там. Я также вручную объединил RTF в поле формулы и столкнулся с той же проблемой.
вывод StringVar;
output := output & "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}\viewkind4\uc1\pard\lang1033\f0\fs23 это первый тест}" ; output := output & "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}\viewkind4\uc1\pard\lang1033\f0\fs23 это второй тест \par \пар}";
Вывод
На данный момент я не уверен, есть ли способ обойти это, кроме как переместить весь текст в отдельные поля формул внутри самого кристалла, а затем объединить. Это означало бы, что если бы они хотели изменить текст, это нужно было бы сделать в кристалле. Я бы предпочел не идти по этому пути, поэтому я ищу мнения и предложения.