国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL2005報表參數大于2K問題的終極解決方案

2024-07-21 02:12:08
字體:
來源:轉載
供稿:網友
 

問題來由:
 當通過表單提交信息給報表服務時,當參數值大于2k時,這時如果加入顯示工具條參數時,ie會返回該頁無法顯示這樣的錯誤信息,而如果不加顯示工具條參數時,結果正常,但是就是沒有工具條

問題反饋:
 據微軟的專家說這是sql2000/sql2005的bug,真是奇怪了,sql2005研究了5年才發布,居然這一bug依然保留,可以想象這是多么大的一個技術難題

解決思路:
 據微軟提供的建議,建議編寫一個自定義的報表工具條

解決辦法:
 首先確定報表工具條的作用,它的作用是用于翻頁和導出報表數據到其它類型的文檔
 可以看出,技術難點在于翻頁,也就是當前報表總頁數的獲取
 那么如何才能獲得帶指定參數的指定報表的頁數呢?微軟的建議是通過報表服務的web服務接口來獲取,當服務器上裝了報表服務時,也就相應的存在了報表服務的web服務接口,一般訪問地址如下:
 http://****/reportserver/reportservice.asmx
 通過這一公開的web服務,調用其相應功能可以實現報表服務的n多的功能,獲取頁數只是其中微不足道的功能之一,實現代碼如下:
  public int getnumber()
  {
 
   string false[email protected]"<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();
   [email protected]"/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 [email protected]"<hr/>";
   regex regex=new regex(r);
   matchcollection mc=regex.matches(s);
   return mc.count+1; 
 
 }    

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康马县| 大名县| 榆中县| 精河县| 巩留县| 沿河| 本溪市| 麟游县| 龙井市| 大宁县| 洛川县| 鄂伦春自治旗| 曲阳县| 靖州| 晋宁县| 永川市| 吉木乃县| 聂荣县| 北海市| 霸州市| 浦江县| 丰原市| 阳春市| 尚义县| 任丘市| 晋宁县| 镇坪县| 广东省| 屏东县| 安宁市| 桓台县| 同江市| 无极县| 隆尧县| 南华县| 南城县| 浪卡子县| 福鼎市| 确山县| 万州区| 尤溪县|