Вот ситуация:
У меня есть отчет, который был создан в Crystal Reports. Отчет был создан с использованием XSD, сгенерированного из DataSet - того же самого DataSet, который используется для заполнения отчета. Содержит значительное количество таблиц.
Я попытался вызвать SetDataSource для отчета и передать весь DataSet, но большинство полей не заполняются, несмотря на наличие значений в DataSet. Я могу проверить это через отладчик - значения, передаваемые в отчет, в порядке. Существует потенциальная проблема с тем, как DataSet сопоставляется с самим Crystal Reports.
Чтобы обойти это, я пытаюсь вызвать report.SetDataSource () для каждой таблицы. Это оказывается очень медленным - каждый вызов SetDataSource занимает> 20 секунд. При наличии более 100 таблиц в наборе данных это абсолютно недопустимо. Из того, что я смог выяснить, может быть несколько причин для этого:
- Вызов SetDataSource является самым медленным способом создания отчета Crystal. К сожалению, переключить его на что-то другое в данный момент уже невозможно.
- Вызов SetDataSource заставляет Crystal Reports пытаться аутентифицироваться на каком-либо сервере сертификатов, как описано здесь:
http://bonkel.wordpress.com/2008/11/18/crystal-reports-slow-load-using-net-c-setdatasource/
К сожалению, у меня нет возможности проверить вещи. Мой локальный брандмауэр выключен, но, возможно, есть какой-то другой корпоративный брандмауэр.
В любом случае, есть проблема - либо что-то не так с тем, как Crystal извлекает данные из DataSet, либо есть проблема с тем, что Crystal вечно обрабатывает вызов SetDataSource.
У кого-нибудь есть какие-либо мысли по этому поводу, и что я мог бы сделать, чтобы правильно составить карту или ускорить ее?