使用带有Crystal Reports的SqlDataSource时,“您请求的报告需要进一步的信息”错误

时间:2009-10-29 05:56:50

标签: .net visual-studio crystal-reports webforms

我已按照Microsoft教程here在Visual Studio中创建Crystal报表(使用v12.0),并使用CrystalReportViewerCrystalReportSource和{将其附加到网络表单{1}}我希望它能从我的SQL Server实例中读取数据。该报告将使用此Web表单标记正常加载一次 (这似乎是保存在.rpt文件中的快照数据)

SqlDataSource

(如果您看到任何配置错误,请告诉我)

但是,只要在Crystal Reports Viewer工具栏上按“刷新”,我就会收到以下错误:

<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>

用字段输入DB登录信息......

我说“错误”的原因是因为我故意遵循教程将Crystal Report附加到SQL数据源,因此我可以从我的Web.config中指定一个现有的连接字符串,其中包含用户名和密码。集。

实际上它似乎甚至不是 USING 来自Web.config的连接字符串,好像我删除了对SqlDataSource的引用(参见下面的代码片段),它仍然加载了快照数据,然后是'刷新'提示输入用户/通过,一旦输入报告就加载正常:

"The report you requested requires further information."

我想这必须链接到报告中嵌入的内部数据库连接而不是sqlDataSource?这很可能是因为在创建报表时,您通过ODBC链接选择数据库表和字段,并将连接信息保存到我认为的报表中:S

所以,经过网上搜索,我发现了一种避免这种错误的方法,但我再次相信它不是在读取Web.config connectionString而是在.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>
        </CR:CrystalReportSource>

这可以绕过持续的提示。但是非常讨厌,我不想使用它。

帮助!

1 个答案:

答案 0 :(得分:0)

在按照上面的代码和您提到的教程后,我遇到了类似的问题。我发现指定TableName属性允许我的报告按预期运行,而不必设置任何登录参数。

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