Ошибка «Запрошенный вами отчет требует дополнительной информации» при использовании SqlDataSource с Crystal Reports - PullRequest
1 голос
/ 29 октября 2009

Я следовал учебному руководству 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");
        }

Это работает, чтобы обойти непрерывную подсказку. Но это очень неприятно, и я не хочу его использовать.

Помощь!

1 Ответ

0 голосов
/ 17 декабря 2009

У меня возникли похожие проблемы после того, как вы следовали приведенному выше коду и упомянутому учебнику. Я обнаружил, что указание свойства TableName позволило моему отчету работать должным образом без необходимости устанавливать какие-либо параметры входа в систему.

<CR:DataSourceRef DataSourceID="sqlDataSource" TableName="Chips" />
...