2009-07-17 4 views
0

Я создал хрустальный отчет, используя тест DB. Я запускаю отчет, используя класс .NET ReportDocument. Все работает нормально, пока я не подключился к тестовой БД.Crystal report - Running thru .NET.

Когда тот же отчет указывается на UAT DB (все необходимые объекты DB доступны в UAT тоже), я получаю ошибку. Чтобы исправить это, я должен вручную изменить имя сервера в UAT DB в файле RPT.

Как это исправить?

ответ

1

Решение заключается в создании системного DSN (ODBC) для подключения к вашей целевой базе данных. Затем вы можете переключить ODBC на любую требуемую базу данных (локальный, тестовый, этап и т. Д.). Кроме того, если вы убедитесь, что одноименное соединение ODBC доступно на всех ваших серверах, перенос отчета из dev-> test-> stage-> production должен быть простым.

0

Использование push reports должно решить вашу проблему. Вы можете настроить отчет, чтобы принять типизированный набор данных ADO.NET, и предоставить этот набор данных во время выполнения.

+0

Нет, я не использую ADO.NET DataSet. Отчет напрямую связан с объектами БД. Единственное, что мне нужно сделать, - отправить информацию о соединении во время выполнения. – Kaz

+0

AFAIK, вы не можете. В отчете содержатся собственные параметры базы данных, которые настроены во время разработки и не могут быть изменены во время выполнения. –

0

Не так ли, как это должно работать? Он должен знать, к какой БД он подключается?

Возможно, мне что-то не хватает, но похоже, что вам просто нужно было правильно установить соединение.

+1

Отчеты Crystal могут работать в двух основных режимах: нажимать или тянуть. Большинство отчетов, которые я видел, построили использование pull, которое хранит данные соединения в классе отчета. Приятно, когда отчет должен жить сам по себе, но в рамках большего приложения это PITA, потому что источник данных отчета должен быть вручную изменен всякий раз, когда код перемещается на другой сервер (т.е. dev -> test -> производство). Push-отчеты позволяют отчету принимать данные из внешнего источника, который может включать в себя набор данных ADO.NET, который централизует детали соединения. –