Fork me on GitHub

Visual Studio 2010 Crystal Report 子报表 提示 您请求的报表需要更多信息 解决方案

【提示】您请求的报表需要更多信息 的解决方案?

我是以PUSH模式做水晶报表的,不知道为什么,我浏览报表网页时,总是以PULL模式提示要数据库登录信息!(您请求的报表需要更多信息

后来我发现一个问题,在仅有一个报表的时候,只不会出现这样的问题的。只有在有一个或多个子报表的时候,才会出现这样的问题...

根据MSDN说明,无论是子报表还是父报表,一个报表对应一个数据集,就不会在PUSH模式下出现PULL模式的问题...

因有子报表,所以我在给子报表加上数据源后就不会出现这种问题了

子报表可以增加和主报表的链接加以筛选数据!


 如何进行绑定,请参照以下范例:

Web.config Access数据文件连接格式如下:

1 <connectionStrings>
2     <add name="AccessConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\案例\CrystalReportsWebSite\App_Data\test.mdb;Persist Security Info=True" providerName="System.Data.OleDb"/>
3   </connectionStrings>

Default.aspx前置文件报表内容如下:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 <%@ Register TagPrefix="CR" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head runat="server">
 5     <title>报表示例</title>
 6 </head>
 7 <body>
 8     <form id="form1" runat="server">
 9     <div>
10         <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="True" Height="1039px"
11             ReportSourceID="CrystalReportSource1" Width="901px" />
12         <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
13         </CR:CrystalReportSource>
14     </div>
15     </form>
16 </body>
17 </html>

Default.aspx.cs后置文件报表内容如下:

 1 using System;
 2 using System.Configuration;
 3 using System.Data.OleDb;
 4 
 5 
 6 public partial class _Default : System.Web.UI.Page
 7 {
 8     protected void Page_Load(object sender, EventArgs e)
 9     {
10         if (!IsPostBack)
11         {
12             Loading();
13         }
14     }
15 
16     /// <summary>
17     /// 加载水晶报表
18     /// </summary>
19     private void Loading()
20     {
21         //设置数据源信息
22         string connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
23         OleDbConnection con = new OleDbConnection(connectionString);
24         OleDbCommand cmd = con.CreateCommand();
25         cmd.Connection = con;
26 
27         //填充数据
28         OleDbDataAdapter da = new OleDbDataAdapter(cmd);
29         DataSet1 ds = new DataSet1();
30         DataSet1 ds1 = new DataSet1();
31 
32         cmd.CommandText = "SELECT EmployeeId1 as EmployeeId,EmployeeName1 as EmployeeName From Employee1";
33         da.Fill(ds, "Employee");
34 
35         cmd.CommandText = "SELECT ProductId1 as ProductId,ProductName1 as ProductName,Price1 as Price From Product1";
36         da.Fill(ds, "Product");
37 
38         cmd.CommandText = "SELECT EmployeeId1 as EmployeeId,ProductId1 as ProductId,SalesDate1 as SalesDate,Num1 as Num From Sales1";
39         da.Fill(ds, "Sales");
40 
41         cmd.CommandText = "SELECT EmployeeId1 as EmployeeId,HisDogName1 as HisDog From forSubReport1";
42         da.Fill(ds1, "forSubReport");
43 
44         //加载水晶报表
45         CrystalReportSource1.Report.FileName = Server.MapPath("~/app_data/CrystalReport.rpt");//报表路径
46         CrystalReportSource1.ReportDocument.Load(CrystalReportSource1.Report.FileName);//加载报表
47         //绑定数据集,注意,一个报表只能绑定一个数据集
48         CrystalReportSource1.ReportDocument.SetDataSource(ds);//主报表数据源
49         CrystalReportSource1.ReportDocument.Subreports["我们的子报表"].SetDataSource(ds1);//子报表数据源
50         CrystalReportSource1.DataBind();//绑定
51         CrystalReportViewer1.ReportSource = CrystalReportSource1;//指定数据源
52         CrystalReportViewer1.DataBind();//工具条数据绑定!!
53     }
54 }

更多详情请参考以下:

Crystal Report 制作使用http://www.cnblogs.com/illele/archive/2007/09/22/902500.html

关于PUSH和PULL解释:http://www.cnblogs.com/host-2008/archive/2012/04/01/2428243.html


转载的朋友,请不要删除以下行,对此,表示感谢!!!

原文链接:http://www.cnblogs.com/VAllen/archive/2012/08/23/CrystalReportLoading.html

posted @ 2012-08-23 20:33  VAllen  阅读(1491)  评论(0编辑  收藏  举报