1. 程式人生 > >asp.net 水晶報表使用總結

asp.net 水晶報表使用總結

手頭上的一個專案,終顯雛形,其中遇到一些問題,經過多番努力,終於得以解決,主要是水晶報表方面的。因為是第一次用,總結的同時,也給後來可能用到水晶報表的人一些微弱的指引,所以如果總結的不好的話,請大家指正。

關於水晶報表的一些基本概念,如pushpull模式等如果想了解的話,自己百度搜索下,或是找本書看就可以了。

這裡我主要是根據實際應用到的要求,來進行帶圖的詳細介紹,希望對新手有所幫助。

使用的是VS2008,在頁面中新增名稱空間的引用,主要有以下幾個:

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.ReportSource;

using CrystalDecisions.Shared;

下面先來看下,利用水晶報表做出來的效果圖,只是實現功能,介面未經過美工處理,有點難看,多多包涵.

      

圖一

               

     圖二

由於是統計報表,所以在應用中需要傳遞引數值,在實際應用中,我是利用了儲存過程來實現的。

Create proc PrintCJ

@cjbh varchar(50)

As

SELECTCjdy_zb.DWMC, Cjdy_zb.ND,Cjdy_zb.JD, Cjdy_zb.QSDD, Cjdy_zb.JFJZRQ, Cjdy_zb.YJQJS, Cjdy_zb.YJQJZ, Cjdy_zb.SKDW, Cjdy_fb.QSSY, Cjdy_fb.YT, Cjdy_fb.DYGY,

Cjdy_fb.DEGY, Cjdy_fb.DSGY, Cjdy_fb.BCHJ FROM Cjdy_fb INNER JOIN Cjdy_zb ON Cjdy_fb.CJBH = Cjdy_zb.CJBH and Cjdy_zb.CJBH= @cjbh;

GO

下面截圖截圖一步一步來操作實現:

1)、在專案中新增一個新資料夾,如Report資料夾,然後在該目錄下右鍵新增Crystal報表。

          

接下來,選擇“作為空白模板”,點選“確定”。

                      

右鍵資料庫欄位,選擇“資料庫專家”

                             

               

展開“建立新連線”,選擇“OLE DBADO)”,在彈出框中選擇“Microsoft OLE DB Provider for SQL Server”。

                             

點選“下一步”,彈出連線資訊,按照實際情況,填寫內容。

                     

點選“下一步”。

                     

點選“完成”,這樣一個連線就配置成功了。

                  

                  

在上面的介面中,展開資料庫,選擇“儲存過程”PrintCJ,既上面建立的儲存過程,並將其新增到右邊。

                 

在輸入引數值中將“設為空值”複選框反勾選,讓其成為一個離散值。

                

點選“確定”。

點選“確定”,在欄位資源管理器中可以看到如下資訊。

                                

接下來就是在水晶報表的主體中根據需要,定製報表介面了。如下:

 

這些欄位都是可以從“欄位資源管理器”中直接拖拽過來直接使用的,這其中也可以通過插入圖片為其新增背景。

從查詢頁面將引數傳遞給上面的報表頁面,報表頁面通過傳遞的引數,動態的顯示報表。

比如查詢頁面查詢出結果後,通過一個按鈕將引數傳遞給報表頁面:

Page.RegisterStartupScript("reopen",String.Format("<script> window.open('Print2.aspx?cjbh={0}', '_blank','height=574,width=1014,top=20,left=10,resizable=yes,status=yes,toolbar=no,menubar=yes,location=no,location=no,directories=no,copyhistory=no') </script>", Server.UrlEncode(ViewState["cjbh"].ToString().Trim())));

在報表頁面的Page_Load事件中通過接收引數,並取資料繫結到Crystal報表中去。

protected void Page_Load(object sender, EventArgs e)

{

CrystalDecisions.Shared.ParameterValues pvs = new CrystalDecisions.Shared.ParameterValues();

CrystalDecisions.Shared.ParameterDiscreteValue pvuid = new CrystalDecisions.Shared.ParameterDiscreteValue();

CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

string rptPath = Server.MapPath("../Report/CrystalReport4.rpt");

rpt.Load(rptPath);

pvuid.Value = Server.UrlDecode(Request.QueryString["cjbh"]);

pvs.Add(pvuid);

//這裡的欄位名稱就是

rpt.DataDefinition.ParameterFields["@cjbh"].ApplyCurrentValues(pvs);

CrystalDecisions.Shared.TableLogOnInfo logOnInfo = new CrystalDecisions.Shared.TableLogOnInfo();

logOnInfo.ConnectionInfo.DatabaseName = "資料庫名稱";

logOnInfo.ConnectionInfo.ServerName = ConfigurationSettings.AppSettings["server"]; //資料庫伺服器名稱

logOnInfo.ConnectionInfo.UserID = "sa";

logOnInfo.ConnectionInfo.Password = "******";

rpt.Database.Tables["PrintCJ;1"].ApplyLogOnInfo(logOnInfo);//儲存過程在報表中的名稱

CrystalReportViewer1.ReportSource = rpt;

}

執行程式,就可以出如圖二的結果了。

以下介紹傳遞二個引數,帶彙總功能的報表效果,如圖一那樣。

方法跟前面很類似,先是根據實際情況,寫好儲存過程:

Create proc NYGGBB

@startTime datetime,

@endTime datetime

As

begin

SELECT YSXZDYMC, GSL, GDZC, NZWZZMJ, QSDJ, RKSL, PJGZ, ZJJE FROM Xxz_nyggys where JFRQ>[email protected] and JFRQ<[email protected]

end

GO

設計好報表頁面

關於需要統計的欄位,其實很簡單,你只要在需要統計的欄位上右鍵,選擇“插入”->“彙總”,然後將彙總欄位拖至下方即可。

查詢頁面將引數傳遞至統計頁面:

Page.RegisterStartupScript("reopen",String.Format("<script> window.open('Print.aspx?sTime={0}&eTime={1}', '_blank','height=574,width=1014,top=20,left=10,resizable=yes,status=yes,toolbar=no,menubar=yes,location=no,location=no,directories=no,copyhistory=no') </script>", Server.UrlEncode(dt1.ToString().Trim()), Server.UrlEncode(dt2.ToString().Trim())));

統計頁面獲取傳遞引數,並進行統計:

protected void Page_Load(object sender, EventArgs e)

{

//傳遞兩個引數,需要建立兩個ParameterValues物件

CrystalDecisions.Shared.ParameterValues pvs = new CrystalDecisions.Shared.ParameterValues();

CrystalDecisions.Shared.ParameterValues pvs2 = new CrystalDecisions.Shared.ParameterValues();

CrystalDecisions.Shared.ParameterDiscreteValue pvuid = new CrystalDecisions.Shared.ParameterDiscreteValue();

CrystalDecisions.Shared.ParameterDiscreteValue pvuid2 = new CrystalDecisions.Shared.ParameterDiscreteValue();

CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

string rptPath = Server.MapPath("../Report/CrystalReport3.rpt");

rpt.Load(rptPath);

pvuid.Value = Server.UrlDecode(Request.QueryString["sTime"]);//起始時間

pvuid2.Value = Server.UrlDecode(Request.QueryString["eTime"]); //結束時間

pvs.Add(pvuid);

pvs2.Add(pvuid2);

rpt.DataDefinition.ParameterFields["startTime"].ApplyCurrentValues(pvs);

rpt.DataDefinition.ParameterFields["endTime"].ApplyCurrentValues(pvs2);

CrystalDecisions.Shared.TableLogOnInfo logOnInfo = new CrystalDecisions.Shared.TableLogOnInfo();

logOnInfo.ConnectionInfo.DatabaseName = "資料庫名稱";

logOnInfo.ConnectionInfo.ServerName = ConfigurationSettings.AppSettings["server"];

logOnInfo.ConnectionInfo.UserID = "sa";

logOnInfo.ConnectionInfo.Password = "****";

rpt.Database.Tables["CZGSBB;1"].ApplyLogOnInfo(logOnInfo);// 儲存過程在報表中的名稱

CrystalReportViewer1.ReportSource = rpt;

}

執行後,效果如圖一所示。

友情提示:

1、在使用自帶的水晶報表時,請註冊,否則只能使用30次 
   水晶報表註冊碼
       註冊號:6707437608 
       密碼:AAP5GKS0000GDE100DS 

相關推薦

asp.net 水晶報表使用總結

手頭上的一個專案,終顯雛形,其中遇到一些問題,經過多番努力,終於得以解決,主要是水晶報表方面的。因為是第一次用,總結的同時,也給後來可能用到水晶報表的人一些微弱的指引,所以如果總結的不好的話,請大家指正

Asp.net 水晶報表

一、水晶報表簡介 Crystal Reports(水晶報表)是一款商務智慧(BI)軟體,主要用於設計及產生報表。水晶報表是業內最專業、功能最強的報表系統,它除了強大的報表功能外。最大的優勢是實現了與絕大多數流行開發工具的整合和介面。在VS.Net平臺做過報表開發的程式設計師,一定都對水晶報表強大、高

ASP.NET水晶報表實現列印功能

ASP.NET下的水晶報表列印,據我所知有以下幾種辦法可以列印:        1.用IE的列印.呼叫window.print(),但這種辦法對於頁面上即有報表,又有其它控制元件情況就無法區分,不能達到只打印報表內容的目的;       2.自已寫列印程式碼. 程式碼如

Asp.Net北大青鳥總結(四)-使用GridView實現真假分頁

void 每次 第三方控件 ati exec open() lld ret ges 這段時間看完了asp.net視頻。可是感覺到自己的學習好像沒有鞏固好,於是又在圖書館裏借了幾本關於asp.net的書感覺真的非常好自己大概對於asp.net可以實現主要的小D

asp.net WebApi 使用總結

請求 result supported 靈活 ssa port 方法 blank web 如果想讓服務端直接返回json或者xml的話,可以考慮使用webservice、wcf,或者webapi。webservice基於xml,效率較慢,wcf雖然可以返回json,但是配置

ASP.NET Core學習總結(2)

das AR 找不到 resume text exce for AI desc public class ControllerActionInvoker : ResourceInvoker, IActionInvoker   我們知道,ControllerActionI

ASP.NET Core學習總結(1)

ask 怎樣 desktop 就是 app routing 動作 reac form   經過那麽長時間的學習,終於想給自己這段時間的學習工作做個總結了。記得剛開始學習的時候,什麽資料都沒有,光就啃文檔。不過,值得慶幸的是,自己總算還有一些Web開發的基礎。至少ASP.NE

.Net水晶報表使用

FULL NAME -> PARADOX ORGANIZATION -> PDX-ROXX KEY CODE -> A5860-01C000G-T4C00JP註冊號:6707437608密碼:AAP5GKS0000GDE100DS水晶報表10企業版key c

asp.net實訓總結

      public void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBod

IIS中asp.net程式後臺列印水晶報表 程式假死或印表機無反應的解決方法

  最近在做的幾個專案都用到了水晶報表的後臺列印,除錯的時候非常好用,無論是虛擬列印還是指定真實印表機,可一部署到IIS上就莫名其妙的卡死,或者提示了列印成功,印表機卻毫無反應。       一開始認為是許可權的問題,把C:/windows/temp和程式

ASP.NET中使用水晶報表

在我們對VS.Net中的水晶報表(Crystal Reports)進行研究之前,我和我朋友對如何將這個複雜的東東加入我們的Web應用有著非常的好奇心。一週以後,在閱讀了大量的“HOWTO”文件之後,我們成功地將一些簡單的報告加入到了我們的Asp.net程式中,並得到了一

關於ASP.NET MVC的權限認證的一些總結

filter mode allow 檢查 art 權限 奇怪 dha 可執行 最近在學ASP.NET MVC的權限認證的一些東西,上網搜索了一陣,發現網上的方法大多數是以下幾類: 一、FormsAuthentication.SetAuthCookie(admin.Name,

Asp.Net頁面傳值的方法簡單總結【原創】

tid 周期 () 路徑 coo webp 方式 qpi 優點 1、QueryString 當頁面上form按照get的方式向頁面發送請求數據的時候,web server會將請求數據放入 一個QEURY_STRING的環境變量中,然後通過QeueryString方法

Asp.Net中的三種分頁方式總結

rom chang clas 綁定 select proc dll xtend tinc 本人ASP.net初學,網上找了一些分頁的資料,看到這篇文章,沒看到作者在名字,我轉了你的文章,只為我可以用的時候方便查看,2010的文章了,不知道這技術是否過期。 以下才是正文

log4net 使用總結- (1)在ASP.NET MVC 中使用

站點 href 還需 配置文件 str nag org src stat 1. 去官網下載log4net.dll,增加引用到站點下(你也可以通過nuget 安裝) http://logging.apache.org/log4net/download_log4net.cgi

asp.net 表單數據提交,常見方式與錯誤總結

state 屬性 服務器 ews 一個 2.0 就會 數據頁面 url 在ASP中,我們通常把表單提交到另外一個頁面(接受數據頁面)。但是在ASP.NET中,服務端表單通常都是提交到本頁面的,如果我設置 form1.action="test.aspx"; 那麽就會導致視圖驗

ASP.NET WebApi總結之自定義權限驗證

use bar cor 介紹 string roles 獲得 ext status 在.NET中有兩個AuthorizeAttribute類, 一個定義在System.Web.Http命名空間下 #region 程序集 System.Web.Http, Version=5.

ASP.NET MVC傳遞Model到視圖的多種方式總結

ajax tco layout reac demo con png 轉換成 sin ASP.NET MVC傳遞Model到視圖的多種方式總結 有多種方式可以將數據傳遞到視圖,如下所示: ViewData ViewBag PartialView TempDat

MVC引用asp.net報表(測試小例子)

lse lsp publickey bag override request RR bre rda 1 public class Default1Controller : Controller 2 { 3 // 4 //

【親測】Asp.net Mvc5 + EF6 code first 方式連接MySQL總結

save created eof 節點配置 posit 創建 img from 建立連接時 本文原文地址為:https://www.cnblogs.com/summit7ca/p/5423637.html 原文測試環境為windows 8.1+Vs2013+MySql5.7