[水晶报表]创建不受数据库限制的报表(1)
2008-03-24 00:28
309 查看
一般使用水晶报表进行报表开发时,都要先指定数据库连接。
但是如果我们从事三层开发时,一般是不允许水晶报表直接访问数据库的,而是通过你的数据库处理层返回数据给水晶报表
其实我们可以使用水晶报表中的字段定义作为数据来源,来彻底摆脱与数据库的直接联系,
从而开发出便于发布以及摆脱数据库限制的报表系统。
当然使用该字段定义的方式进行报表的开发,比使用水晶报表直接连接数据库操作来说
增加了一些开发的过程,但是我想相对来说,还是值得的。
在第一部分中,我来讲解该类模板的制作,这部分很简单的。我实际操作并抓图示例,相信大家一看就明白。
使用字段定义功能在水晶报表中是使用一个单独的dll实现的,水晶报表默认安装时没有这个组件。
所以可能需要重新补充安装一下,进行定制安装增加该功能组件。
如果字段设置完毕,点击右上角的叉,将这个文件保存。
保存完毕后,就可以参考原来与数据库连接一样的方式来制作报表模板了
做好的报表模板如下
其实这个字段定义文件很简单,打开看看
其中的间隔是一个TAB制表位,等熟悉了以后可以自己用文本工具做这个文件就可以了。
在下一节中我用VB做一个完整的程序来给进行演示。
posted on 2005-03-11 14:41 阿泰 阅读(4351) 评论(25) 编辑 收藏 所属分类: CR我的原创
2005-05-11 10:32
cosmoboy
刚接触Crystal Report,请问阿T,CR是否支持xml数据源?我查看了数据集中没有发现.
另外在Java 环境中是否容易集成?
谢谢!
回复 引用 查看
#2楼 [楼主]
2005-05-11 11:18
阿泰
目前不支持直接读取xml文件数据
但是可以使用其他方式实现
VS6
1:使用字段定义方式(ttx)文件,将xml数据转换为Recordset数据
VS2002/2003
2:使用Ado.net方式(xsd),将xml数据转换为Dataset
水晶报表有For JBuilder的专用版本,可以轻松集成
不过可惜我对Java没有了解,也就没有实际作过。
回复 引用 查看
#3楼 219.239.16.*
2005-05-12 14:34
cosmoboy
我查看了一些资料,感觉水晶报表对Java的支持确实不是很好.可惜用户要用(产品...),只有想办法集成了.
谢谢 阿泰
回复 引用 查看
#4楼 218.19.5.*
2005-05-23 23:16
Cryout
为什么我的crystal report中在"仅字段定义"这一步看不到"创建文件"这个按钮???????????????
回复 引用 查看
#5楼 [楼主]
2005-05-24 14:11
阿泰
字段定义的报表在水晶报表默认安装时是不可用的,需要重新安装一下水晶报表,最好选完全安装,而不是默认的安装方式
回复 引用 查看
#6楼 218.16.75.*
2005-06-24 16:07
huadj
阿泰,我做过几次用ttx定义的,但在报表中都无法显示,是不是跟我的数据库有关(Access)?反复查过,ttx里的字段跟数据库是一一对应的,而且名称也一样。为什么会这样啊?
回复 引用 查看
#7楼 [楼主]
2005-06-24 16:19
阿泰
是所有的字段不显示还是部分字段不显示?
可能原因:
传入字段值比ttx设计时的长度大
传入字段类型与ttx类型不一样,如date/datetime,这是不一样的
回复 引用 查看
#8楼 218.16.75.*
2005-06-24 16:37
huadj
对,是所有都不显示
回复 引用 查看
#9楼 219.130.43.*
2005-06-25 17:23
huadj
阿泰,ttx要不要跟数据库相连呢?如果不是,ttx从哪里获得数据呢?
回复 引用 查看
#10楼 222.67.11.*
2005-06-26 00:08
阿泰
ttx本来就不需要直接与数据库相连,至于数据的获取请仔细看一下这个文章里带的代码例子,在本文的第2部分里
回复 引用 查看
#11楼 61.49.108.*
2005-08-10 15:39
likai [未注册用户]
怎么不支持中文字段名,垃圾。
回复 引用 查看
#12楼 [楼主]
2005-08-10 17:15
阿泰
如果你只有前面几个字的话我还可以回答你一下,
不过既然你不尊重我,我也没必要为你耗费我的时间。
回复 引用 查看
#13楼 61.145.210.*
2005-09-01 11:41
阿强 [未注册用户]
你好!
我想用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();
回复 引用 查看
#14楼 [楼主]
2005-09-05 23:31
阿泰
请参照这个看看
/article/4662144.html
回复 引用 查看
#15楼 218.19.131.*
2005-12-13 18:43
360度 [未注册用户]
为什么中文字段名会显示成乱码,真晕!
楼主你要帮帮我, 我是个初学者!
回复 引用 查看
#16楼 218.19.131.*
2005-12-13 18:43
360度 [未注册用户]
可以回复到我邮箱吗?
junmaster@gmail.com
回复 引用 查看
#17楼 61.184.255.*
2006-07-31 19:07
吴争容 [未注册用户]
请问一下你用的是水晶报表几呀?
我的怎么没有 仅字段定义这个选项呀,我的是水晶报表10
回复 引用 查看
#18楼 60.12.92.*
2006-09-07 13:52
xingzi [未注册用户]
阿泰 我在 运行环境里 运行 TTX的报表就出错 会不会是版本问题呀!!
回复 引用 查看
#19楼 60.12.92.*
2006-09-07 13:54
xingzi [未注册用户]
对了 我用的是JAVA哦!不过好象差不多的
回复 引用 查看
#20楼 60.12.92.*
2006-09-07 14:00
xingzi [未注册用户]
对了 我的报错是连接数据源错误 看到了请帮忙快点回答 好吗/?急!!
回复 引用 查看
#21楼 222.82.106.*
2006-09-08 22:11
battleax [未注册用户]
阿泰,ttx不支持中文怎么处理呢
回复 引用 查看
#22楼 221.218.198.*
2006-09-19 09:17
苗苗[匿名] [未注册用户]
为什么我打开创建新连接的时候没有出现仅字段定义这一项呢?谢谢
回复 引用 查看
#23楼 211.141.78.*
2006-11-22 07:54
小李 [未注册用户]
ttx中的中文字段名,在rpt中显示为乱码,要如何解决呢。盼解决,谢谢,
E-mail:libo@jydrilling.com
回复 引用 查看
#24楼 60.190.255.*
2006-12-12 15:24
小徐 [未注册用户]
我也遇到,ttx中的中文字段名,在rpt中显示为乱码的问题,不知道该怎么解决。laoer_zj@sina.com.cn
回复 引用 查看
#25楼 59.34.0.*
2007-03-19 11:17
小刘 [未注册用户]
我用的时C#
在做报表时也选的是ttx文件
在本机调试通过,但是到别的机上运行时提示登入数据库
怎么回事??
回复 引用 查看
function pageLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest);
//Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest);
}
function handleInitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
var eid = args.get_postBackElement().id;
if (eid.indexOf("DeleteLink")>0)
{
args.get_postBackElement().innerHTML = "正在删除...";
}
else if (eid.indexOf("btnSubmit")>0)
{
document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交...";
document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true;
}
else if(eid.indexOf("refreshList")>0)
{
document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML="正在刷新...";
}
}
function TempSave(ElementID)
{
try
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
catch(ex)
{
}
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
}
刷新评论列表
但是如果我们从事三层开发时,一般是不允许水晶报表直接访问数据库的,而是通过你的数据库处理层返回数据给水晶报表
其实我们可以使用水晶报表中的字段定义作为数据来源,来彻底摆脱与数据库的直接联系,
从而开发出便于发布以及摆脱数据库限制的报表系统。
当然使用该字段定义的方式进行报表的开发,比使用水晶报表直接连接数据库操作来说
增加了一些开发的过程,但是我想相对来说,还是值得的。
在第一部分中,我来讲解该类模板的制作,这部分很简单的。我实际操作并抓图示例,相信大家一看就明白。
使用字段定义功能在水晶报表中是使用一个单独的dll实现的,水晶报表默认安装时没有这个组件。
所以可能需要重新补充安装一下,进行定制安装增加该功能组件。
如果字段设置完毕,点击右上角的叉,将这个文件保存。
保存完毕后,就可以参考原来与数据库连接一样的方式来制作报表模板了
做好的报表模板如下
其实这个字段定义文件很简单,打开看看
其中的间隔是一个TAB制表位,等熟悉了以后可以自己用文本工具做这个文件就可以了。
在下一节中我用VB做一个完整的程序来给进行演示。
posted on 2005-03-11 14:41 阿泰 阅读(4351) 评论(25) 编辑 收藏 所属分类: CR我的原创
Feedback
#1楼 219.239.16.*2005-05-11 10:32
cosmoboy
刚接触Crystal Report,请问阿T,CR是否支持xml数据源?我查看了数据集中没有发现.
另外在Java 环境中是否容易集成?
谢谢!
回复 引用 查看
#2楼 [楼主]
2005-05-11 11:18
阿泰
目前不支持直接读取xml文件数据
但是可以使用其他方式实现
VS6
1:使用字段定义方式(ttx)文件,将xml数据转换为Recordset数据
VS2002/2003
2:使用Ado.net方式(xsd),将xml数据转换为Dataset
水晶报表有For JBuilder的专用版本,可以轻松集成
不过可惜我对Java没有了解,也就没有实际作过。
回复 引用 查看
#3楼 219.239.16.*
2005-05-12 14:34
cosmoboy
我查看了一些资料,感觉水晶报表对Java的支持确实不是很好.可惜用户要用(产品...),只有想办法集成了.
谢谢 阿泰
回复 引用 查看
#4楼 218.19.5.*
2005-05-23 23:16
Cryout
为什么我的crystal report中在"仅字段定义"这一步看不到"创建文件"这个按钮???????????????
回复 引用 查看
#5楼 [楼主]
2005-05-24 14:11
阿泰
字段定义的报表在水晶报表默认安装时是不可用的,需要重新安装一下水晶报表,最好选完全安装,而不是默认的安装方式
回复 引用 查看
#6楼 218.16.75.*
2005-06-24 16:07
huadj
阿泰,我做过几次用ttx定义的,但在报表中都无法显示,是不是跟我的数据库有关(Access)?反复查过,ttx里的字段跟数据库是一一对应的,而且名称也一样。为什么会这样啊?
回复 引用 查看
#7楼 [楼主]
2005-06-24 16:19
阿泰
是所有的字段不显示还是部分字段不显示?
可能原因:
传入字段值比ttx设计时的长度大
传入字段类型与ttx类型不一样,如date/datetime,这是不一样的
回复 引用 查看
#8楼 218.16.75.*
2005-06-24 16:37
huadj
对,是所有都不显示
回复 引用 查看
#9楼 219.130.43.*
2005-06-25 17:23
huadj
阿泰,ttx要不要跟数据库相连呢?如果不是,ttx从哪里获得数据呢?
回复 引用 查看
#10楼 222.67.11.*
2005-06-26 00:08
阿泰
ttx本来就不需要直接与数据库相连,至于数据的获取请仔细看一下这个文章里带的代码例子,在本文的第2部分里
回复 引用 查看
#11楼 61.49.108.*
2005-08-10 15:39
likai [未注册用户]
怎么不支持中文字段名,垃圾。
回复 引用 查看
#12楼 [楼主]
2005-08-10 17:15
阿泰
如果你只有前面几个字的话我还可以回答你一下,
不过既然你不尊重我,我也没必要为你耗费我的时间。
回复 引用 查看
#13楼 61.145.210.*
2005-09-01 11:41
阿强 [未注册用户]
你好!
我想用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();
回复 引用 查看
#14楼 [楼主]
2005-09-05 23:31
阿泰
请参照这个看看
/article/4662144.html
回复 引用 查看
#15楼 218.19.131.*
2005-12-13 18:43
360度 [未注册用户]
为什么中文字段名会显示成乱码,真晕!
楼主你要帮帮我, 我是个初学者!
回复 引用 查看
#16楼 218.19.131.*
2005-12-13 18:43
360度 [未注册用户]
可以回复到我邮箱吗?
junmaster@gmail.com
回复 引用 查看
#17楼 61.184.255.*
2006-07-31 19:07
吴争容 [未注册用户]
请问一下你用的是水晶报表几呀?
我的怎么没有 仅字段定义这个选项呀,我的是水晶报表10
回复 引用 查看
#18楼 60.12.92.*
2006-09-07 13:52
xingzi [未注册用户]
阿泰 我在 运行环境里 运行 TTX的报表就出错 会不会是版本问题呀!!
回复 引用 查看
#19楼 60.12.92.*
2006-09-07 13:54
xingzi [未注册用户]
对了 我用的是JAVA哦!不过好象差不多的
回复 引用 查看
#20楼 60.12.92.*
2006-09-07 14:00
xingzi [未注册用户]
对了 我的报错是连接数据源错误 看到了请帮忙快点回答 好吗/?急!!
回复 引用 查看
#21楼 222.82.106.*
2006-09-08 22:11
battleax [未注册用户]
阿泰,ttx不支持中文怎么处理呢
回复 引用 查看
#22楼 221.218.198.*
2006-09-19 09:17
苗苗[匿名] [未注册用户]
为什么我打开创建新连接的时候没有出现仅字段定义这一项呢?谢谢
回复 引用 查看
#23楼 211.141.78.*
2006-11-22 07:54
小李 [未注册用户]
ttx中的中文字段名,在rpt中显示为乱码,要如何解决呢。盼解决,谢谢,
E-mail:libo@jydrilling.com
回复 引用 查看
#24楼 60.190.255.*
2006-12-12 15:24
小徐 [未注册用户]
我也遇到,ttx中的中文字段名,在rpt中显示为乱码的问题,不知道该怎么解决。laoer_zj@sina.com.cn
回复 引用 查看
#25楼 59.34.0.*
2007-03-19 11:17
小刘 [未注册用户]
我用的时C#
在做报表时也选的是ttx文件
在本机调试通过,但是到别的机上运行时提示登入数据库
怎么回事??
回复 引用 查看
function pageLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest);
//Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest);
}
function handleInitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
var eid = args.get_postBackElement().id;
if (eid.indexOf("DeleteLink")>0)
{
args.get_postBackElement().innerHTML = "正在删除...";
}
else if (eid.indexOf("btnSubmit")>0)
{
document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交...";
document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true;
}
else if(eid.indexOf("refreshList")>0)
{
document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML="正在刷新...";
}
}
function TempSave(ElementID)
{
try
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
catch(ex)
{
}
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
}
刷新评论列表
请输入标题 | ||
请输入你的姓名 | ||
(只有博主才能看到)邮件地址无效 | ||
相关文章推荐
- [水晶报表]创建不受数据库限制的报表 .Net 版本 -1
- [水晶报表]创建不受数据库限制的报表 .Net 版本 -2
- [图文教程+完全代码]水晶报表:创建不受数据库限制的报表
- [水晶报表]创建不受数据库限制的报表(2)
- [水晶报表]创建不受数据库限制的报表(1)
- [水晶报表]创建不受数据库限制的报表(1)
- [水晶报表]创建不受数据库限制的报表(2)
- [水晶报表]创建不受数据库限制的报表(2)
- [水晶报表]创建不受数据库限制的报表(2)
- [水晶报表]创建不受数据库限制的报表(2)
- [水晶报表]创建不受数据库限制的报表(3)
- [水晶报表]创建不受数据库限制的报表(1)
- [完整代码]创建不受数据库限制的报表 VB.Net 版本 -1
- [完整代码]创建不受数据库限制的报表 VB.Net 版本 -2
- [完整代码]创建不受数据库限制的报表 VB.Net 版本 -1
- [完整代码]创建不受数据库限制的报表 VB.Net 版本 -2
- .NET平台下WEB应用程序的部署(含创建数据库、水晶报表、及配置配置文件)
- 水晶报表中"已达到系统管理员配置的最大报表处理作业数限制"
- Visual C# 2008+SQL Server 2005 数据库与网络开发--6.2.1 创建报表应用程序
- web中水晶报表的数据库资源的释放