[水晶报表]创建不受数据库限制的报表(1)
一般使用水晶报表进行报表开发时,都要先指定数据库连接。
但是如果我们从事三层开发时,一般是不允许水晶报表直接访问数据库的,而是通过你的数据库处理层返回数据给水晶报表
其实我们可以使用水晶报表中的字段定义作为数据来源,来彻底摆脱与数据库的直接联系,
从而开发出便于发布以及摆脱数据库限制的报表系统。
当然使用该字段定义的方式进行报表的开发,比使用水晶报表直接连接数据库操作来说
增加了一些开发的过程,但是我想相对来说,还是值得的。
在第一部分中,我来讲解该类模板的制作,这部分很简单的。我实际操作并抓图示例,相信大家一看就明白。
使用字段定义功能在水晶报表中是使用一个单独的dll实现的,水晶报表默认安装时没有这个组件。
所以可能需要重新补充安装一下,进行定制安装增加该功能组件。
如果字段设置完毕,点击右上角的叉,将这个文件保存。
保存完毕后,就可以参考原来与数据库连接一样的方式来制作报表模板了
做好的报表模板如下
其实这个字段定义文件很简单,打开看看
其中的间隔是一个TAB制表位,等熟悉了以后可以自己用文本工具做这个文件就可以了。
在下一节中我用VB做一个完整的程序来给进行演示。
请输入标题 | ||
请输入你的姓名 | ||
(只有博主才能看到)邮件地址无效 | ||
Feedback
另外在Java 环境中是否容易集成?
谢谢!
回复 引用 查看
但是可以使用其他方式实现
VS6
1:使用字段定义方式(ttx)文件,将xml数据转换为Recordset数据
VS2002/2003
2:使用Ado.net方式(xsd),将xml数据转换为Dataset
水晶报表有For JBuilder的专用版本,可以轻松集成
不过可惜我对Java没有了解,也就没有实际作过。
回复 引用 查看
谢谢 阿泰
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
可能原因:
传入字段值比ttx设计时的长度大
传入字段类型与ttx类型不一样,如date/datetime,这是不一样的
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
不过既然你不尊重我,我也没必要为你耗费我的时间。
回复 引用 查看
我想用Dataset做水晶报表的数据源,以便能动态改变报表的数据,但发现无法报表并不随Dataset里的数据而更新。大致代码如下。请高人指点一下。。。谢谢!
this.crystalReportViewer1.Name = "crystalReportViewer1";
OleDbConnection nwindConn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;" +
"Integrated Security=SSPI;Initial Catalog=chinaccm");
OleDbCommand selectCMD = new OleDbCommand("SELECT * FROM price where productid = 1", nwindConn);
selectCMD.CommandTimeout = 30;
OleDbDataAdapter custDA = new OleDbDataAdapter();
custDA.SelectCommand = selectCMD;
DataSet custDS = new DataSet();
custDA.Fill(custDS, "price");
ReportDocument report = new ReportDocument();
report.Load(@"E:"study"other"davidReport"Reportchinaccm.rpt");
report.SetDataSource(custDS.Tables[0] );
this.crystalReportViewer1.ReportSource = report;
crystalReportViewer1.RefreshReport();
回复 引用 查看
http://www.cnblogs.com/babyt/archive/2005/04/17/139152.html
回复 引用 查看
楼主你要帮帮我, 我是个初学者!
回复 引用 查看
junmaster@gmail.com
回复 引用 查看
我的怎么没有 仅字段定义这个选项呀,我的是水晶报表10
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
回复 引用 查看
E-mail:libo@jydrilling.com
回复 引用 查看
回复 引用 查看
在做报表时也选的是ttx文件
在本机调试通过,但是到别的机上运行时提示登入数据库
怎么回事??
回复 引用 查看