王朝网络
分享
 
 
 

SQL2005报表参数大于2K问题的终极解决方案

王朝mssql·作者佚名  2006-01-14
宽屏版  字体: |||超大  

问题来由:

当通过表单提交信息给报表服务时,当参数值大于2K时,这时如果加入显示工具条参数时,IE会返回该页无法显示这样的错误信息,而如果不加显示工具条参数时,结果正常,但是就是没有工具条

问题反馈:

据微软的专家说这是SQL2000/SQL2005的BUG,真是奇怪了,SQL2005研究了5年才发布,居然这一BUG依然保留,可以想象这是多么大的一个技术难题

解决思路:

据微软提供的建议,建议编写一个自定义的报表工具条

解决办法:

首先确定报表工具条的作用,它的作用是用于翻页和导出报表数据到其它类型的文档

可以看出,技术难点在于翻页,也就是当前报表总页数的获取

那么如何才能获得带指定参数的指定报表的页数呢?微软的建议是通过报表服务的WEB服务接口来获取,当服务器上装了报表服务时,也就相应的存在了报表服务的WEB服务接口,一般访问地址如下:

http://****/reportserver/reportservice.asmx

通过这一公开的WEB服务,调用其相应功能可以实现报表服务的N多的功能,获取页数只是其中微不足道的功能之一,实现代码如下:

public int GetNumber()

{

string deviceinfo=@"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";

string[] parameters=_parameter.Split('&');

int parameterNumber=parameters.Length;

RS.ParameterValue[] param=new ReportNumber.RS.ParameterValue[parameterNumber];

for(int i=0;i<parameterNumber;i++)

{

string[] p=parameters[i].Split('=');

param[i]=new ParameterValue();

param[i].Name=p[0];

param[i].Value=p[1];

}

RS.ReportingService rs=new ReportNumber.RS.ReportingService();

rs.Url=this._url+@"/ReportService.asmx";

/*

注意,如果你的报表服务器和应用服务器不处于同一机器,那么你必须提供访问报表服务器的凭证,如下面的凭证是通过使用Negotiate 验证来传送用户名、密码

当然,如果2个服务器在同一台机器,那就非常简单了,直接使用本地凭证验证即可

*/

CredentialCache cache = new CredentialCache();

cache.Add(new Uri(rs.Url), "Negotiate", new NetworkCredential("administrator", "crserver", ""));

rs.Credentials = cache;

/*

rs.Credentials=System.Net.CredentialCache.DefaultCredentials;

*/

DataSourceCredentials[] credentials=null;

string showHideToggle=null;

string encoding;

string mimeType;

Warning[] warnings=null;

ParameterValue[] reportHistoryParameters=null;

string[] streamIDs=null;

SessionHeader sh=new SessionHeader();

rs.SessionHeaderValue=sh;

string historyID=null;

byte[] result=rs.Render(ReportName,"HTML4.0",historyID,deviceinfo,param,credentials,showHideToggle,out encoding,out mimeType,out reportHistoryParameters,out warnings,out streamIDs);

string s=System.Text.UTF8Encoding.UTF8.GetString(result,0,result.Length-1);

string r=@"<hr/>";

Regex regex=new Regex(r);

MatchCollection mc=regex.Matches(s);

return mc.Count+1;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有