水晶报表 动态绑定数据库(高手进)
现在不知道数据库名,只有在用户使用程序时输入才能知道。所以在创建水晶报表时不能使用数据库专家。只能使用推模式用数据集作为报表的数据源,所以我干脆使用了空白报表。但是程序到...
现在不知道数据库名,只有在用户使用程序时输入才能知道。所以在创建水晶报表时不能使用数据库专家。只能使用推模式用数据集作为报表的数据源,所以我干脆使用了空白报表。
但是程序到 “CrystalReport.SetDataSource(ds.Tables["tablename"]);”时,提示“该报表不包含表。”曾尝试使用强类型数据集来作为数据源,但依然提示“该报表不包含表”。
上网查了好久才知道是因为以上代码中的表名和报表的临时表的表名不一致造成的。
但是我使用的是空白报表,建报表的时候根本就没有提示过任何设置。
所以请教大虾们怎么设置水晶报表临时表的表名。
或者是帮想个解决办法,我都愁死了~~
能给代码的尽量给个代码,什么语言都行。 展开
但是程序到 “CrystalReport.SetDataSource(ds.Tables["tablename"]);”时,提示“该报表不包含表。”曾尝试使用强类型数据集来作为数据源,但依然提示“该报表不包含表”。
上网查了好久才知道是因为以上代码中的表名和报表的临时表的表名不一致造成的。
但是我使用的是空白报表,建报表的时候根本就没有提示过任何设置。
所以请教大虾们怎么设置水晶报表临时表的表名。
或者是帮想个解决办法,我都愁死了~~
能给代码的尽量给个代码,什么语言都行。 展开
2个回答
2013-08-11
展开全部
//声明报表的数据对象
CrystalDecisions.CrystalReports.Engine.Database crDatabase;
CrystalDecisions.CrystalReports.Engine.Table crTable;
TableLogOnInfo dbConn = new TableLogOnInfo();
// 创建报表对象
CrystalReportSource oRpt = new CrystalReportSource(); //CrystalReportSource
// 加载已经做好的报表
oRpt.Load();
//连接数据库,获得相关的登陆信息
crDatabase = oRpt.Database;
//定义一个arrtables对象数组
object[] arrTables = new object[1];
crDatabase.Tables.CopyTo(arrTables, 0);
crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0];
dbConn = crTable.LogOnInfo;
//设置相关的登陆数据库的信息
dbConn.ConnectionInfo.DatabaseName = "pubs";//pubs
dbConn.ConnectionInfo.ServerName = ".";
dbConn.ConnectionInfo.UserID = "sa"; //sa
dbConn.ConnectionInfo.Password = "";
//将登陆的信息应用于crtable表对象
crTable.ApplyLogOnInfo(dbConn);
//将报表和报表浏览控件绑定
crViewer.ReportSource = oRpt;
//传递参数
setReportParameters(DropDownList1.SelectedItem.Text);
CrystalDecisions.CrystalReports.Engine.Database crDatabase;
CrystalDecisions.CrystalReports.Engine.Table crTable;
TableLogOnInfo dbConn = new TableLogOnInfo();
// 创建报表对象
CrystalReportSource oRpt = new CrystalReportSource(); //CrystalReportSource
// 加载已经做好的报表
oRpt.Load();
//连接数据库,获得相关的登陆信息
crDatabase = oRpt.Database;
//定义一个arrtables对象数组
object[] arrTables = new object[1];
crDatabase.Tables.CopyTo(arrTables, 0);
crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0];
dbConn = crTable.LogOnInfo;
//设置相关的登陆数据库的信息
dbConn.ConnectionInfo.DatabaseName = "pubs";//pubs
dbConn.ConnectionInfo.ServerName = ".";
dbConn.ConnectionInfo.UserID = "sa"; //sa
dbConn.ConnectionInfo.Password = "";
//将登陆的信息应用于crtable表对象
crTable.ApplyLogOnInfo(dbConn);
//将报表和报表浏览控件绑定
crViewer.ReportSource = oRpt;
//传递参数
setReportParameters(DropDownList1.SelectedItem.Text);
2015-04-27
展开全部
为什么要做这么复杂,引入这么大的编程量呢?我觉得你完全可以用无编程量的报表工具啊,比如FineReport报表工具就不错。这个报表工具功能很完善,而且操作很简单,编程量非常少,很适合没有编程基础的人。而且从网上下载了FineReport的设计器后,里面会自带有教程,还有做好的报表模板,学起来很快的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询