Я следовал учебному руководству Microsoft здесь , чтобы создать отчет Crystal Report (с v12.0) в Visual Studio и прикрепить его к веб-форме, используя CrystalReportViewer
, CrystalReportSource
и SqlDataSource
как я хочу, чтобы он читал данные из моего экземпляра SQL Server. Отчет будет нормально загружаться один раз (это, по-видимому, данные снимка, сохраненные в файле .rpt) с разметкой веб-формы:
<CR:CrystalReportViewer ID="crystalReportViewer" runat="server"
AutoDataBind="true"
GroupTreeImagesFolderUrl="" HasRefreshButton="True" Height="895px"
ReportSourceID="crystalReportSource" ToolbarImagesFolderUrl=""
ToolPanelWidth="200px" Width="1365px" />
<CR:CrystalReportSource ID="crystalReportSource" runat="server"
EnableCaching="False">
<Report FileName="ClientLoginHistory.rpt">
<DataSources>
<CR:DataSourceRef DataSourceID="sqlDataSource" />
</DataSources>
</Report>
</CR:CrystalReportSource>
<asp:SqlDataSource ID="sqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:dbReportsConnectionString %>"
SelectCommand="{{ select query is here }}">
</asp:SqlDataSource>
(скажите, пожалуйста, если вы видите какие-либо ошибки конфигурации)
Но как только я нажимаю «Обновить» на панели инструментов Crystal Reports Viewer, я получаю следующую ошибку:
"The report you requested requires further information."
с полями для ввода регистрационной информации БД ...
Причина, по которой я говорю «ошибка», заключается в том, что я намеренно следовал учебному пособию по подключению Crystal Report к источнику данных SQL, чтобы я мог указать существующую строку подключения из моего Web.config, в которой предварительно указаны имя пользователя и пароль. установлен.
На самом деле кажется, что это даже не ИСПОЛЬЗОВАНИЕ строки подключения из Web.config, как будто я удаляю ссылку на SqlDataSource (см. Ниже фрагмент кода), он по-прежнему загружается с данными моментального снимка, а затем обновляется 'запрашивает пользователя / пароль и после ввода отчета загружается нормально:
<CR:CrystalReportViewer ID="crystalReportViewer" runat="server"
AutoDataBind="true"
GroupTreeImagesFolderUrl="" HasRefreshButton="True" Height="895px"
ReportSourceID="crystalReportSource" ToolbarImagesFolderUrl=""
ToolPanelWidth="200px" Width="1365px" />
<CR:CrystalReportSource ID="crystalReportSource" runat="server"
EnableCaching="False">
</Report>
</CR:CrystalReportSource>
Я полагаю, это должно быть связано с внутренним соединением БД, встроенным в отчет вместо sqlDataSource ?? Это было бы вполне вероятно, потому что при создании отчета вы выбираете таблицы и поля базы данных по ссылке ODBC, и она сохраняет информацию о соединении в отчет, который я считаю: S
Итак, после долгих поисков в сети я нашел способ избежать этой ошибки, но, опять же, я не верю, что он читает строку соединения Web.config, а скорее встроенное соединение в файле .rpt.
protected void Page_Load(object sender, EventArgs e)
{
crystalReportSource.ReportDocument.SetDatabaseLogon("user", "real_pass");
}
Это работает, чтобы обойти непрерывную подсказку. Но это очень неприятно, и я не хочу его использовать.
Помощь!