zsww-成功源于创新!

SQL Reporting Services 困惑的解决 直接传递参数并用ReportViewer来呈现报表

      前几天一个偶然的机会上了odetocode.com,看到几篇关于SQL Reporting Services的文章,很有启发性,于是结合了Reporting Services 联机丛书研究了一下,我的困惑算是暂时解决了
      通过直接传递参数给.aspx页面(使用ReportViewer控件呈现报表),在.aspx页面中接受参数从而呈现所需报表。主要解决方法如下:

1.用vs.net打开ReportViewer这个项目,项目文件夹在你安装的SQL Reporting Services的相关文件夹中(见图1)。

2.打开ReportViewer.cs文件,写入以下方法(见图2),然后重新编译这个项目。

3.新建一个带参数的报表文件rdl,具体不详述,请参考我以前的文章。

4.新建一个.aspx文件,引用编译好ReportViewer.dll,拖入这个控件到.aspx页面(见图3),

可以在ReportViewer的属性栏中直接设置报表路径和报表服务器路径及相关属性,也可以在.aspx.cs的page_load中用code的方式设置(见图4)。

5.为了测试传递参数,再建一个htm页面加入一个链接,连接中加入所要传递的参数(见图5)。

6.在.aspx.cs代码中接受传递来的参数,同时要把接收到参数传递给报表,这就用到了图2中的方法了(见图6)。

7.运行后就可以得到你所传参数的报表了(见图7),上面没有查询参数框是因为在ReportViewer属性的Parameters设为false了,这样看起来界面更好一点。

总结一下:最主要的地方还是在第2步,其实我们可以添加其他类似的方法来达到自己所要的结果。如果要传递2个或3个值怎么办,其实方法也是一样的,只要在报表文件中设置2个或3个参数就可以了。另外补充一下关于导出打印的问题,其实可以在.cs代码中直接设置导出的格式,比如 this.ReportViewer1.Format=“pdf“;这样页面就直接会用acrobat打开的。
以上纯属个人使用经验,若有不对的地方请大家指正,也欢迎大家一起讨论

      

posted on 2004-06-02 10:56 zsww 阅读(11449) 评论(41)  编辑 收藏 网摘 所属分类: .NET - SQL Reporting Services

评论

#1楼  2004-06-02 11:00 FsYd      

借阅,谢谢.
我最近也准备弄一下Reporting Services,有时间一起讨论啊,:)
  回复  引用  查看    

#2楼  2004-06-03 09:22 jurassicdaemon [未注册用户]

我们也正积极考虑使用reporting services,我这两天看了一下,有一个安全问题不明白,不知道您是否碰到过。
report service的用户鉴别应该是使用windows integrated的,即系统用户应该是windows服务器上的用户,但是当我将系统装在windows xp 上的时候,从其它机器不能访问我的系统,不知道为何。由于本人对windows安全不了解,正在查看相关资料。   回复  引用    

#3楼  2004-06-03 09:41 zsww [未注册用户]

像你这样的情况我还没有碰到过。
不知道你在xp的本地可以访问到报表吗?
你可以试试把报表服务器装在win2000server或win2003上,另外报表服务器是可以设置用户和组的,建议你多试试。   回复  引用    

#4楼  2004-06-10 11:07 王强 [未注册用户]

能否介绍一下自定义的程序集该如何部署,在VS.NET开发环境中能正常使用,但部署报表后提示找不到程序集   回复  引用    

#5楼  2004-06-23 17:51 我爱程序 [未注册用户]

我前不久也这样做了报表的。
但有一个问题。
因为他的参数都是固定的。而且是用and语句。
例如:
   现在有三个参数: name,sex,area
都可以通过reportview来传递参数。但是,如果任意一个为空(也就是传统的组合查询),就不能实现。
  1、三个条件都不为空
  2、name、sex为空,area不为空
  、、、、、、
我在odetocode.com里好象也没有找到很好的解决办法。()   回复  引用    

#6楼  2004-06-24 08:51 zsww      

你可以试试参数可以为空的话,设置一个默认值,建议你不要使用在url中传递参数的方法,还是在rdl文件中设置参数好一点,记得有这方面的samples,看看联机丛书。   回复  引用  查看    

#7楼  2004-06-24 09:04 我爱程序 [未注册用户]

我不想把他设置为默认值,现在我想找一个办法,让SQL语句中where 语句为动态的 自己添加。(就是在报表设计的时候。不加条件。提取出来的是整个表,在自己定义查询的时候再加。)
例如:
string sql='select * from Employee'
  where 语句是根据操作员选择什么条件而加的。我看了很多的samples,好象都是要在报表设计的时候设置参数。不知道有没有好的办法解决。
   找了所有的帮助好象都没有。   回复  引用    

#8楼  2004-07-01 19:03 木鱼 [未注册用户]

我想直接在IE中打印,但肯定还是会出现VIEWER,导出后打印好是好,但操作比较麻烦,有没有好的解决方法?   回复  引用    

#9楼  2004-07-01 21:56 zsww [未注册用户]

试试在.aspx.cs文件中加入
this.ReportViewer1.Format=“pdf“;

你可参考我的做法试试。   回复  引用    

#10楼  2004-10-12 10:49 houling [未注册用户]

我有两个主子报表ReportMain,ReportDetail,现在我通过ReportView控件来显示。当显示ReportMain的时候没有问题,可是当我一点ReportMain中的ID列,想跳到它所对应的ReportDetail上去,可此时就不是在ReportView控件中显示了,而是显示到http://localhost/ReportServer上了,请问这样的问题该如何解决。
 (注:ReportView控件是在一个框架页上的)。   回复  引用    

#11楼  2004-10-21 18:19 gcht [未注册用户]

制作好的报表怎么才能通过代码让客户也能自己定制报表的格式阿!   回复  引用    

#12楼  2004-12-01 11:20 zh [未注册用户]

我在一个项目中通过调用ReportViewer来呈现报表,但是我的项目采用cookie验证,此时调用其它报表服务器上的报表时必须要通过客户端cookie验证呀,有什么方法可以避免。   回复  引用    

#13楼  2005-03-17 10:48 用ReportViewer显示报表时,如何实现身份验证?急急急急急 [未注册用户]

用ReportViewer显示报表时,如何实现身份验证?急急急急急   回复  引用    

#14楼  2005-03-17 16:53 paul [未注册用户]

如Windows窗体怎么才能传入参数,我用的是AxSHDocVw.AxWebBrowser控件来显示报表。谢谢!   回复  引用    

#15楼  2005-03-18 13:06 zhaozh [未注册用户]

高手请赐教:Reporting Services的所有参数
我现在只知道有:rc:Parameters=false&rs:Command=Render,
还有其他的都是什么?
有没有关于IIS验证的相关参数?   回复  引用    

#16楼  2005-03-23 12:44 chy [未注册用户]

我在设计报表参数时,设置了四个参数:年、季、月、周,且使用了串联参数。但是在报表发布后,每次都只能显示一周的信息,若我想显示整月或整年的信息,该如何设置报表参数?
我是使用链接的方法实现的,操作复杂,面向用户也不好。   回复  引用    

#17楼  2005-04-07 09:26 lif [未注册用户]

有人在非默认站点上配置过reporting吗,我在iis5非默认站点下配置时,打开报表管理器,可以看见报表目录但是查看报表时报权限错误(我已将匿名和windows集成验证打开),如下
您无权查看该网页
您可能没有权限用您提供的凭据查看此目录或网页。

--------------------------------------------------------------------------------

如果您确信能够查看该目录或网页,请尝试使用lclyukon主页上所列的电子邮件地址或电话与网站联系。

可以单击搜索,寻找 Internet 上的信息。




HTTP 错误 403 - 禁止访问
Internet Explorer
  回复  引用    

#18楼  2005-04-15 11:09 Jsvi [未注册用户]

我安装reporting services时,出现错误。

1.我在win2003下先安装了portal server,再安装reporting services提示我打补丁KB821334,无法安装了,怎么回事?而且补丁也找不到!!!微软网站也没有了,那别人是怎么解决的阿?



2.我又在win2000下安装,系统要求手动初始化 报表服务器。
怎么初始化?按照帮助里的步骤操作,失败!怎么处理啊?   回复  引用    

#19楼  2005-04-15 11:14 Jsv! [未注册用户]



错误







报表服务器上出现内部错误。有关详细信息,请参阅错误日志。 (rsInternalError) 获取联机帮助 系统找不到指定的文件。




主文件夹


  回复  引用    

#20楼  2005-05-20 13:32 威威 [未注册用户]

请问楼主,你说的在第5步建一个htm面加入一个链接,连接中加入所要传递的参数,是怎么实现的,能不能给个例子啊,谢谢   回复  引用    

#21楼  2005-05-21 11:01 威威 [未注册用户]

怎么这传过来以后打开的是那个SQL Server Reporting Services
主文件夹,点击该项目,进入,再点击那个报表才能打开报表,但是传的参数在地址栏中显示,但是报表还是没有得到那个参数,还要输入参数值,再点查看报表,进行查看.另外,我在ReportViewer属性的Parameters设为false了,可是还是出来那个条件的输入框,请问是怎么回事,希望能得到您的帮助,谢谢!!!!   回复  引用    

#22楼  2005-05-27 09:53 czg [未注册用户]

威威,有两个问题需要请教你,挺急得,可以留下你得msn或qq吗?多谢了!   回复  引用    

#23楼  2005-07-15 13:58 yx2000 [未注册用户]

小弟最近正好需要用rs来制作报表,愿意和楼主以及使用这个工具朋友多多交流
QQ:9393887
MSN:yx20000@hotmail.com
加的时候注明reporting service交流 :D   回复  引用    

#24楼  2005-07-30 14:33 l [未注册用户]

请问楼主:能否通过传递参数来控制报表中的控件的显示或隐藏?   回复  引用    

#25楼  2005-08-14 20:53 ytjia [未注册用户]

为什么我导出PDF的时候只有表格没有数据呢?能不能指点一下?   回复  引用    

#26楼  2005-08-29 18:03 owen [未注册用户]

楼主能指点一二吗?我的QQ:123637765 MSN:owen_unico@msn.com   回复  引用    

#27楼  2005-09-22 11:36 starsrive@xinhuanet.com [未注册用户]

我这里有这样一个情况
数据库 客户 商品
在调用每个客户的商品的时候 发生窜表 出现其他客户名称 如何解决 菜鸟求救啊!!!!!!!!!!!!!!!!!!!!!
请好心大侠回信 starsrive@xinhuanet.com   回复  引用    

#28楼  2005-10-08 11:47 liuhh [未注册用户]

请教:我在报表定阅的时候只能发送局域网内部的邮件地址,外网的邮件收不到,请问是怎么回事,如何解决,谢谢.
请好心大侠回信 liuhh@softbrain.com.cn
  回复  引用    

#29楼  2005-10-13 12:47 tt [未注册用户]

请教:
Reporting Services中传递中文参数时,具体应该如何处理?谢谢。   回复  引用    

#30楼  2005-11-09 09:22 KEKE [未注册用户]

本人想在WIN2003装REPORTING SERVICES,但是需要SQL2KSP3A的标准版,那里有免费下载呀?我找了半天了没有找到呀,那位好心大侠能否回信到HYF5210@HOTMAIL.COM。谢谢!!   回复  引用    

#31楼  2006-03-07 12:15 冰點火燄 [未注册用户]

@我爱程序
我也遇到相同的問題,就是SQL設計器中的SQL語句不可以使用表達式,
一種解決方式是使用存儲過程,將參數傳入,存儲過程生成動態SQL語句,
我用的是Oracle,可以使用Excute Immediate "SQL" 語句
但是由於我這裡使用存儲過程很不方便,希望能採用其它方式解決,現在還沒有好的辦法。   回复  引用    

#32楼  2006-04-12 10:09 ??? [未注册用户]

第2步的ReportView.cs中的SetParameter方法在哪里定义的?   回复  引用    

#33楼  2006-04-26 17:21 钢笔水 [未注册用户]

对于不用报表指定的参数来传参数,各位有什么好的意见吗?
(我想不用报表的参数,而是自己来写参数,让报表接收我传入的参数,来查询数据.只能用存储过程吗?)
  回复  引用    

#34楼  2006-08-24 16:40 徐风碧树 [未注册用户]

老兄的这篇文章写的非常清楚。多谢   回复  引用    

#35楼  2006-09-01 09:43 上上签      

感谢分享,正在研究中,SQL2KSP3A的标准版我有,KEKE如果还没找到可以与我联系。   回复  引用  查看    

#36楼  2006-11-09 12:35 Ivan[匿名] [未注册用户]

我们的项目正要用到报表功能,你的这个很有启发性,但是我还有另外一个问题是我们用的是Sql Server 2005 的Reporting Server ,但是开发环境用VS 2003, 这样的话还能用吗?因为VS2003 中没有ReportViewer控件,我该安装什么插件或者怎样才能解决我的这个问题?
谢谢你!
请好心大侠回信:zsy_1205@hotmail.com   回复  引用    

#37楼  2007-01-10 22:40 dennyhong [未注册用户]

那为兄台,有这个控件吗?可否给小弟一份。在下感激不尽。。
msn:dennyhong1108@hotmail.com   回复  引用    

#38楼  2007-06-01 18:25 zangjn [未注册用户]

不知道还有没有人回答:
我发现如果报表取中文名字,打印js出错。还有一个问题请大家帮忙。
我做的是可以折叠的报表,直接在ie中输网址可以。但是用这个控件放到程序中
点击展开无效。   回复  引用    

#39楼  2007-07-09 10:51 小小小程序员      

我想问问,我是否在报表查询字符中用“SELECT * FROM IN_INVVEND_TBL WHERE(@Strcondition)”来给它传条件,
如果不可以,当条件为1个以上怎样组合条件,难道只能用存储器来拼条件吗   回复  引用  查看    

#40楼  2008-03-05 14:41 moge      

this.ReportViewer1.Format=“pdf“;
为什么我的控件上没有Format这个属性   回复  引用  查看    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-06-09 08:49 编辑过
Google站内搜索

相关文章:

相关链接:
 

<2004年6月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

公告

目前主要学习应用:


Counters
Counters

与我联系

搜索

 

常用链接

留言簿(14)

随笔分类

随笔档案

收藏夹

经常光顾的@Blog

友情@Blog

最新评论

阅读排行榜

评论排行榜