第一篇:2015總結(jié)報(bào)表
2015總結(jié)報(bào)告
2014已經(jīng)過去,首先感謝領(lǐng)導(dǎo)給我這個(gè)機(jī)會(huì),讓我有幸成為富邦的一員,2014進(jìn)入富邦一個(gè)多月的時(shí)間主要是了解公司及產(chǎn)品的相關(guān)情況,2015年計(jì)劃如下:
一、加強(qiáng)對(duì)家具銷售專業(yè)知識(shí)的學(xué)習(xí):
1)產(chǎn)品知識(shí)方面:對(duì)于辦公家具產(chǎn)品材料特點(diǎn)、規(guī)格型號(hào)包括面料和產(chǎn)品等以及使用方法、保養(yǎng)及維修知識(shí)。
2)客戶需求方面:對(duì)辦公家具購買者包括潛在客戶的消費(fèi)心理、消費(fèi)層次、及對(duì)生產(chǎn)產(chǎn)品的基本要求,加深引導(dǎo)。
3)市場知識(shí)方面:對(duì)家具市場的動(dòng)向和變化、顧客購買力情況認(rèn)識(shí),對(duì)不同區(qū)域市場分析;工程進(jìn)度認(rèn)識(shí)。
4)專業(yè)知識(shí)方面:對(duì)家具有關(guān)的工藝技術(shù)知識(shí)學(xué)習(xí),如裝修設(shè)計(jì),空間布局與家具擺放的美觀性沒有概念。5)簽單技巧的培養(yǎng)。
“怎么拿到客戶→跟蹤客戶→業(yè)務(wù)談判→方案設(shè)計(jì)→成功簽單→售后安裝→售后維護(hù)→人際維護(hù)”等這一系列的流程的學(xué)習(xí)。
第二篇:GridView報(bào)表總結(jié)
綁定數(shù)據(jù)
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實(shí)現(xiàn)隔行換色
JavaScript代碼:
Body引用
引用GridView在頁面中
1、最簡單的引用
2、嵌入Table的引用
表名 <%--設(shè)置表頭--%>
第1列 第2列 第3列 第4列 第5列/th> 第6列 第7列 <%--設(shè)置表的內(nèi)容--%>
第1列 第2列 第3列 第4列 第5列 第6列 第7列
保存GridView內(nèi)容到EXCEL
1、第一種方式 1.1、添加com組建
1.2、添加引用 using Excel = Microsoft.Office.Interop.Excel;using System.Reflection;using System.Runtime.InteropServices;1.3、實(shí)現(xiàn)保存 //判斷數(shù)據(jù)是否為空 if(GvData.Rows.Count <= 1){
Response.Write(”“);
return;} //創(chuàng)建一個(gè)Excel應(yīng)用程序
Excel.Application excel = new Excel.Application();//是否顯示導(dǎo)出過程 excel.Visible = false;//定義缺省值
Missing miss = Missing.Value;//創(chuàng)建一個(gè)新的工作簿
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;
//獲取列數(shù)
int column = this.GvData.Rows[0].Cells.Count;//獲取行數(shù)
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;//設(shè)置居中對(duì)齊 er.Font.Size = 11;//設(shè)置字體大小
er.Cells.Interior.ColorIndex = 15;//設(shè)置背景色
//循環(huán)添加表頭
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;} }
//設(shè)置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();//設(shè)置自動(dòng)調(diào)整列寬 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);//關(guān)閉表格
workbook.Close(false, miss, miss);workbooks.Close();//釋放資源 excel.Quit();//選擇保存路徑進(jìn)行保存
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){ }
第三篇:總結(jié)、報(bào)表管理辦法
總結(jié)、報(bào)表管理辦法
1、主題內(nèi)容與適用范圍
1.1 本辦法補(bǔ)充規(guī)定了部門內(nèi)部各類總結(jié)和報(bào)表的匯總部門及內(nèi)容、時(shí)間。
1.2本辦法適用于所有科室。2.總結(jié)、報(bào)表內(nèi)容及填報(bào)單位 2.1業(yè)務(wù)總結(jié)、報(bào)表
2.1.1市場營銷科總結(jié)、報(bào)表:《電熱氣分析報(bào)告》、《大客戶建設(shè)進(jìn)度表》;
2.1.2信息服務(wù)科總結(jié)、報(bào)表:《“95598”業(yè)務(wù)分析》(信息科月度總結(jié));
2.1.3 計(jì)量管理科總結(jié)、報(bào)表:《電能計(jì)量裝置使用情況分析》;
2.1.4 公共類總結(jié)、報(bào)表:《各科室周志》 2.2 公司總結(jié)、報(bào)表
2.2.1綜合管理科總結(jié)、報(bào)表:《周志》、《各營銷單位一周工作匯總》、《月度總結(jié)》、《領(lǐng)導(dǎo)班子月度總結(jié)》、《分、子公司月(季)度指標(biāo)完成情況表》;《營銷工作綜合分析報(bào)告》、《公司月度營銷工作報(bào)告》、《分、子公司營銷服務(wù)類指標(biāo)考核情況通報(bào)》、《電熱費(fèi)回收情況表》、《電熱費(fèi)欠費(fèi)情況統(tǒng)計(jì)》、《平均電價(jià)變動(dòng)分析》、《安全監(jiān)察簡報(bào)》、《安全生產(chǎn)隱患排查治理情況統(tǒng)計(jì)表》。3.報(bào)表時(shí)間及報(bào)表形式
3.1各科每周四必須在上午13:30分前將本周周志以電子郵件形式報(bào)綜合管理科馬蘋。
3.2 各科每月25日下午19:30分前(如遇雙休日和法定假日,提前至每月25日前的星期五下午19:30分前)將當(dāng)月工作總結(jié)以電子郵件形式報(bào)綜合管理科馬蘋。其它半年總結(jié)和臨時(shí)性總結(jié)以具體通知時(shí)間為準(zhǔn)。3.3《“95598”業(yè)務(wù)分析》(信息科月度總結(jié))必須在當(dāng)月26日下午19:30前(如遇雙休日和法定假日,提前至每月26日前的星期五下午19:30分前)以電子郵件形式報(bào)綜合管理科郭海云;
3.4《電能計(jì)量裝置使用情況分析》必須在當(dāng)月27日下午19:30前(如遇雙休日和法定假日,提前至每月27日前的星期五下午19:30分前)以電子郵件形式報(bào)綜合管理科郭海云;
3.5《大客戶建設(shè)進(jìn)度表》必須在當(dāng)月30日下午19:30前(如遇雙休日和法定假日,提前至每月30日前的星期五下午19:30分前)以電子郵件形式報(bào)綜合管理科郭海云; 3.6《電熱氣分析報(bào)告》必須在次月2日下午18:00前(如遇雙休日和法定假日,必須在次月3日下午18:00前)以電子郵件形式報(bào)綜合管理科;但其中供熱量,包括其中蒸汽、采暖數(shù)據(jù)指標(biāo)必須在當(dāng)月30日下午18:00前(如遇雙休日和法定假日,提前至每月30日前的星期五下午18:00分前)以電子郵件形式報(bào)綜合管理科郭海云;
3.7向股份公司上報(bào)的周志,必須在每周星期四下午18:00前以電子郵件形式報(bào)綜合管理科科長;《各營銷單位一周工作匯總》必須在每周五下午18:00前以電子郵件形式報(bào)綜合管理科科長。
3.8向股份公司上報(bào)的《客戶服務(wù)中心月度總結(jié)》、《客戶服務(wù)中心領(lǐng)導(dǎo)班子月度總結(jié)》、《分、子公司月(季)度指標(biāo)完成情況表》必須在每月27日上午12:00前(如遇雙休日或國家法定休息日,應(yīng)提前在26日或25日下午17:00前)以電子郵件形式報(bào)綜合管理科科長。
3.9向股份公司領(lǐng)導(dǎo)報(bào)送的《公司月度營銷工作報(bào)告》必須在每月2日上午12:30前(如遇雙休日和法定假日,必須在次月4日上午12:30前)以電子郵件形式報(bào)綜合管理科科長。
3.10向股份公司上報(bào)的《分、子公司營銷服務(wù)類指標(biāo)考核情況通報(bào)》必須在每月4日下午18:00前(如遇雙休日或國家法定休息日,應(yīng)提前在2日或3日下午18:00前)以電子郵件形式報(bào)綜合管理科科長。
3.11向股份公司領(lǐng)導(dǎo)報(bào)送的《營銷工作綜合分析報(bào)告》必須在每月7日上午12:00前(如遇雙休日和法定假日,必須在次月8日或9日上午12:00前)以電子郵件形式報(bào)綜合管理科科長。
3.12向股份公司領(lǐng)導(dǎo)報(bào)送的《平均電價(jià)變動(dòng)分析》必須在每月2日上午12:00前(如遇雙休日和法定假日,必須在次月4日上午12:00前)以電子郵件形式報(bào)郭海云,同時(shí)報(bào)綜合管理科科長。
3.13向股份公司領(lǐng)導(dǎo)報(bào)送的《電熱費(fèi)回收情況表》、《電熱費(fèi)欠費(fèi)情況統(tǒng)計(jì)》必須在次月4日上午12:00前(如遇雙休日和法定假日,必須在次月5日或6日上午12:30前)以電子郵件形式報(bào)郭海云,同時(shí)報(bào)綜合管理科科長。
3.14向股份公司安監(jiān)部報(bào)送的《安全監(jiān)察簡報(bào)》和《安全生產(chǎn)隱患排查治理情況統(tǒng)計(jì)表》必須在每月27日18點(diǎn)前(如遇雙休日或國家法定休息日,應(yīng)提前在25日或26日下午18:00前)以電子郵件形式或書面形式報(bào)綜合管理科《安監(jiān)科》科長。審核后,上報(bào)公司安監(jiān)部。
4、工作質(zhì)量
4.1各科室必須按本管理補(bǔ)充辦法規(guī)定的時(shí)間,按時(shí)上報(bào)各科室總結(jié)、報(bào)表,同時(shí)應(yīng)保證所報(bào)總結(jié)、報(bào)表內(nèi)容真實(shí)、準(zhǔn)確。
4.2本辦法中向股份公司報(bào)送的總結(jié)和報(bào)表,由辦法中規(guī)定的各工作負(fù)責(zé)人必須按規(guī)定的時(shí)間和形式上報(bào)。因其它單位或部門影響上報(bào)時(shí)間的,應(yīng)提前一天向科室及中心領(lǐng)導(dǎo)匯報(bào)。
4.3負(fù)責(zé)上報(bào)總結(jié)和報(bào)表的負(fù)責(zé)人,在其它單位或部門提供的總結(jié)和報(bào)表內(nèi)容和數(shù)據(jù)無誤的基礎(chǔ)上,必須對(duì)所報(bào)總結(jié)和報(bào)表中內(nèi)容的真實(shí)性、準(zhǔn)確性負(fù)責(zé)。
4.4負(fù)責(zé)匯總、整理或分析上報(bào)的負(fù)責(zé)人,發(fā)現(xiàn)其它單位或部門上報(bào)內(nèi)容或數(shù)據(jù)有問題,直接影響上報(bào)工作的,應(yīng)提前與其它單位或部門負(fù)責(zé)人溝通、聯(lián)系,要求對(duì)所報(bào)內(nèi)容或數(shù)據(jù)進(jìn)行核對(duì)再行上報(bào)。如其它單位或部門再次上報(bào)的內(nèi)容或數(shù)據(jù)仍有問題,影響總結(jié)或報(bào)表上報(bào)的,由負(fù)責(zé)匯總、整理或分析上報(bào)負(fù)責(zé)人提出考核建議,在公司營銷會(huì)議上進(jìn)行上報(bào)考核。
4.5 負(fù)責(zé)整理、匯總總結(jié)、報(bào)表負(fù)責(zé)人與直接上報(bào)總結(jié)、報(bào)表負(fù)責(zé)人,應(yīng)主動(dòng)相互核對(duì)總結(jié)、報(bào)表中內(nèi)容與數(shù)據(jù)的準(zhǔn)確性,相關(guān)的內(nèi)容或相同的項(xiàng)目應(yīng)保證內(nèi)容與數(shù)據(jù)一致性,確有客觀原因,影響數(shù)據(jù)的一致性和唯一性,應(yīng)注明合理原因,說明清楚影響的情況。5.檢查與考核
5.1未按規(guī)定時(shí)間上報(bào)總結(jié)和報(bào)表的,每類總結(jié)、報(bào)表每超一天扣責(zé)任人員1分;同時(shí)扣責(zé)任科室科長1分; 5.2因工作人員本人原因,直接影響到總結(jié)和報(bào)表按時(shí)上報(bào)的扣責(zé)任人員3分;
5.3 屬于本權(quán)限范圍內(nèi)未發(fā)現(xiàn)其它單位和部門上報(bào)的總結(jié)和報(bào)表的內(nèi)容或數(shù)據(jù)有問題,直接影響總結(jié)和報(bào)表按時(shí)上報(bào)的扣責(zé)任人員2分;
5.4對(duì)中心各科室及專業(yè)人員報(bào)送的內(nèi)容和數(shù)據(jù),發(fā)現(xiàn)有不準(zhǔn)確的,扣責(zé)任人員2分。
5.5未按本辦法第4.5條規(guī)定的,發(fā)生相同類項(xiàng)目的內(nèi)容和數(shù)據(jù)結(jié)果不一致,不是唯一性,沒有客觀原因進(jìn)行明確說明的,整理、匯總負(fù)責(zé)人又未積極、及時(shí)核對(duì)處理的,對(duì)整理、匯總負(fù)責(zé)人和負(fù)責(zé)直接報(bào)送總結(jié)、報(bào)表負(fù)責(zé)人各扣2分; 5.6因其它單位或部門原因,直接影響到總結(jié)和報(bào)表上報(bào)的,提出考核建議,報(bào)中心領(lǐng)導(dǎo)批準(zhǔn)后進(jìn)行考核。
第四篇:biee報(bào)表開發(fā)總結(jié)
biee報(bào)表開發(fā)總結(jié)
(一)當(dāng)BI項(xiàng)目已經(jīng)在essbase中搭建好框架之后,接著就要通過biee制作各種報(bào)表來展示BI的成果了。
BIEE報(bào)表開發(fā)能否成功的關(guān)鍵就在于初期的設(shè)計(jì)。首先你必須明確你的需求,你開發(fā)的報(bào)表是給哪些人使用的,他們會(huì)如何使用,比如他們一般會(huì)有些什么輸入,他們希望產(chǎn)生什么樣的輸出以及他們可能會(huì)做什么樣的下鉆動(dòng)作。一張報(bào)表往往只是給一類人使用的,你必須精心地為他們挑選合適的維度以及初始粒度。所以同樣的查詢內(nèi)容往往需要做好幾張報(bào)表適合不同維度不同方式的數(shù)據(jù)查看(用下鉆的方式可以通過匯總數(shù)據(jù)查詢到詳細(xì)數(shù)據(jù),但是效率不高,如果已有足夠的信息可以直接查到詳細(xì)數(shù)據(jù)則直接顯示詳細(xì)數(shù)據(jù))。這樣做可以減少每次查詢使用到得維度,從而提高查詢效率。一般在一張儀表盤頁中只放一張報(bào)表(匯總報(bào)表除外)。
一組報(bào)表一般由一張匯總報(bào)表(給領(lǐng)導(dǎo)查看)和幾張明細(xì)查閱報(bào)表組成,匯總報(bào)表中包含各種圖表,初始粒度大,同時(shí)支持很深的下鉆,明細(xì)報(bào)表針對(duì)某個(gè)用途提供合適的查詢方式,一般不放圖表。維度是由請(qǐng)求字段控制的,字段越多查詢?cè)铰哉?qǐng)求字段不能過多,尤其是大的維度(我遇到過成員好幾千的維度,而且層次很少)不能太多,除非已經(jīng)在篩選器中進(jìn)行控制,最好不要直接添加時(shí)間字段,而使用全局篩選器來控制時(shí)間。相反請(qǐng)求提示和相應(yīng)的篩選器越多查詢效率就越高,所以請(qǐng)求提示和篩選器可以多一些(這樣還可以提供便捷的訪問),請(qǐng)求提示使用什么輸入方式也是需要考慮的問題。關(guān)于使用表還是數(shù)據(jù)透視表,兩者各有利弊。表因?yàn)槠浣Y(jié)構(gòu)就是請(qǐng)求字段的結(jié)構(gòu),所以可操作性強(qiáng)一些,可以實(shí)現(xiàn)很多數(shù)據(jù)透視表無法實(shí)現(xiàn)的功能(儀表盤排序,條件樣式等),但是數(shù)據(jù)透視表在表現(xiàn)能力上優(yōu)于表,尤其是維度較多的情況,可以通過一些高級(jí)的操作來改善數(shù)據(jù)透視表的功能(如修改saw腳本)。
總體來說BIEE報(bào)表的設(shè)計(jì)要控制好以下3點(diǎn):
1、匯總和明細(xì)分開;
2、控制各種不同的查詢路徑;
3、考慮查詢效率。
biee報(bào)表開發(fā)總結(jié)
(二)因?yàn)槲易龅膱?bào)表的數(shù)據(jù)源是essbase多維數(shù)據(jù)庫,所以在制作報(bào)表時(shí)不需要在administration tool當(dāng)中添加維度和度量。只要直接導(dǎo)入數(shù)據(jù)源,然后做兩次拖曳就可以了。但是很不幸的是BIEE其實(shí)并沒有提供對(duì)essbase很好的支持,很多功能都無法實(shí)現(xiàn),或需要調(diào)整之后才能實(shí)現(xiàn)。
在將文件夾從物理層拖到邏輯層之后,可以看到多維數(shù)據(jù)庫的邏輯結(jié)構(gòu),但是展開的時(shí)候有些讓人不知所云,因?yàn)閎iee并不使用essbase大綱中的名稱,而是根據(jù)維度層次來命名的。需要注意的是每個(gè)維度實(shí)際是從第2層(Gen2)開始的(因?yàn)閑ssbase大綱中的實(shí)際維度也是從第2層開始算起,第0層是大綱的根,第1層是維度的根),之后的層次可以看到被標(biāo)為藍(lán)色,這類似于關(guān)系型的雪花模型。所以在將文件夾從邏輯層拖到展現(xiàn)層之后就可以把第0層和第1層刪了。維度的每一層只有一個(gè)key,它到底是維度值還是它的別名呢?答案是別名,而且我到目前為止還沒有發(fā)現(xiàn)顯示維度值的方法(可能是BIEE不支持)。接著修改一下維度和度量的標(biāo)簽就可以在answer里面使用了。但是這樣還是不夠的,當(dāng)使用到聚合的時(shí)候就會(huì)出現(xiàn)“發(fā)現(xiàn)外部聚合集”的錯(cuò)誤,原因是BIEE在導(dǎo)入essbase的時(shí)候,默認(rèn)將度量的聚合屬性設(shè)置為外部聚合。只要將外部聚合改為正確的度量即可,注意在物理層和邏輯層都要改,另外所有度量都要指定一種聚合方式,不能為none。
biee報(bào)表開發(fā)總結(jié)
(三)在answers中的開發(fā)難點(diǎn)就在于設(shè)計(jì),我在(一)中已經(jīng)介紹了經(jīng)驗(yàn)。但是顯然不可能一開始就設(shè)計(jì)得十分完美,有的時(shí)候會(huì)遇到功能實(shí)現(xiàn)不了或者效率太低,報(bào)表根本刷不出來,這時(shí)要么修改原先的設(shè)計(jì),要么想辦法解決問題。
關(guān)于如何提高效率,首先是優(yōu)化查詢。在BIEE當(dāng)中,有趣的一點(diǎn)是它首先根據(jù)你的設(shè)計(jì)生成一條SQL查詢語句,然后如果判斷出數(shù)據(jù)源是多維數(shù)據(jù)庫,則再將SQL語句在后臺(tái)轉(zhuǎn)化為MDX語句去執(zhí)行。轉(zhuǎn)化的邏輯大致是,select子句中放查詢目標(biāo)集(對(duì)應(yīng)于MDX中的select字句,但是沒有行列之分),from字句中放cube,where字句中定義如何進(jìn)行切片。所以在設(shè)計(jì)時(shí)盡量控制請(qǐng)求字段(對(duì)應(yīng)select字句)中的維度字段,不需要的維度不要添加,尤其是大維度,而篩選器(對(duì)應(yīng)where字句)則盡可能的多,這樣切片可以切得小一些。另外查詢的邏輯不要太復(fù)雜,不要使用嵌套查詢(篩選器不要使用“根據(jù)其他請(qǐng)求結(jié)果”)。如果這樣還不行,就只能優(yōu)化數(shù)據(jù)源了,對(duì)于essbase,可以考慮將一些復(fù)雜的動(dòng)態(tài)計(jì)算轉(zhuǎn)為預(yù)先計(jì)算后存儲(chǔ)(雖然這樣做很可能會(huì)導(dǎo)致占用的空間增長好幾倍...),可以大大提高效率。
在BIEE中表的樣式控制要比數(shù)據(jù)透視表靈活得多,基本的樣式都是可控的,所以能用表的時(shí)候就盡量用表。關(guān)于如何設(shè)置樣式,由于比較繁雜而且在(一)中也介紹了一些經(jīng)驗(yàn),所以這里就不一一介紹了,比較重要的就是條件樣式(只用表能用),可以靈活地控制顯示樣式,另外就是列的隱藏,可以控制哪些列在表中不顯示。
BIEE的訪問控制是比較靈活的,可以使用單獨(dú)的鏈接,也可以對(duì)標(biāo)題設(shè)鏈接,還可以對(duì)值設(shè)鏈接,并可以控制是否用于下鉆(在列的交互控制當(dāng)中設(shè)置搜索或鏈接)。BIEE最神奇的就是篩選器中的提示選項(xiàng),選了這個(gè)選項(xiàng)不僅可以使用提示中的選擇還可以用于鏈接的值傳遞。如果一個(gè)請(qǐng)求的字段的篩選器使用提示,則通過值鏈接被連接過來的時(shí)候,該字段就會(huì)被篩選為進(jìn)行鏈接的那個(gè)值。另外使用提示默認(rèn)是所有值,所以可以靈活的控制提示字段,比如同一個(gè)請(qǐng)求在不同地方使用時(shí),需要的查詢條件可能不同,這時(shí)可以通過請(qǐng)求提示來控制查詢條件,此時(shí)就必須將所有使用到的查詢條件字段加一個(gè)使用請(qǐng)求的篩選器。
不過在awnser中提示篩選器是不會(huì)被使用的,如果不使用篩選器就會(huì)導(dǎo)致查詢過慢的話,建議在設(shè)計(jì)報(bào)表時(shí)先指定一個(gè)篩選值,設(shè)計(jì)完成后再將篩選器的篩選方式改為請(qǐng)求。對(duì)于實(shí)在無法實(shí)現(xiàn)的功能,最后一條路就是修改saw腳本了,但是有關(guān)BIEE的saw腳本的文檔實(shí)在太少...不過通過查看saw腳本倒是可以分析出別人的報(bào)表的某些功能是怎么實(shí)現(xiàn)的。實(shí)施上saw腳本包含了一個(gè)請(qǐng)求的一切,包括顯示樣式和SQL查詢,所以如果要備份或者拷貝一個(gè)請(qǐng)求,最簡單的方法就是把saw腳本拷貝下來。如果你想直接修改SQL查詢語句,應(yīng)該先看一下SQL查詢語句的各個(gè)字句存儲(chǔ)在saw腳本中的什么位置,然后對(duì)saw腳本修改,如果直接改下面的SQL框,點(diǎn)了設(shè)置SQL的結(jié)果是,它產(chǎn)生一個(gè)最簡單的SQL語句(沒有任何附加內(nèi)容),而且把原來你的一切設(shè)置都重新初始化(要是你之前沒備份的化,趕緊退出重來吧,千萬不要保存了...)
另外介紹一些經(jīng)驗(yàn)。為了防止字段過多導(dǎo)致一格內(nèi)無法一行顯示,可以在格式化視圖的附加格式中指定一個(gè)很大的寬度,然后選擇單元格向左對(duì)齊。如果只想修改請(qǐng)求條件的化,最好不要直接雙擊進(jìn)入,而是先打開所在的文件夾,然后在面板中選擇修改條件,這樣可以避免一次不必要的查詢。查詢?nèi)绻惓V袛?,即使你在后臺(tái)取消了請(qǐng)求,甚至刪除會(huì)話,essbase仍然會(huì)繼續(xù)執(zhí)行,如果你想進(jìn)入同一個(gè)請(qǐng)求就會(huì)報(bào)錯(cuò),這時(shí)你能做的就是等待,等essbase執(zhí)行完畢才能繼續(xù)使用(這也是BIEE與essbase不兼容的一個(gè)表現(xiàn),它導(dǎo)致了BIEE的不穩(wěn)
定,所以要盡量避免沒有篩選控制的查詢)。
biee報(bào)表開發(fā)總結(jié)
(四)本文主要講biee中answers和dashboard的開發(fā)步驟。在administrator tool搭建好框架之后,接著通
過在瀏覽器中操作的answers和dashboard開發(fā)最后的報(bào)表顯示。
首先要做的是添加全局篩選器。對(duì)每一個(gè)維度都設(shè)定一個(gè)全局篩選器,每個(gè)層次都設(shè)定為請(qǐng)求。
接著開發(fā)請(qǐng)求。按請(qǐng)求在報(bào)表中的使用順序一個(gè)一個(gè)開發(fā)請(qǐng)求。先選擇合適的請(qǐng)求字段,再添加全局
篩選器,接著添加測試篩選條件(因?yàn)槿趾Y選器中的篩選條件都是請(qǐng)求,所以不會(huì)在answers中發(fā)揮作
用,所以不會(huì)和測試篩選條件沖突),然后在表中查看結(jié)果,如果要用表顯示則調(diào)整字段的順序。如果不
報(bào)錯(cuò)且數(shù)據(jù)無誤,則返回請(qǐng)求條件面板,添加一些需要計(jì)算的字段(這些字段可以通過加入一個(gè)原始字段
然后用編輯公式輸入計(jì)算表達(dá)式產(chǎn)生),設(shè)置標(biāo)題和值的樣式,并添加篩選器。然后在結(jié)果面板中開發(fā)需
要用到的數(shù)據(jù)透視表或圖表,同樣需要設(shè)置字段順序和顯示樣式和一些其他小功能(比如計(jì)算和排序)。
然后在組合布局中調(diào)整布局,并調(diào)整格式化視圖中的值。最后回到條件面板,在列格式中設(shè)置交互即鏈接
(建議不要現(xiàn)在做,因?yàn)殒溄幼詈面溄拥絻x表盤,不過如果鏈接的內(nèi)容很簡單也可以這里做)。
然后開發(fā)提示。提示要考慮到所有可能的篩選,提示可以盡量多(就像篩選要盡量多),但是必須要
關(guān)聯(lián)到篩選器。提示的輸入方式很重要,必須要根據(jù)實(shí)際需求精心設(shè)計(jì)。提示之間有關(guān)聯(lián)的要勾選約束,這樣可以限制提示的內(nèi)容。但是biee的約束很惡心,你不能限定某幾個(gè)提示有約束,一旦勾選了約束,就
會(huì)和所有約束關(guān)聯(lián),也就是說如果其他任何一個(gè)提示被輸入錯(cuò)誤的值,它就會(huì)報(bào)錯(cuò)。對(duì)提示進(jìn)行分組以防
止一行中提示太多。提示設(shè)計(jì)完成后一定要預(yù)覽一下,看看效果如何,尤其是約束關(guān)系。這時(shí)可以將所有的測試篩選器刪除了。
然后就可以再dashboard上開發(fā)了。首先建一個(gè)儀表盤,然后添加提示和請(qǐng)求,不同的請(qǐng)求放在不同的部分,但是因?yàn)椴糠种荒艽怪迸帕?,所以如果要水平排列則必須放在同一個(gè)部分,并設(shè)置排列方式為水
平排列,排版的時(shí)候要注意,各部分的附加格式的寬度必須一致,否則會(huì)出現(xiàn)排版錯(cuò)誤。最后就是甚至權(quán)限了,這個(gè)很簡單,這里不介紹了。
整個(gè)開發(fā)過程當(dāng)然不可能按上面的步驟一帆風(fēng)順地做下來,在開發(fā)過程中經(jīng)常會(huì)遇到需求變更和一些
意外的結(jié)果,所以整個(gè)開發(fā)過程應(yīng)該是一個(gè)循環(huán)迭代的過程,不斷地完善,最后使得開發(fā)出
來的報(bào)表十分
好用而且能夠從各方面反映這個(gè)報(bào)表應(yīng)該反映的內(nèi)容。
第五篇:報(bào)表的學(xué)習(xí)總結(jié)
關(guān)于ActiveReports for.NET 3.0 Setup NET 的一些總結(jié):
1:2010上不能建立該報(bào)表文件,需要在2008上建好后,復(fù)制到2010上用;
2:不存在計(jì)算列時(shí),點(diǎn)擊detial,將該報(bào)表需要連接的數(shù)據(jù)庫的,連接字符串和執(zhí)行的語句在顯示的窗口上寫入,要看清楚所要進(jìn)行操作的數(shù)據(jù)庫是那種類型的;
3:然后,在相應(yīng)的文本框上設(shè)置氣屬性:dataFile屬性,設(shè)置其對(duì)應(yīng)的字段,4:當(dāng)需要計(jì)算某列的總值時(shí),需要在設(shè)計(jì)代碼界面 將下面的代碼寫在相應(yīng)的位置,然在設(shè)計(jì)視圖界面在gfOrderID的框架里面對(duì)相應(yīng)的textbox的屬性進(jìn)行相應(yīng)的操作
//==========
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:當(dāng)SQL語句的列不能滿足需求時(shí),需要在現(xiàn)有的基礎(chǔ)上添加某列時(shí),找到報(bào)表的DataInitialize 事件中添加某列值對(duì)應(yīng)的字段名稱
this.Fields.Add(“列名”);
就添加了一個(gè)新列
在報(bào)表的FetchData
事件中對(duì)該列進(jìn)行賦值
得到SQL語句產(chǎn)生的某列的值
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:
對(duì)新列進(jìn)行賦值
this.Fields[“TotalMoney”].Value = zmoney * kmoney;
在報(bào)表的設(shè)計(jì)界面對(duì)控件進(jìn)行綁定相應(yīng)的字段,這樣就完成了相應(yīng)數(shù)據(jù)的綁定
6:當(dāng)列是動(dòng)態(tài)列時(shí),我們首先要要訪問數(shù)據(jù)庫,得到相應(yīng)動(dòng)態(tài)列的列名,在ReportStart 事件中設(shè)計(jì)需要顯示的動(dòng)態(tài)數(shù)據(jù)綁定相應(yīng)控件的設(shè)置,這樣就完成動(dòng)態(tài)數(shù)據(jù)的綁定
或者根據(jù)規(guī)定的規(guī)則根據(jù)列名來判斷該字段是否是動(dòng)態(tài)列,進(jìn)而來設(shè)置動(dòng)態(tài)列,詳細(xì)的設(shè)置代碼自己可以查找,或者對(duì)應(yīng)下面的代碼
#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 = “l(fā)b” + 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 各門店詳細(xì)數(shù)據(jù)
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:子報(bào)表的設(shè)置
在主報(bào)表Detail設(shè)計(jì)框中拖入subReport控件,在代碼界面申明對(duì)應(yīng)的子報(bào)表,然后實(shí)例化,并賦值為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;(主報(bào)表和自報(bào)表關(guān)聯(lián)的字段對(duì)應(yīng)的控件)
子報(bào)表中傳遞的參數(shù)(從主報(bào)表中)的寫法是cast('<%Eat_Text|Enter Eat_Text|1|S%>' as varchar(300))
將字段替換成相應(yīng)的字段就可以了