Есть ли способ изменить расположение источника данных для отчета и всех его подотчетов без необходимости открывать каждый из них вручную?
Заменить подключение к базе данных для отчета и всех подотчетов
Ответы (5)
Вот как я устанавливаю свои соединения во время выполнения. Я получаю информацию о подключении из местоположения конфигурации.
#'SET REPORT CONNECTION INFO
For i = 0 To rsource.ReportDocument.DataSourceConnections.Count - 1
rsource.ReportDocument.DataSourceConnections(i).SetConnection(crystalServer, crystalDB, crystalUser, crystalPassword)
Next
For i = 0 To rsource.ReportDocument.Subreports.Count - 1
For x = 0 To rsource.ReportDocument.Subreports(i).DataSourceConnections.Count - 1
rsource.ReportDocument.OpenSubreport(rsource.ReportDocument.Subreports(i).Name).DataSourceConnections(x).SetConnection(crystalServer, crystalDB, crystalUser, crystalPassword)
Next
Next
Если вы просто делаете это как одноразовую сделку, мое предложение может не помочь. Но если вы часто меняете источники данных, это может быть полезно.
Отказ от ответственности: я не работал с Crystal начиная с версии 9.0, поэтому я не знаю, улучшили ли они это. Я всегда использовал файлы UDL. По сути, это указатель на источник данных. Настройте свой отчет так, чтобы он указывал на UDL, а UDL указывал на источник данных. Если источник изменится, просто обновите UDL.
Это невероятно полезно, если у вас есть несколько отчетов. Вам нужно обновить только один файл при смене сервера.
Связанные вложенные отчеты (по крайней мере, в CR XI) используют общий источник данных основного отчета — предположительно, ваш отчет уже настроен, так что это не вариант для вас?
@Unsliced Я думаю, что проблема, с которой он столкнулся, заключается в том, что когда вы берете кристальный отчет, который кто-то разработал для другой базы данных, и вы открываете его в Crystal Reports XI, вы должны выполнить изменение источника данных для каждого поля, в том числе в подотчетах. Если вы просто меняете источник на верхнем уровне отчета, это часто приводит к ошибкам. (Я думаю, что это известная проблема в Crystal Reports).
Я предполагаю, что вы говорите о файлах .rdl из Reporting Services? (Если нет, то мой ответ может быть неправильным)
По сути, это просто XML, поэтому вы можете загрузить каждый из них и выполнить запрос XPath, чтобы получить узел, содержащий источник данных, и обновить его.