asp.net 水晶報表使用總結
手頭上的一個專案,終顯雛形,其中遇到一些問題,經過多番努力,終於得以解決,主要是水晶報表方面的。因為是第一次用,總結的同時,也給後來可能用到水晶報表的人一些微弱的指引,所以如果總結的不好的話,請大家指正。
關於水晶報表的一些基本概念,如push和pull模式等如果想了解的話,自己百度搜索下,或是找本書看就可以了。
這裡我主要是根據實際應用到的要求,來進行帶圖的詳細介紹,希望對新手有所幫助。
使用的是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 DB(ADO)”,在彈出框中選擇“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