The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
posts - 305, comments - 1973, trackbacks - 78, articles - 3
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

上篇随笔中写了一个使用ActiveReport for .net 的最简单的例子,本文将演示在ActiveReport中如何绑定数据源

 

1.       先建一个表chartingTable,有两个字段,OnlineUserCountProject,通过向导生成DataSet,并拖放生成TableAdapter

2.       接下来在报表设计器中设计显示格式,在PageHeader中放置两个label,分别为“项目”和“在线人数”。再在Detail区方式两个对应的Label,分别设置DataFiledProjectOnlineUserCount,在运行的时候将会看到这两个Label显示的是对应字段中的内容。

3.       可以给报表指定DataSetDataView作为数据源,下面演示给报表设置数据源:

使用DataSet

this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable);

rpt.DataSource = this.dataSet1;

rpt.DataMember = this.dataSet1.ChartingTable.TableName;

rpt.Run();

this.viewer1.Document = rpt.Document;

使用DataView

this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable);

DataView dv = this.dataSet1.ChartingTable.DefaultView; ;

rpt.DataSource = dv;

dv.RowFilter = "project ='1'";

rpt.Run();

this.viewer1.Document = rpt.Document;

4.         我们还可以通过报表设计器来给报表指定数据源。

在报表设计器的Detail部分的头部,有一个数据库一样的小图标,点击它后会出现向导,按照向导一步步连接数据库,并定义查询就可以了。

 

上面演示的是使用数据集作为数据源进行绑定,但是实际项目中经常会用到使用对象集合作为数据源显示,下一次我们将演示如何在报表上显示一个对象集合中的数据。

Feedback

#1楼    回复  引用  查看    

2006-07-18 13:50 by 高海东      
那里可以下载ActiveReport for .net的破解版
请问ActiveReport for .net可以导入excel吗

#2楼 [楼主]   回复  引用  查看    

2006-07-18 18:35 by Cure      
我还没有找到破解的,我现在使用的是从ActiveReport的官方网站上下载的。

#3楼    回复  引用  查看    

2006-07-19 08:56 by Tony.Gong      
@高海东
AR提供导出到pdf,excel,html等文件的接口的

#4楼    回复  引用  查看    

2006-09-05 15:54 by samurai      
在4.2 pro版,支持从Access或者Crystal Report导入,很强的

#5楼    回复  引用    

2006-10-27 16:48 by cuiguohong [未注册用户]
先建一个表chartingTable,有两个字段,OnlineUserCount,Project,通过向导生成DataSet,并拖放生成TableAdapter。把表建在哪里?
怎样拖放生成TableAdapter?

#6楼 [楼主]   回复  引用  查看    

2006-10-28 12:27 by Cure      
@cuiguohong
我是在VS2005中作的,这个应该是基本功吧:)

#7楼    回复  引用    

2006-10-31 12:53 by cuiguohong [未注册用户]
我用的是VS2003,怎么拖也出现不了您所说的TableAdapter。

#8楼    回复  引用    

2006-10-31 12:56 by cuiguohong [未注册用户]
我还想请教一个问题:用Session传过来的值怎样赋给ActiveReport报表上的一个TextBox框呢?
不用绑定的方式能实现吗?我调查了好几天了,都没有发现解决的方法

#9楼 [楼主]   回复  引用  查看    

2006-10-31 20:46 by Cure      
@cuiguohong
1。VS2003中没有TableAdapter,有SqlDataAdapter和OleDbDataAdapter,你可以从工具箱上拖放它们到窗体上,然后根据向导生成DataSet
2。你可以给你的报表代码文件中添加一个构造函数,然后在new报表的时候把Session中的值作为参数传进去,也可以给报表添加一个public属性,然后传值。

#10楼    回复  引用    

2006-11-23 18:22 by zbking [未注册用户]
我下了最新的3。0版,在项目里直接调用了事例窗体EndUserDesigner。编译后调用没有问题,问题是数据绑顶怎么搞。编译后可以点Detail1来帮定数据,我想每次弹出EndUserDesigner后直接绑定我要的数据,例如select * form xx该如何做,弹出来就可以拖字段到designer ,谢谢!!

#11楼 [楼主]   回复  引用  查看    

2006-11-24 13:59 by Cure      
可以在DesignerForm_Load事件中设置:
从数据库取表架构:
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("select * from Products", @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Program files\Data Dynamics\ActiveReports for .NET 2.0\Data\NWIND.MDB;Persist Security Info=False");
System.Data.DataSet ds = new System.Data.DataSet();
da.FillSchema(ds, System.Data.SchemaType.Mapped);
this.ardMain.Report.DataSource = ds;
this.ardMain.Report.DataMember = ds.Tables[0].TableName;

或者自己手工建一个空表:
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.TableName = "Products";
dt.Columns.Add("ProductID", typeof(string));
dt.Columns.Add("ProductName", typeof(string));
dt.Columns.Add("SuppelierID", typeof(string));
dt.Columns.Add("CategoryID", typeof(string));

ds.Tables.Add(dt);

设置数据源:
this.ardMain.Report.DataSource = ds;
this.ardMain.Report.DataMember = ds.Tables[0].TableName;

让设置数据源的图表不显示:
this.ardMain.ShowDataSourceIcon = false;

这样,EndUserDesigner在运行后就可以显示你指定的字段了。

#12楼    回复  引用    

2006-11-26 21:55 by zbking [未注册用户]
谢谢您的回复,
我通过arDesigner.Report.DataSource确实实现了功能,可是发现一个问题,就是使用中文做字段时,不能通过拖拉fileds.bound来设计报表(例如select wid as 用户号,wname as 用户名 from details)而用英文字段可以(例如select wid,wname from details),使用中文报如下错误:
system.exception:the name 'txt用户号1' is not a valid identifier.
在datadynameics.activereports.design.-ffec validataname(string name)
在datadynameics.activereports.design.-dd1b.-d10c(string name)
在datadynameics.activereports.design.-dd1b.-2cof(icomponent component,string name)
在datadynameics.activereports.design.-dd1b.-fccd(icomponent component)
在datadynameics.activereports.design.-dd1b.CreateComponent(type componentclass,string name)
在datadynameics.activereports.design.sectiondesigncontrol.ondragdrop(drageventargs drgevent)

请问该如何处理?还有就是关于 使用ActiveReport for .net 进行报表开发(三)--显示对象集合中的数据 能详细点吗?我看了几遍都没看懂。。。不好意思

#13楼 [楼主]   回复  引用  查看    

2006-11-27 18:26 by Cure      
@ zbking
你的问题我试过了,没有重现,我的环境是Windows2000Professional日文版,VS2005专业版,中文,ActiveReports for .net 2.0。
不管是在sql语句中使用中文别名还是用代码创建DataTable(用中文字段名)都没有问题。
怀疑是环境或版本问题。。。。

#14楼 [楼主]   回复  引用  查看    

2007-01-16 13:39 by Cure      
@ zbking
今天新安装了3.0,重现了你的问题,看来确实是版本的bug,原因是由于在拖放字段的时候,要在报表布局里生成对应的Text框控件,而控件的命名规则是txt+字段名,所以就给控件生成了含有中文的名字,因此产生错误。
但是可以从工具栏添加一个Text框,然后指定DataFiled属性,这样是没有问题的。

#15楼    回复  引用    

2007-02-08 17:26 by xjzx [未注册用户]
我做B/S开发的时候添加了,WebViewer和应用了空间ActiveReport,用FOR 2.0,没有出现在添加新项目的时候出现ActiveRepotrs.rpx图标。
还有就是绑定完DataSet后,
MyAdater.FillSchema(MyDs, SchemaType.Source)
Me.WebViewer1.Report.DataSource = MyDs
Me.WebViewer1.Report.DataMember = MyDs.Tables(0).TableName
在Me.WebViewer1.Report.DataSource = MyDs的时候提示
为将对象应用添加到到对象的实例是什么意思啊。

#16楼 [楼主]   回复  引用  查看    

2007-02-08 18:01 by Cure      
@xjzx
安装以后在新建项目中看不到ActiveReport的图标,这个问题我也碰到过,应该是版本安装的问题,重新安装就没问题了。

报“未将对象应用添加到到对象的实例”,应该是因为你某个对象还没有正确初始化。查查报表对象有没有生成。

#17楼    回复  引用    

2007-02-09 15:18 by xjzx [未注册用户]
谢谢您给你回复!
我有好几个问题想请教您!
您能不能吧QQ号什么的,告诉我我好能及时的像您请教啊,
我得QQ:717253203

#18楼 [楼主]   回复  引用  查看    

2007-02-10 11:34 by Cure      
@xjzx
还是msn吧,qq我基本不用的

#19楼    回复  引用    

2007-05-10 16:10 by eagle [未注册用户]
您好,请教一个问题:
我想用activereport显示ACCESE里的二进制图片,可就是显示不出来,该怎么办呢~
急啊,多谢指教

#20楼    回复  引用    

2007-07-31 10:32 by mesou [未注册用户]
目前使用中,学习。

#21楼 [楼主]   回复  引用  查看    

2008-03-31 10:48 by Cure      
@eagle
Active Report的帮助里就自带一个显示图片的例子

发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接: