我已按照Microsoft教程here在Visual Studio中创建Crystal报表(使用v12.0),并使用CrystalReportViewer
,CrystalReportSource
和{将其附加到网络表单{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>
这可以绕过持续的提示。但是非常讨厌,我不想使用它。
帮助!
答案 0 :(得分:0)
在按照上面的代码和您提到的教程后,我遇到了类似的问题。我发现指定TableName属性允许我的报告按预期运行,而不必设置任何登录参数。
<CR:DataSourceRef DataSourceID="sqlDataSource" TableName="Chips" />