Я использую Crystal Reports, поставляемый с Visual Studio 2008
Вот моя проблема. У меня есть простая маленькая утилита командной строки, которая генерирует монокристаллический отчет. Это
- Подключается к базе данных
- Получает набор данных из хранимой процедуры. Набор данных - это всегда одна таблица с одной строкой.
- Устанавливает набор данных в качестве источника данных отчета
- В зависимости от флагов командной строки выводит на принтер по умолчанию, отправляет электронные письма или сохраняет отчет в формате PDF
В приложении используется что-то вроде этого:
c:\> GenerateReport 1000 1345 1 email=me@somewhere.com pdf=c:\temp\ print
Если первые 3 аргумента задают параметры для хранимой процедуры, а другие аргументы являются необязательными, но указывают служебной программе, что делать с отчетом. Очень простые вещи. Прекрасно работает, и был в течение некоторого времени.
За исключением того, что с момента обновления отчетов о кристаллах (начиная с той версии, которая была с vs2003), он был немного вялым. ТОЛЬКО на производственной площадке и ТОЛЬКО при печати отчета, некоторые (но не все) поля отчета остаются пустыми!
Это особенно смущает, потому что отчет создается только один раз, а все данные в отчете поступают из набора данных - у меня нет полей параметров отчета. И набор данных выбирается и устанавливается как источник данных только один раз при запуске приложения. После этого я просто вызываю report.PrintToPrinter, report.Export или report.ExportToStream для одного и того же экземпляра в зависимости от того, хочу ли я распечатать, экспортировать или отправить по электронной почте соответственно.
Это означает, что если я запускаю утилиту с опциями print и email = me @ mycompany, получаемый мною адрес электронной почты и распечатанный отчет получаются из экземпляра EXACT SAME ReportClass. Тем не менее те же значения, которые постоянно отсутствуют при печати, видны при отправке отчета по электронной почте или сохранении на диск.
Еще хуже, я могу взять точно такой же исполняемый файл. Переместите его на мой компьютер для разработки, укажите файл конфигурации на производственную базу данных, и он напечатает на моем локальном принтере все заполненные значения!
Я действительно весьма озадачен тем, как исследовать это дальше - похоже, что-то происходит внутри CrystalReports. Есть ли какой-нибудь режим диагностики или режим регистрации, который я могу включить, что может дать мне подсказку, как это исправить?