第一篇:GridView報表總結
綁定數據
1、通過DataReader
string conStr = “Data Source=orcl;User ID=gtzf;Password=gtzf;”;OracleConnection conn = newOracleConnection(conStr);string QueryStr = “ select * from JBAJDJB ”;OracleCommand oraCMD = newOracleCommand(QueryStr, conn);conn.Open();OracleDataReader oraRead = oraCMD.ExecuteReader();GridView1.DataSource = oraRead;GridView1.DataBind();
2、通過DataSet string conStr = “Data Source=orcl;User ID=gtzf;Password=gtzf;”;OracleConnection conn = new OracleConnection(conStr);string sql = “SELECT UsersName FROM users”;OracleDataAdapter adapter = new OracleDataAdapter(QueryStr, conn);DataSet ds = new DataSet();adapter.Fill(ds);GridView1.DataSource = ds.Tables[0];GridView1.DataKeyNames = new string[] { “ID” };GridView1.DataBind();
3、通過DataTable string conStr = “Data Source=orcl;User ID=gtzf;Password=gtzf;”;OracleConnection conn = new OracleConnection(conStr);string sql = “SELECT UsersName FROM users”;OracleDataAdapter adapter = new OracleDataAdapter(QueryStr, conn);DataSet dt = new DataTable();adapter.Fill(dt);GridView1.DataSource = dt;GridView1.DataKeyNames = new string[] { “ID” };GridView1.DataBind();
GridView實現隔行換色
JavaScript代碼:
Body引用
引用GridView在頁面中
1、最簡單的引用
2、嵌入Table的引用
表名 <%--設置表頭--%>
第1列 第2列 第3列 第4列 第5列/th> 第6列 第7列 <%--設置表的內容--%>
第1列 第2列 第3列 第4列 第5列 第6列 第7列
保存GridView內容到EXCEL
1、第一種方式 1.1、添加com組建
1.2、添加引用 using Excel = Microsoft.Office.Interop.Excel;using System.Reflection;using System.Runtime.InteropServices;1.3、實現保存 //判斷數據是否為空 if(GvData.Rows.Count <= 1){
Response.Write(”“);
return;} //創建一個Excel應用程序
Excel.Application excel = new Excel.Application();//是否顯示導出過程 excel.Visible = false;//定義缺省值
Missing miss = Missing.Value;//創建一個新的工作簿
Excel.Workbooks workbooks = excel.Workbooks;Excel.Workbook workbook = workbooks.Add(miss);Excel.Worksheet sheet = workbook.ActiveSheet as Excel.Worksheet;sheet.Name = ”This is a test Excel“;Excel.Range er;
//獲取列數
int column = this.GvData.Rows[0].Cells.Count;//獲取行數
int row = this.GvData.Rows.Count;
//表的名稱
excel.Cells[1, 1] = ”表名“;er = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[1, column]);//獲取第一行 er.Merge(0);//合并單元格
er.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//設置居中對齊 er.Font.Size = 11;//設置字體大小
er.Cells.Interior.ColorIndex = 15;//設置背景色
//循環添加表頭
for(int i = 0;i < column;i++){
excel.Cells[2, i + 1] = this.GvData.HeaderRow.Cells[i].Text;}
//添加主體
for(int i = 0;i < row;i++){
for(int j = 0;j < column;j++)
{
excel.Cells[i + 3, j + 1] = this.GvData.Rows[i].Cells[j].Text;} }
//設置Excel表格屬性
er = sheet.get_Range(sheet.Cells[2, 1], sheet.Cells[row+2, column]);er.Font.Size = 11;er.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;er.EntireColumn.AutoFit();//設置自動調整列寬 er.Borders.LineStyle = 1;//添加邊框
string fileName = @Server.MapPath(”“).ToString()+ ”表名稱-“ + DateTime.Now.ToLongDateString()+ ”.xlsx“;sheet.SaveAs(fileName, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);//關閉表格
workbook.Close(false, miss, miss);workbooks.Close();//釋放資源 excel.Quit();//選擇保存路徑進行保存
FileInfo DownloadFile = new FileInfo(fileName);Response.Clear();Response.ClearHeaders();Response.Buffer = false;Response.ContentType = ”application/octet-stream“;Response.AppendHeader(”Content-Disposition“, ”attachment;filename=“ + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));Response.AppendHeader(”Content-Length“, DownloadFile.Length.ToString());Response.WriteFile(DownloadFile.FullName);Response.End();
2、第二種方式
protected void BtnExport_Click(object sender, EventArgs e){ string fileName;fileName = System.DateTime.Now.ToString(”yyyy-MM-dd“);Export(”application/ms-excel“, fileName+”.xls“);} ///
///
private void Export(string FileType, string FileName){
Response.Charset = ”GB2312“;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader(”Content-Disposition“, ”attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GrdContent.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();} ///
public override void VerifyRenderingInServerForm(Control control){ }
第二篇:2015總結報表
2015總結報告
2014已經過去,首先感謝領導給我這個機會,讓我有幸成為富邦的一員,2014進入富邦一個多月的時間主要是了解公司及產品的相關情況,2015年計劃如下:
一、加強對家具銷售專業知識的學習:
1)產品知識方面:對于辦公家具產品材料特點、規格型號包括面料和產品等以及使用方法、保養及維修知識。
2)客戶需求方面:對辦公家具購買者包括潛在客戶的消費心理、消費層次、及對生產產品的基本要求,加深引導。
3)市場知識方面:對家具市場的動向和變化、顧客購買力情況認識,對不同區域市場分析;工程進度認識。
4)專業知識方面:對家具有關的工藝技術知識學習,如裝修設計,空間布局與家具擺放的美觀性沒有概念。5)簽單技巧的培養。
“怎么拿到客戶→跟蹤客戶→業務談判→方案設計→成功簽單→售后安裝→售后維護→人際維護”等這一系列的流程的學習。
第三篇:總結、報表管理辦法
總結、報表管理辦法
1、主題內容與適用范圍
1.1 本辦法補充規定了部門內部各類總結和報表的匯總部門及內容、時間。
1.2本辦法適用于所有科室。2.總結、報表內容及填報單位 2.1業務總結、報表
2.1.1市場營銷科總結、報表:《電熱氣分析報告》、《大客戶建設進度表》;
2.1.2信息服務科總結、報表:《“95598”業務分析》(信息科月度總結);
2.1.3 計量管理科總結、報表:《電能計量裝置使用情況分析》;
2.1.4 公共類總結、報表:《各科室周志》 2.2 公司總結、報表
2.2.1綜合管理科總結、報表:《周志》、《各營銷單位一周工作匯總》、《月度總結》、《領導班子月度總結》、《分、子公司月(季)度指標完成情況表》;《營銷工作綜合分析報告》、《公司月度營銷工作報告》、《分、子公司營銷服務類指標考核情況通報》、《電熱費回收情況表》、《電熱費欠費情況統計》、《平均電價變動分析》、《安全監察簡報》、《安全生產隱患排查治理情況統計表》。3.報表時間及報表形式
3.1各科每周四必須在上午13:30分前將本周周志以電子郵件形式報綜合管理科馬蘋。
3.2 各科每月25日下午19:30分前(如遇雙休日和法定假日,提前至每月25日前的星期五下午19:30分前)將當月工作總結以電子郵件形式報綜合管理科馬蘋。其它半年總結和臨時性總結以具體通知時間為準。3.3《“95598”業務分析》(信息科月度總結)必須在當月26日下午19:30前(如遇雙休日和法定假日,提前至每月26日前的星期五下午19:30分前)以電子郵件形式報綜合管理科郭海云;
3.4《電能計量裝置使用情況分析》必須在當月27日下午19:30前(如遇雙休日和法定假日,提前至每月27日前的星期五下午19:30分前)以電子郵件形式報綜合管理科郭海云;
3.5《大客戶建設進度表》必須在當月30日下午19:30前(如遇雙休日和法定假日,提前至每月30日前的星期五下午19:30分前)以電子郵件形式報綜合管理科郭海云; 3.6《電熱氣分析報告》必須在次月2日下午18:00前(如遇雙休日和法定假日,必須在次月3日下午18:00前)以電子郵件形式報綜合管理科;但其中供熱量,包括其中蒸汽、采暖數據指標必須在當月30日下午18:00前(如遇雙休日和法定假日,提前至每月30日前的星期五下午18:00分前)以電子郵件形式報綜合管理科郭海云;
3.7向股份公司上報的周志,必須在每周星期四下午18:00前以電子郵件形式報綜合管理科科長;《各營銷單位一周工作匯總》必須在每周五下午18:00前以電子郵件形式報綜合管理科科長。
3.8向股份公司上報的《客戶服務中心月度總結》、《客戶服務中心領導班子月度總結》、《分、子公司月(季)度指標完成情況表》必須在每月27日上午12:00前(如遇雙休日或國家法定休息日,應提前在26日或25日下午17:00前)以電子郵件形式報綜合管理科科長。
3.9向股份公司領導報送的《公司月度營銷工作報告》必須在每月2日上午12:30前(如遇雙休日和法定假日,必須在次月4日上午12:30前)以電子郵件形式報綜合管理科科長。
3.10向股份公司上報的《分、子公司營銷服務類指標考核情況通報》必須在每月4日下午18:00前(如遇雙休日或國家法定休息日,應提前在2日或3日下午18:00前)以電子郵件形式報綜合管理科科長。
3.11向股份公司領導報送的《營銷工作綜合分析報告》必須在每月7日上午12:00前(如遇雙休日和法定假日,必須在次月8日或9日上午12:00前)以電子郵件形式報綜合管理科科長。
3.12向股份公司領導報送的《平均電價變動分析》必須在每月2日上午12:00前(如遇雙休日和法定假日,必須在次月4日上午12:00前)以電子郵件形式報郭海云,同時報綜合管理科科長。
3.13向股份公司領導報送的《電熱費回收情況表》、《電熱費欠費情況統計》必須在次月4日上午12:00前(如遇雙休日和法定假日,必須在次月5日或6日上午12:30前)以電子郵件形式報郭海云,同時報綜合管理科科長。
3.14向股份公司安監部報送的《安全監察簡報》和《安全生產隱患排查治理情況統計表》必須在每月27日18點前(如遇雙休日或國家法定休息日,應提前在25日或26日下午18:00前)以電子郵件形式或書面形式報綜合管理科《安監科》科長。審核后,上報公司安監部。
4、工作質量
4.1各科室必須按本管理補充辦法規定的時間,按時上報各科室總結、報表,同時應保證所報總結、報表內容真實、準確。
4.2本辦法中向股份公司報送的總結和報表,由辦法中規定的各工作負責人必須按規定的時間和形式上報。因其它單位或部門影響上報時間的,應提前一天向科室及中心領導匯報。
4.3負責上報總結和報表的負責人,在其它單位或部門提供的總結和報表內容和數據無誤的基礎上,必須對所報總結和報表中內容的真實性、準確性負責。
4.4負責匯總、整理或分析上報的負責人,發現其它單位或部門上報內容或數據有問題,直接影響上報工作的,應提前與其它單位或部門負責人溝通、聯系,要求對所報內容或數據進行核對再行上報。如其它單位或部門再次上報的內容或數據仍有問題,影響總結或報表上報的,由負責匯總、整理或分析上報負責人提出考核建議,在公司營銷會議上進行上報考核。
4.5 負責整理、匯總總結、報表負責人與直接上報總結、報表負責人,應主動相互核對總結、報表中內容與數據的準確性,相關的內容或相同的項目應保證內容與數據一致性,確有客觀原因,影響數據的一致性和唯一性,應注明合理原因,說明清楚影響的情況。5.檢查與考核
5.1未按規定時間上報總結和報表的,每類總結、報表每超一天扣責任人員1分;同時扣責任科室科長1分; 5.2因工作人員本人原因,直接影響到總結和報表按時上報的扣責任人員3分;
5.3 屬于本權限范圍內未發現其它單位和部門上報的總結和報表的內容或數據有問題,直接影響總結和報表按時上報的扣責任人員2分;
5.4對中心各科室及專業人員報送的內容和數據,發現有不準確的,扣責任人員2分。
5.5未按本辦法第4.5條規定的,發生相同類項目的內容和數據結果不一致,不是唯一性,沒有客觀原因進行明確說明的,整理、匯總負責人又未積極、及時核對處理的,對整理、匯總負責人和負責直接報送總結、報表負責人各扣2分; 5.6因其它單位或部門原因,直接影響到總結和報表上報的,提出考核建議,報中心領導批準后進行考核。
第四篇:biee報表開發總結
biee報表開發總結
(一)當BI項目已經在essbase中搭建好框架之后,接著就要通過biee制作各種報表來展示BI的成果了。
BIEE報表開發能否成功的關鍵就在于初期的設計。首先你必須明確你的需求,你開發的報表是給哪些人使用的,他們會如何使用,比如他們一般會有些什么輸入,他們希望產生什么樣的輸出以及他們可能會做什么樣的下鉆動作。一張報表往往只是給一類人使用的,你必須精心地為他們挑選合適的維度以及初始粒度。所以同樣的查詢內容往往需要做好幾張報表適合不同維度不同方式的數據查看(用下鉆的方式可以通過匯總數據查詢到詳細數據,但是效率不高,如果已有足夠的信息可以直接查到詳細數據則直接顯示詳細數據)。這樣做可以減少每次查詢使用到得維度,從而提高查詢效率。一般在一張儀表盤頁中只放一張報表(匯總報表除外)。
一組報表一般由一張匯總報表(給領導查看)和幾張明細查閱報表組成,匯總報表中包含各種圖表,初始粒度大,同時支持很深的下鉆,明細報表針對某個用途提供合適的查詢方式,一般不放圖表。維度是由請求字段控制的,字段越多查詢越慢,所以請求字段不能過多,尤其是大的維度(我遇到過成員好幾千的維度,而且層次很少)不能太多,除非已經在篩選器中進行控制,最好不要直接添加時間字段,而使用全局篩選器來控制時間。相反請求提示和相應的篩選器越多查詢效率就越高,所以請求提示和篩選器可以多一些(這樣還可以提供便捷的訪問),請求提示使用什么輸入方式也是需要考慮的問題。關于使用表還是數據透視表,兩者各有利弊。表因為其結構就是請求字段的結構,所以可操作性強一些,可以實現很多數據透視表無法實現的功能(儀表盤排序,條件樣式等),但是數據透視表在表現能力上優于表,尤其是維度較多的情況,可以通過一些高級的操作來改善數據透視表的功能(如修改saw腳本)。
總體來說BIEE報表的設計要控制好以下3點:
1、匯總和明細分開;
2、控制各種不同的查詢路徑;
3、考慮查詢效率。
biee報表開發總結
(二)因為我做的報表的數據源是essbase多維數據庫,所以在制作報表時不需要在administration tool當中添加維度和度量。只要直接導入數據源,然后做兩次拖曳就可以了。但是很不幸的是BIEE其實并沒有提供對essbase很好的支持,很多功能都無法實現,或需要調整之后才能實現。
在將文件夾從物理層拖到邏輯層之后,可以看到多維數據庫的邏輯結構,但是展開的時候有些讓人不知所云,因為biee并不使用essbase大綱中的名稱,而是根據維度層次來命名的。需要注意的是每個維度實際是從第2層(Gen2)開始的(因為essbase大綱中的實際維度也是從第2層開始算起,第0層是大綱的根,第1層是維度的根),之后的層次可以看到被標為藍色,這類似于關系型的雪花模型。所以在將文件夾從邏輯層拖到展現層之后就可以把第0層和第1層刪了。維度的每一層只有一個key,它到底是維度值還是它的別名呢?答案是別名,而且我到目前為止還沒有發現顯示維度值的方法(可能是BIEE不支持)。接著修改一下維度和度量的標簽就可以在answer里面使用了。但是這樣還是不夠的,當使用到聚合的時候就會出現“發現外部聚合集”的錯誤,原因是BIEE在導入essbase的時候,默認將度量的聚合屬性設置為外部聚合。只要將外部聚合改為正確的度量即可,注意在物理層和邏輯層都要改,另外所有度量都要指定一種聚合方式,不能為none。
biee報表開發總結
(三)在answers中的開發難點就在于設計,我在(一)中已經介紹了經驗。但是顯然不可能一開始就設計得十分完美,有的時候會遇到功能實現不了或者效率太低,報表根本刷不出來,這時要么修改原先的設計,要么想辦法解決問題。
關于如何提高效率,首先是優化查詢。在BIEE當中,有趣的一點是它首先根據你的設計生成一條SQL查詢語句,然后如果判斷出數據源是多維數據庫,則再將SQL語句在后臺轉化為MDX語句去執行。轉化的邏輯大致是,select子句中放查詢目標集(對應于MDX中的select字句,但是沒有行列之分),from字句中放cube,where字句中定義如何進行切片。所以在設計時盡量控制請求字段(對應select字句)中的維度字段,不需要的維度不要添加,尤其是大維度,而篩選器(對應where字句)則盡可能的多,這樣切片可以切得小一些。另外查詢的邏輯不要太復雜,不要使用嵌套查詢(篩選器不要使用“根據其他請求結果”)。如果這樣還不行,就只能優化數據源了,對于essbase,可以考慮將一些復雜的動態計算轉為預先計算后存儲(雖然這樣做很可能會導致占用的空間增長好幾倍...),可以大大提高效率。
在BIEE中表的樣式控制要比數據透視表靈活得多,基本的樣式都是可控的,所以能用表的時候就盡量用表。關于如何設置樣式,由于比較繁雜而且在(一)中也介紹了一些經驗,所以這里就不一一介紹了,比較重要的就是條件樣式(只用表能用),可以靈活地控制顯示樣式,另外就是列的隱藏,可以控制哪些列在表中不顯示。
BIEE的訪問控制是比較靈活的,可以使用單獨的鏈接,也可以對標題設鏈接,還可以對值設鏈接,并可以控制是否用于下鉆(在列的交互控制當中設置搜索或鏈接)。BIEE最神奇的就是篩選器中的提示選項,選了這個選項不僅可以使用提示中的選擇還可以用于鏈接的值傳遞。如果一個請求的字段的篩選器使用提示,則通過值鏈接被連接過來的時候,該字段就會被篩選為進行鏈接的那個值。另外使用提示默認是所有值,所以可以靈活的控制提示字段,比如同一個請求在不同地方使用時,需要的查詢條件可能不同,這時可以通過請求提示來控制查詢條件,此時就必須將所有使用到的查詢條件字段加一個使用請求的篩選器。
不過在awnser中提示篩選器是不會被使用的,如果不使用篩選器就會導致查詢過慢的話,建議在設計報表時先指定一個篩選值,設計完成后再將篩選器的篩選方式改為請求。對于實在無法實現的功能,最后一條路就是修改saw腳本了,但是有關BIEE的saw腳本的文檔實在太少...不過通過查看saw腳本倒是可以分析出別人的報表的某些功能是怎么實現的。實施上saw腳本包含了一個請求的一切,包括顯示樣式和SQL查詢,所以如果要備份或者拷貝一個請求,最簡單的方法就是把saw腳本拷貝下來。如果你想直接修改SQL查詢語句,應該先看一下SQL查詢語句的各個字句存儲在saw腳本中的什么位置,然后對saw腳本修改,如果直接改下面的SQL框,點了設置SQL的結果是,它產生一個最簡單的SQL語句(沒有任何附加內容),而且把原來你的一切設置都重新初始化(要是你之前沒備份的化,趕緊退出重來吧,千萬不要保存了...)
另外介紹一些經驗。為了防止字段過多導致一格內無法一行顯示,可以在格式化視圖的附加格式中指定一個很大的寬度,然后選擇單元格向左對齊。如果只想修改請求條件的化,最好不要直接雙擊進入,而是先打開所在的文件夾,然后在面板中選擇修改條件,這樣可以避免一次不必要的查詢。查詢如果異常中斷,即使你在后臺取消了請求,甚至刪除會話,essbase仍然會繼續執行,如果你想進入同一個請求就會報錯,這時你能做的就是等待,等essbase執行完畢才能繼續使用(這也是BIEE與essbase不兼容的一個表現,它導致了BIEE的不穩
定,所以要盡量避免沒有篩選控制的查詢)。
biee報表開發總結
(四)本文主要講biee中answers和dashboard的開發步驟。在administrator tool搭建好框架之后,接著通
過在瀏覽器中操作的answers和dashboard開發最后的報表顯示。
首先要做的是添加全局篩選器。對每一個維度都設定一個全局篩選器,每個層次都設定為請求。
接著開發請求。按請求在報表中的使用順序一個一個開發請求。先選擇合適的請求字段,再添加全局
篩選器,接著添加測試篩選條件(因為全局篩選器中的篩選條件都是請求,所以不會在answers中發揮作
用,所以不會和測試篩選條件沖突),然后在表中查看結果,如果要用表顯示則調整字段的順序。如果不
報錯且數據無誤,則返回請求條件面板,添加一些需要計算的字段(這些字段可以通過加入一個原始字段
然后用編輯公式輸入計算表達式產生),設置標題和值的樣式,并添加篩選器。然后在結果面板中開發需
要用到的數據透視表或圖表,同樣需要設置字段順序和顯示樣式和一些其他小功能(比如計算和排序)。
然后在組合布局中調整布局,并調整格式化視圖中的值。最后回到條件面板,在列格式中設置交互即鏈接
(建議不要現在做,因為鏈接最好鏈接到儀表盤,不過如果鏈接的內容很簡單也可以這里做)。
然后開發提示。提示要考慮到所有可能的篩選,提示可以盡量多(就像篩選要盡量多),但是必須要
關聯到篩選器。提示的輸入方式很重要,必須要根據實際需求精心設計。提示之間有關聯的要勾選約束,這樣可以限制提示的內容。但是biee的約束很惡心,你不能限定某幾個提示有約束,一旦勾選了約束,就
會和所有約束關聯,也就是說如果其他任何一個提示被輸入錯誤的值,它就會報錯。對提示進行分組以防
止一行中提示太多。提示設計完成后一定要預覽一下,看看效果如何,尤其是約束關系。這時可以將所有的測試篩選器刪除了。
然后就可以再dashboard上開發了。首先建一個儀表盤,然后添加提示和請求,不同的請求放在不同的部分,但是因為部分只能垂直排列,所以如果要水平排列則必須放在同一個部分,并設置排列方式為水
平排列,排版的時候要注意,各部分的附加格式的寬度必須一致,否則會出現排版錯誤。最后就是甚至權限了,這個很簡單,這里不介紹了。
整個開發過程當然不可能按上面的步驟一帆風順地做下來,在開發過程中經常會遇到需求變更和一些
意外的結果,所以整個開發過程應該是一個循環迭代的過程,不斷地完善,最后使得開發出
來的報表十分
好用而且能夠從各方面反映這個報表應該反映的內容。
第五篇:報表的學習總結
關于ActiveReports for.NET 3.0 Setup NET 的一些總結:
1:2010上不能建立該報表文件,需要在2008上建好后,復制到2010上用;
2:不存在計算列時,點擊detial,將該報表需要連接的數據庫的,連接字符串和執行的語句在顯示的窗口上寫入,要看清楚所要進行操作的數據庫是那種類型的;
3:然后,在相應的文本框上設置氣屬性:dataFile屬性,設置其對應的字段,4:當需要計算某列的總值時,需要在設計代碼界面 將下面的代碼寫在相應的位置,然在設計視圖界面在gfOrderID的框架里面對相應的textbox的屬性進行相應的操作
//==========
private DataDynamics.ActiveReports.GroupHeader ghOrderID;
private DataDynamics.ActiveReports.Detail detail;
private DataDynamics.ActiveReports.GroupFooter gfOrderID;
//==========
this.ghOrderID = new DataDynamics.ActiveReports.GroupHeader();
this.detail = new DataDynamics.ActiveReports.Detail();
this.gfOrderID = new DataDynamics.ActiveReports.GroupFooter();
//
// ghOrderID
//
this.ghOrderID.CanShrink = true;
this.ghOrderID.GroupKeepTogether = DataDynamics.ActiveReports.GroupKeepTogether.FirstDetail;this.ghOrderID.Height = 0.7708333F;
this.ghOrderID.Name = “ghOrderID”;
//
// detail
//
this.detail.ColumnSpacing = 0F;
this.detail.Height = 2F;
this.detail.Name = “detail”;
//
// gfOrderID
//
this.gfOrderID.CanShrink = true;
this.gfOrderID.Height = 0.2916667F;
this.gfOrderID.Name = “gfOrderID”;
this.Sections.Add(this.ghOrderID);
this.Sections.Add(this.detail);
this.Sections.Add(this.gfOrderID);
5:當SQL語句的列不能滿足需求時,需要在現有的基礎上添加某列時,找到報表的DataInitialize 事件中添加某列值對應的字段名稱
this.Fields.Add(“列名”);
就添加了一個新列
在報表的FetchData
事件中對該列進行賦值
得到SQL語句產生的某列的值
double zmoney = Convert.ToDouble(this.Fields[“Eat_Number”].Value, CultureInfo.CurrentCulture);double kmoney = Convert.ToDouble(this.Fields[“Eat_Price”].Value, CultureInfo.CurrentCulture);// Now perform the calculation for our added calculated field:
對新列進行賦值
this.Fields[“TotalMoney”].Value = zmoney * kmoney;
在報表的設計界面對控件進行綁定相應的字段,這樣就完成了相應數據的綁定
6:當列是動態列時,我們首先要要訪問數據庫,得到相應動態列的列名,在ReportStart 事件中設計需要顯示的動態數據綁定相應控件的設置,這樣就完成動態數據的綁定
或者根據規定的規則根據列名來判斷該字段是否是動態列,進而來設置動態列,詳細的設置代碼自己可以查找,或者對應下面的代碼
#region 表頭
Label lb = new DataDynamics.ActiveReports.Label();
lb.Border.BottomColor = System.Drawing.Color.Black;
lb.Border.BottomStyle = DataDynamics.ActiveReports.BorderLineStyle.None;lb.Border.LeftColor = System.Drawing.Color.Black;
lb.Border.LeftStyle = DataDynamics.ActiveReports.BorderLineStyle.None;lb.Border.RightColor = System.Drawing.Color.Black;
lb.Border.RightStyle = DataDynamics.ActiveReports.BorderLineStyle.None;lb.Border.TopColor = System.Drawing.Color.Black;
lb.Border.TopStyle = DataDynamics.ActiveReports.BorderLineStyle.None;lb.Height = 0.1875F;
lb.HyperLink = null;
lb.Left =(float)(2f + lbLeft * i);
lb.Name = “lb” + i.ToString();
lb.Style = “ddo-char-set: 0;background-color: LightGrey;font-size: 9.75pt;font-family: Sim” +
“Sun;”;
lb.Text = dt.Rows[i][0].ToString();
lb.Top = 0F;
lb.Width =(float)(lbLeft-0.1f);
this.ghOrderID.Controls.Add(lb);
#endregion
#region 各門店詳細數據
TextBox txt = new DataDynamics.ActiveReports.TextBox();
txt.Border.BottomColor = System.Drawing.Color.Black;
txt.Border.BottomStyle = DataDynamics.ActiveReports.BorderLineStyle.None;txt.Border.LeftColor = System.Drawing.Color.Black;
txt.Border.LeftStyle = DataDynamics.ActiveReports.BorderLineStyle.None;txt.Border.RightColor = System.Drawing.Color.Black;
txt.Border.RightStyle = DataDynamics.ActiveReports.BorderLineStyle.None;txt.Border.TopColor = System.Drawing.Color.Black;
txt.Border.TopStyle = DataDynamics.ActiveReports.BorderLineStyle.None;txt.DataField = dt.Rows[i][0].ToString();
txt.Height = 0.25F;
txt.Left =(float)(2f + lbLeft * i);
txt.Name = “txt” + i.ToString();
txt.OutputFormat = “0.00”;
txt.Style = “";
txt.SummaryGroup = ”ghOrderID“;
txt.Text = ”";
txt.Top = 0F;
txt.Width =(float)(lbLeft-0.1f);
this.detail.Controls.Add(txt);
#endregion
7:子報表的設置
在主報表Detail設計框中拖入subReport控件,在代碼界面申明對應的子報表,然后實例化,并賦值為null(CheckListReport subReport = null;)然后在reportStart事件中寫
if(subReport == null)
{
subReport = new CheckListReport();
this.subReport1.Report = subReport;
}
在ReportEnd事件中寫
subReport.Document.Dispose();
subReport.Dispose();
subReport = null;
在事件detail_Format寫
this.subReport1.Report.ShowParameterUI = false;
this.subReport1.Report.Parameters[0].Type = Parameter.DataType.String;
this.subReport1.Report.Parameters[0].Value = this.textBox1.Text;(主報表和自報表關聯的字段對應的控件)
子報表中傳遞的參數(從主報表中)的寫法是cast('<%Eat_Text|Enter Eat_Text|1|S%>' as varchar(300))
將字段替換成相應的字段就可以了