版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
如何集成e 將e表和用戶自己的系統(tǒng)集成在一 使用e表,數(shù)據庫為sqlserver 使用e表forjava,數(shù)據庫為 系統(tǒng)文件說 前臺文 文 E表系統(tǒng)文件中的配置信息說 fcpub.js文件中的配置信息說 fcconfig.xml文件中的配置信息說 數(shù)據庫表結構說 FC_ENTITY表結 FC_ENTITYSUB表結 FC_EBDS表結 數(shù)據庫連接的集 e表版數(shù)據源的配 E表forJ2ee版數(shù)據源的配 常用數(shù)據 運行報 在運行報表時動態(tài)指定數(shù)據 在運行報表時控制權 配置運行報表的在iframe中運行報 修改報 接口開 從運行報表上保存報表的運算結 調用Sqlserver庫的過 在sqlserver庫中做好如下的過 用過程來定義報表的數(shù)據 用call函數(shù)來調用過 調用Oracle庫的過 在oracle庫中做好如下的過 用過程來定義報表的數(shù)據 用call函數(shù)來調用過 用自己的代碼來生成報表運行結果文 在.net中調 在java中調 如何集e將e表和用戶自己的系統(tǒng)集成在一,數(shù)據庫為sqlserversqlserversqlserver中建好用戶要開發(fā)的數(shù)據庫,并安裝好e表,假如按默認安裝到 下 的.net工程,假如此工程在C:\Inetpub\wwwroot\ 將C:\Inetpub\wwwroot\ebiao\ebsys這個 到C:\Inetpub\wwwroot\ 把C:\Inetpub\wwwroot\ebiao\bin\中的所有文件到 <?xmlversion="1.0"encoding="utf-<dsname="eformsqloledb"type="oledb"connStr="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=efdemo;UserID=sa;Password=;"/><dsname="eformsql"type="sqlclient"connStr="DataSource=localhost;InitialCatalog=eformtest;UserId=sa;Password=;"/><dsname="ebsql"type="oledb"connStr="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=ebtest;UserID=sa;Password=;"/><dsname="ebsqljava"type="jdbc"jdbcDriver="com.newatlanta.jturbo.driver.Driver"jdbcUrl="jdbc:JTurbo://localhost/ebtest/charset=GBK"user="sa"password=""/><dsname="eboracle"type="jdbc"jdbcUrl="jdbc:oracle:thin:@localhost:1521:sys"user="eboracle"<pubparam>用戶.ID,用戶.名稱,部門.ID,部門.名稱,系統(tǒng).單位名稱XML格式的文件,其中<datasources>節(jié)點的內容為所有數(shù)據庫連接的配置,在SQL-SERVER查詢分析器編輯框內執(zhí)行:use ,從而進入數(shù)據庫名為:操作。點擊圖標,解壓databasebak.rar文件,打開其中的sqlserver.sql文件,點圖標,SQLServere省略不做,因為e表不要求必須要有e表的系統(tǒng)表。這樣用e表開發(fā)用戶自己的數(shù)據庫要用的報表的開發(fā)環(huán)境配置好了.執(zhí)行就可以進入eforjava,數(shù)據庫安裝好oracle9i,并解壓安裝好e表forj2ee,假如安裝到下修改web-inf/fcconfig.xml文件,eforj2ee的數(shù)據庫連接串保存在此文件中,此文件的內<?xmlversion="1.0"encoding="utf-<dsname="fhjtest"type="jdbc"jdbcDriver="com.newatlanta.jturbo.driver.Driver"jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK"user="sa"password=""/><dsname="efdemo"type="jdbc"jdbcDriver="oracle.jdbc.driver.OracleDriver"jdbcUrl="jdbc:oracle:thin:@localhost:1521:mysys"user="efdemo"password="efdemo"/><dsname="fcsamples"type="jdbc"jdbcDriver="oracle.jdbc.driver.OracleDriver"jdbcUrl="jdbc:oracle:thin:@localhost:1521:mysys"user="fcsamples"password="fcsamples"/><dsname="ebjndi"type="jndi"jndiName="jdbc/ebjndi" p/env"<dsname="eboracle"type="jdbc"jdbcDriver="oracle.jdbc.driver.OracleDriver"jdbcUrl="jdbc:oracle:thin:@localhost:1521:mysys"user="eboracle"password="eboracle"/><dsname="ebsql"type="jdbc"jdbcDriver="com.newatlanta.jturbo.driver.Driver"jdbcUrl="jdbc:JTurbo://localhost/ebtest/charset=GBK"user="sa"password=""/><dsname="eformsql"type="jdbc"jdbcDriver="com.newatlanta.jturbo.driver.Driver"jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK"user="sa"password=""/><dsname="eformoracle"type="jdbc"jdbcDriver="oracle.jdbc.driver.OracleDriver"jdbcUrl="jdbc:oracle:thin:@localhost:1521:sys"user="eformtest"password="eformtest"/><pubparam>用戶.ID,用戶.名稱,部門.ID,部門.名稱,系統(tǒng).單位名稱XML格式的文件,其中<datasources>節(jié)點的內容為所有數(shù)據庫連接的配置,解壓databasebak.rar文件,打開其中的oracle.sql文件,將其內容在PL/SQL軟件中執(zhí)行,以生成e表平臺上所用的系統(tǒng)表。這一步也可以省略不做,因為e表不要求必須要有e表的系統(tǒng)表。這樣用e表forj2ee開發(fā)用戶自己的數(shù)據庫要用的報表的開發(fā)環(huán)境就配置好了.執(zhí)行就可以進系統(tǒng)文件說e表系統(tǒng)文件分為前臺文件和文件。前臺文件是指htmjscssxml等文件。后dlljar包。Eforjavaefornet版的前臺文件是一樣的。但文件不一樣。前臺文件上圖是e表前臺文件的界面圖,它都在ebsys 下。其中ebsys/eformaspx/ 是e表版的文件。在e表forjava版中不需要此 在 中 提供 是eform的文件,在其下 是eform的樣式文件,其中dj.css在樣式文件中比較重要,所有表單都它 Common有好多常用的頁面,如在運行表單時先打開djframe.htm的頁面。 csjsrequest.js這是用于當超的地址是到一個htm頁面,此時希望取URL的?后的以參數(shù)名稱=參數(shù)值格式的值時,就需要此JS,它是實現(xiàn)這樣的功能的。design.js表單設計器中要用到的fcbasecont.js基本控件(如radiocheckboxcombobox等)中要用到的一些函數(shù)。fcdataset.js數(shù)據集控件的一些常用函數(shù)。fcebiao.jslayout布局控件和ebiao控件的實現(xiàn)函數(shù)。fcgensql.jsSQL語句生成向導界面的實現(xiàn)函數(shù)。fcopendj.js打開表單用的函數(shù)fcother.jsfcpub.js全局JS,它是最常用的函數(shù),幾乎所有的頁面都會它fcrundj.js表單運行時會用到的函數(shù)。fcsavedj.js表單保存時會用到的函數(shù)。fcselfuse.jseform系統(tǒng)表單中會用到的函數(shù)。fcskins.js切換皮膚的函數(shù)。fctoolbar.js自定義表單設計器的的功能函數(shù)fctorun.js實現(xiàn)將表單的設計串轉換成運行串的功能,它在表單設計器中保存表單fcupload.js多附件上傳控件的實現(xiàn)函數(shù)。fcvalid.js數(shù)據驗證的實現(xiàn)函數(shù)。fcwebgrid.jsgrid控件的常用函數(shù)。htmlarea.jstable-operations.js在表單設計器中設計htmltable的實現(xiàn)函數(shù)。Ajax.js微軟JS框架。selectdate.js實現(xiàn)選擇日期。tabpane.jstab頁簽控件的實現(xiàn)函數(shù)。xtree.js樹控件的實現(xiàn)函數(shù)。 dataset.htc數(shù)據集控件的實現(xiàn)fc_code.htcdropdownlist控件的實現(xiàn)。NumEdit.htcspin控件的實現(xiàn)。webgrid.htcgrid控件的實現(xiàn)。 .htc 下是eform要用到的 常用來保存用戶自定義的頁面 form_開頭 是一些示例用的表單 保存的是用戶自定義的JS文件其中userfunc.js在默認時表單都會它可以將 文件如果是e表版就要用到bin,在 ebiao.dll是e表系統(tǒng)的程序。ebiaoext.dll是供用戶集成和擴展時寫的程序工程。WebBill.dll是當前工程生成的dll,即當前工程的.aspx.cs文件生成的dll.E表版的文件還有ebsys/eformaspx/下的文件,它只有一個WebBill.aspx,這是由前臺JS調用DLL文件編譯成WebBill.dll)來調用DLL文件中的方法。如果是e表forjava版,需要web-inf/下的fcconfig.xml文件和perties文件,perties文件是log4j的日志的配置文件。web-inf/lib下文件。其中ebiao.jar是eform運行的包。這個包中的根下是WebBill.class文件,這是一個servlet,前臺JS用AJAX方式.fcsoft.ajax這個包下是ajax.fcsoft.ajax.chart.fcsoft.report.cell.fcsoft.report.core.fcsoft.report.dataset.fcsoft.report.export.fcsoft.report.ext.fcsoft.util commons-fileupload-1.1.jarcommons-io-1.2.jar是用于上傳附件dom4j-1.6.1.jar和jaxen-1.1-beta-6.jardom4j用于分析xml的GUID-OpenTools.jar用于產生GUIDlog4j_128.jarlog4j日志ojdbc14.jaroracle庫的JDBC驅動sqlserver7jdbc.jaruna2000.jar這是兩個sqlserver庫的JDBCbarcode4j.jar md5 .jar讀寫excelitext_099.jar和 E表系統(tǒng)文件中的配置信息說JSebsys/fceform/js/fcpub.jsJS中要用到的信息。另一個是的XML文件,它配置程序中要用到的一些配置信息。如果是e表版這個文件是binweb-inffcconfig.xml文件。fcpub.js文件中的配置信息說var :"/ebsys/eformaspx", //調用文件的基路徑,for.NET的常用寫法是:/ebsys/eformaspx,eformforj2ee的常用寫法是:/servlet :"/ebsys", 徑,常用寫法是:/eformsys:://=""表示為java版本,=".aspx"為.net//數(shù)據庫類型://="FC_DBSTRU"="FC_FLDLIST"://在表單中加載的css文件,路徑在,一般寫://表單skin :"base", //設計器的樣式可設值為:actionButtonDisplay //控件屬性框中的設置權限按鈕的屬性值"none" :"DB2ADMIN", :"dj_sn", :"rightmain", :"absolute", //缺省的定位模式=absolute/static list,textarea,|,dbimg,upload",//表單設計器按鈕,|是分隔符,br是換行 :"<optionpath=\" </option><optionpath=\" mon/toolbarinput2.htm\">多表輸入</option><optionpath=\" mon/toolbarfind.htm\">查詢</option><option mon/toolbar.htm\">帶</option>",//配置用eform畫的表單的可用工具表示占的高度,如不指定,則取默認值為31px,節(jié)點值為名稱,在表單設計器的表單屬性窗 :":與連接出錯 //特定的連出錯信 :null,//eform的設計區(qū),是個div :"DsMain", :"null",//取得session的標識,這是為了用同步方式取session的方法,常用寫法是:autoAddField:"no" :""http://保存各子窗口的url,:""://原來的pubdjbh,用于主鍵字段的://原來的pubDataSet,://原來的pubEdit,://判斷能不能進入表單,為OK :newArray(),//保存校驗失敗的事件對象,用于在保存前再校驗. :newObject(), :window.createPopup()fcconfig.xml文件中的配置信息說<?xmlversion="1.0"encoding="utf-<datasources><dsname="eformsqloledb"type="oledb"connStr="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=efdemo;UserID=sa;Password=;"/><dsname="eformsql"type="sqlclient"connStr="DataSource=localhost;InitialCatalog=eformtest;UserId=sa;Password=;"/><dsname="ebsql"type="oledb"connStr="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=ebtest;UserID=sa;Password=;"/><dsname="ebsqljava"type="jdbc"jdbcDriver="com.newatlanta.jturbo.driver.Driver"jdbcUrl="jdbc:JTurbo://localhost/ebtest/charset=GBK"user="sa"password=""/><dsname="eboracle"type="jdbc"jdbcDriver="oracle.jdbc.driver.OracleDriver"jdbcUrl="jdbc:oracle:thin:@localhost:1521:sys"user="eboracle"password="eboracle"<fileroot>/ebsys</fileroot><pubparam>用戶.ID,用戶.名稱,部門.ID,部門.名稱,系統(tǒng).單位名稱</pubparam>數(shù)據庫表結構說FC_ENTITY表結構CREATETABLEFC_ENTITYorgidchar(11)tbnamevarchar(50)NOTNULL,//表名tbchnnamevarchar(50)NULL,owneridchar(11)NULL,keyPrefixchar(3)FC_ENTITYFC_ENTITYSUB表結構CREATETABLEFC_ENTITYSUBorgidchar(11)tbnamevarchar(50)NOTNULL,//表名fdnamevarchar(50)NOTNULL, chnnamevarchar(50) //字段中文fdtypechar(4)NULL,fdsizeintNULL,//字段長度fddecintNULL,//小數(shù)位數(shù)typechar(10)NULL,detailxmlvarchar(7000)NULL//詳細信息,XMLFC_ENTITYSUBFC_EBDS表結構CREATETABLEFC_EBDSnamevarchar(50)NOTNULL,sqlstrvarchar(2000)NULL,//SQLparamvarchar(2000)NULL,//參數(shù)信息fieldchnvarchar(2000)NULL,dsnvarchar(50)NULL,//數(shù)據源名稱dstypevarchar(12)NULLFC_EBDSECREATETABLEFC_REPORTFILEsNamevarchar(100)NOTNULL,userTypevarchar(50)NULL,//用戶自定的報表分類sTexttextNULL//報表的內容在的情況下,是可以不用建任何e表系統(tǒng)表的。即不用額外建任何表,e數(shù)據庫連接的集據源的配在 <?xmlversion="1.0"encoding="utf-<dsname="eformsqloledb" Catalog=eformtest;UserID=sa;Password=;"/><dsname="eformsql"type="sqlclient"connStr="DataSource=localhost;InitialCatalog=eformtest;UserId=sa;Password=;"/><dsname="ebsql" Catalog=ebtest;UserID=sa;Password=;"/>這是一個XML的配置文件,其中的datasources節(jié)點用于配置數(shù)據源,一般是把可能用到的dsds
// // connStr="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=eformtest;User 動態(tài)數(shù)據源的配當數(shù)據源名稱為:fcDsnTemp時,表示此時數(shù)據庫連接可以由代碼動態(tài)產生。如果需要將fcDsnTemp這個名稱改名的話,可以通過修改ebiaoext項目下ConfigFix類中的如下publicstaticstringdatasourceNameTemp"fcDsnTemp";ebiaoext項目下GetDbConnectionpublicstaticDBOperatorgetDBOperator(){EforJ2ee據源的配 <?xmlversion="1.0"encoding="utf-<dsname="ebjndi"type="jndi"jndiName="jdbc/ebjndi" p/env"<dsname="fhjtest" jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK"user="sa"password=""/>這是一個XML的配置文件,其中的datasources節(jié)點用于配置數(shù)據源,一般是把可能用到的dsdsname="fhjtest" // p/env表示查找數(shù)據源時的環(huán)境串前綴,在不同的WEB服務器中不同,如中是p/env,而Weblogic和Websphere中均不需要,可以不 jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK"http://URL 如果type=fcpool則表示使用e表自身的數(shù)據庫連接池此時數(shù)據庫連接信息的配置在webapps\eform\web-inf\classes\perties文件中動態(tài)數(shù)據源的配 當數(shù)據源名稱為:fcDsnTemp時,表示此時數(shù)據庫連接可以由代碼動態(tài)產生。如果需fcDsnTemp這個名稱改名的話,可以通過修改.fcsoft.report.ext.ConfigFix類中publicstaticStringdatasourceNameTemp"fcDsnTemp";//動態(tài)的數(shù)據源名稱,當數(shù) publicstaticConnectiongetConnection()throwsException中。加上語義層顯示字段中文SQLtbnamevarchar(50)NOTNULL,tbchnnamevarchar(50)NULLtbnamevarchar(50)NOTNULL,fdnamevarchar(50)NOTNULL,chnnamevarchar(50)NULL)fc_entity(tbname字段和表中文名稱(tbchnname字段,fc_entitysub表用于保存字段中文名稱,表名稱(tbname字段),字段名稱(fdname字段),字段中文名稱(chnname字段。ebsys/fceform/js/fcpub.js5 : :SQL語句向導界面中便會自動列出這兩個表常用數(shù)據作只需要在開始使用時做一次就可以了.SQL語句是:CREATETABLEFC_EBDSnamevarchar(50) NOTNULL,sqlstrvarchar(2000) NULL,paramvarchar(2000) NULL,fieldchnvarchar(2000) NULL,dsnvarchar(50) NULL,dstypevarchar )存為常用數(shù)據集按鈕,這樣以后在別的報表中再需要此數(shù)據集時,便不用從頭來設置,可以選運行報IE(注意:這個路徑一般是對于e表for.NET版而言的,對于e表forJ2EE版而言,往往需 , ,下同testURLurlpara=yes表示不會出現(xiàn)報表參數(shù)的輸入界面。startdate=2005-02-01startdate2005-02-01URL中未給值的報表參URL&e_runsavefile=a1則表示運行報表時會在服務器端將當前報表的運行結果保存為文件,主文件名為a1,具體是當報表結果分多頁時,文件名為的fcpub.tempFilePath。URL&宏變量名=URL&e_pageno=2表示直接顯示報表結果中的第二頁的內容,1開始的整數(shù),但當&e_pageno=-1表示將分頁前的整個報表運算結果顯示用&e_pageno=-1來運行報表,一般用只需要顯示報表運行結果的場合,因為是不在運行報表時動態(tài)指定數(shù)據URL后面加上&urldatasource=值的方式來實現(xiàn)。這個值的格式是: //default表示要打開默認的數(shù)據庫連url=\"DataSource=localhost;InitialCatalog=ebtest\"dsURLjavascriptescape后才行。URL后加上:在運行報表時控制權在運行報表時常常需要控制權限,比如運行A報表,則不能運行A報表。e表中實現(xiàn)此功能是通過在ebsys/fceformext/js/userfunc.js中的*functionURLname=報表名稱的方式,則在此函數(shù)中session變量來取得當前用戶信息。再判斷能不能正常運行報表,如最后運callback(true);//執(zhí)行此命令表示能正常運行報表.callback(false);//通知關閉窗口GetSession("username",function(arrRet){varsessionValue=arrRet["username"];if(sessionValue=="liuxm"&&parent.Request.QueryString("name").toStringcallback(false);}配置運行報表運行報表的可以通過ebsys/fceform/ereport/js/loadreport.js中的fcpub.toolbar變運行報表的的樣式可以通過ebsys/fceform/ereport/js/loadreport.js中的fcpub.toolbarstyleURL后加上&tbcss=red之類的方式來指定的樣式。共有:red,yellow,light,Office,blue,green,white,CoolBlue等樣式名ebsys/fceformext/js/userfunc.js*function函數(shù)中寫代碼來實現(xiàn)根據不同的操作員的權限來顯示不同的運行報表的按鈕即實現(xiàn)比如操作員為時不能有導出excel的功能。sessionfcpub.toolbar全局變量賦值,以控制運行報表的上出哪些按鈕。iframe中運行報ebsys/ebsamples/iframerun.htmhtm文件中<iframeid=iframe1src="../fceform/ereport/ebrun.htm?name=samples/s_數(shù)據集函數(shù)"width=0height=0></iframe>iframewidthheight0,否則的話可以根據需要widthheight值。然后在頁面中加一個按鈕:<buttononclick="uf_test()">打印JSfunction//要調用運行報表的函數(shù),可以用如下方式//其中,Print(4)為運行報表窗口的全局的js函數(shù).}也可以做其它的工作,比如導出PDF文件等等。運行報表窗口提供的js函數(shù)有MovePage(1)上一頁MovePage(2)上一頁MovePage(3)第一頁MovePage(4)最后一頁Print(1)打印預覽Print(2)打印Print(3)Print(4)SaveasExcel(true)excel文件中SaveasExcel(false)excel文件中SaveasPdf()pdf文件中實際上也就是上提供的功能函數(shù)修改報IE來直接在報表設計器中打開此報表來修改,其中s_simplelist為報表文件名,samples/為它批量打印報ebsys/ebsamples/batchPrint.htm文functionuf_start()vararr=newArray();arr[0]fcpub.rootPath+"samples/s_simplelist.htm";arr[1]=fcpub.rootPath+"samples/s_cross0.htm";arr[2]=fcpub.rootPath+"samples/s_報表區(qū)域.htm"; //組織要打印配置的XMLvarsb=newSys.StringBuilder("<filenames>");for(vari=0;i<arr.length;i++){sb.append("<fn><in>"+arr[i]+}varsPaths=><orderpageno>no</orderpageno></paths>";//fromdb=yes表示報表文件保存在數(shù)據庫中=yesvarsXml=}接口開將報表格式文件保存到數(shù)據庫e表名:e_reportfilesName notnullsTexttextsName保存報表名,sText勾上[從數(shù)據庫中讀寫報表格式文件],然后按確定e_reportfile自定義數(shù)據數(shù)據集的內容一般來說都是來自于一個SQL語句或過程的運行結果,但有時可能s_自定義數(shù)據集.htm為例來說明。s_自定義數(shù)據集.htm文件,進入數(shù)據集的[詳細屬性]數(shù)據集報表文件在同一 下。要想運行此表,應修改xmlfile后的路徑值,讓它正確地找到userds.xml文件。efor.Net版本中的做法是ebiaoextDesignReportEvent.cs///<paramname="prop">設置自定義數(shù)據集時定義的參數(shù)///<paramname="colNameList">字段名列表///<paramname="dataList">整個數(shù)據集的數(shù)據publicstaticvoidUserDefineDataSet(System.Collections.Hashtableprop,outSystem.Collections.ArrayListcolNameList,outSystem.Collections.ArrayListdataList)prop =="C:/Inetpub/wwwroot/WebBill/userds.xml"eforJ2EE版本中的做法是 .fcsoft.report.ext包下有一個UserDs.java的示例文件中定義如下函數(shù)/////////<paramname="prop">設置自定義數(shù)據集時定義的參數(shù)///<paramname="colNameList">返回字段名列表///<paramname="dataList">返回整個數(shù)據集的數(shù)據publicstaticvoidUserDefineDataSet(Hashtable prop,ArrayListcolNameList,ArrayListprop 和xmlfile, =="C:/Inetpub/wwwroot/WebBill/userds.xml"在這個函數(shù)中輸出colNameList(字段名列表)和dataList(整個數(shù)據集的數(shù)據),這兩個都是ArrayListdataList的每個元素的內容是Object[]。colNameList,dataListxmlfilexml文件來得到數(shù)據集。用戶在自定義數(shù)據集定期運行報表的實e表內部提供了函數(shù)來實現(xiàn)成批的運行報表,并將報表結果保存為文件(html,xls,pdf等 <config>econfig文件的路徑 <exptype>htm/xls/xlt/pdf/*</exptype生成文件的類型,為* 名<genname>生成后的文件名(jstxtXml.value為輸入參數(shù)值,運行后的輸出參數(shù)也返回到txtXml.value中。SendHttp(tocol+"http://"+location.host+fcpubdata.servletPath+functionvarsRet=result.value;txtXml.value=sRet;} 裝入已存好的報表結果頁一般是先用上節(jié)的方式,成批的運行報表,并將報表結果保存為文件(html,xls,pdfebsys\ebexpfile\下。且文件名,ebBill,ebsys,ebfile,samples,s_simplelist.xlsWebBill中當前虛擬的名稱。替換為htm文件時,應為:,WebBill,ebsys,ebfile,samples,s_simplelist_1.htm格式,主文件名加上_1表示第一頁的內IE 在其中點擊鼠標右鍵,點屬性,可以看出是直接到在這個報表運行上點導出到Excel文件和導出為pdf文件時也將是直接調用以前生成Excelpdf文件。要點:URL中加上&e_directrun=yes表示直接打開已經生成好的報表結果文件。URL中加上&e_pages=22,一般的流程是在生成報表XML信息中含有報表的總頁數(shù),用戶可以用程序將這報表的總頁數(shù)先xml文件中,也可以保存到數(shù)據庫的表中。然后在裝入已存好的&e_pages=2URL運行報表串URL中有&e_pages=2必須在有&e_directrun=yes時才起作用。含參數(shù)的報表的運算結果保URL&e_runsavefile=testsave則表示會將本次報表的運行結果保存為文件(含多頁的每個htm文件,兩個excel文件,pdf文件一般會01件(注意:testsave是主文件名)是日期為:2007-08-01時的報表運行結果文件。它默認情ebsys\ebtmpfile\下。iframe中運行,而且需要利用報HandleAfterInitReport函數(shù)名是固定名稱,是在運行報表結束后就會調用此函數(shù)oRet現(xiàn)有oRet.pagesfunction成批保存報表結果的示例詳見:\ebsys\ebsamples\iframesave.htmurle_directrun=主文件名,ebsys\ebtmpfile\下保存當前報表結果的文件。比如在\ebsys\ebtmpfile\下保存了幾個testsave的文件。它是samples\s_simplelistIE的地址欄上寫: 限。然后在fceformext/js/userfunc.js文件的functionEbiaoEnterStatus(callback)的開始處加if(parent.Request.QueryString("e_runsavefile").toString()!="undefined"||(parent.Request.QueryString("e_directrun").toString()!="undefined"&&parent.Request.QueryString("e_directrun").toString()!="yes")){fcpub.tempFilePath=GetUrlFirstPart()+}其意思是在運行報表前調整全局變量fcpub.tempFilePath的值到你的子 了。if(parent.Request.QueryString("e_runsavefile").toString()!="undefined"||(parent.Request.QueryString("e_directrun").toString()!="undefined"&&parent.Request.QueryString("e_directrun").toString()!="yes")){這個條件判斷可以根據自己的從運行報表上保存報表的運算結本節(jié)介紹如何實現(xiàn)在運行報表上加一個保存按鈕,點此按鈕后將運算結果保存為文修改ebsys/fceform/ereport/js/loadreport.jsfcpub.toolbar變量的值,由:即在運行上加上了一個保存按鈕ebsys/fceformext/js/userfunc.jsEbiaoSaveEvent()函數(shù),*從上點保存按鈕時執(zhí)行此函數(shù),它用保存當前報表運行結果functionEbiaoSaveEvent()varsaveFileName="curSave";//要保存的主文件名RunReport(1,"保存",saveFileName,function(result){varTotalPages=result.pagesvarsRetValueresult.valuexml字符串.varsReportFile=parent.sPubPath;//本次運行的報表文件.}在此函數(shù)中,執(zhí)行RunReport(1,"保存",saveFileName,function(result){});時會調用程序來function(result){varTotalPages=result.pagesvarsRetValueresult.valuexml字符串.varsReportFile=parent.sPubPath;//本次運行的報表文件.}在此函數(shù)中可以取到返回的信息,這些信息可以保存起來供后面使用保存報表結果文件時注yes&e_directrun=yes表示固定undefined般這個超的地址是用相對路徑來到ebsys\fceform\ereport\ebrun.htm的.而要保證一../../fceform/ereport/ebrun.htm能找到ebrun.htm文件如何實現(xiàn)在運行報表時調整統(tǒng)計圖功ebfile/samples/動態(tài)統(tǒng)計圖.htm這個報表是實現(xiàn)在運行報表時調整統(tǒng)計圖功能的,它主要B5=${macro1},動 圖 為chart("title=xx示例&xlabel=c3&titlefont=隸書,16pt,0&titlecolor=#0000ff&xtitlefont=宋 體,12pt,0&xlabelcolor=#0000ff&is3d=1&islegend=1&s10_name= 合同利用js的escape函數(shù)轉碼后的值,轉碼的目的是怕URL中數(shù)據實現(xiàn)自定義函數(shù)功數(shù)功能的大致步驟為:由用戶自行編寫程序,實現(xiàn)其publicvoidcalculate()方法,通 下的ebcustomfunc.xml中后,能如e表內置的函數(shù)一樣可以直接在報表文件中使用其的函數(shù)名。<?xmlversion="1.0"encoding="GB2312"<funcname="upper1"class="LoadEbiao.Upper1"type="1"<funcname="sum1"class="LoadEbiao.DSSum1"type="2"<funcname="取出" .fcsoft.report.core.function.DSGet"type="4"”對于e表for.NET版來說,通過在工程LoadEbiao中增加的函數(shù)代碼,代碼的法可以參照示例中的方式編譯生成dll文件后將LoadEbiao.dll到系統(tǒng)的 下eforJ2EEeUpperjava文件,放在相應的包下。Upper.java的代碼如下: publicclassUpperextends{public{}publicObject{if(paramList.size()==thrownewReportError("upper函數(shù)參數(shù)為空");ExpParseparam1=(ExpParse)paramList.get(0);if(result1==null)returnresult1;if(!(result1instanceofString)){thrownewReportError("upper1應為字符串}{Stringstr=(String)result1;returnstr.toUpperCase();}}}e改短(groupG等等。象<funcname="取出" .fcsoft.report.core.function.DSGet"type="4"就是將系統(tǒng)內的get”取出”getefor.NETyp=””4”e表forvatype=””表示為常規(guī)函數(shù),type=2”<funcname="取出" .fcsoft.report.core.function.DSGet"type="2"報表運行時改變參數(shù)或宏的事增加報表的宏定義。在e表中通過寫的IParamMacro事件代碼來實現(xiàn)。對于efor.NETLoadEbiaoIparamMacro.cs文件的代碼,代碼的寫法可以參照示例中的方式編譯生成dll文件后將LoadEbiao.dll到系統(tǒng)的改變參數(shù)的/////////<paramname="env">當前報表運行環(huán)境///<returns>無publicvirtualvoidsetParams(Env{stringsParamTag=env.Request["e_setparammacro"];stringparamName="arg1"if(env.isParamName(paramName))env.putParam(paramName,"StringMapparamsMap=newStringMap(1); ra"]="newvalue";}改變宏的事/////////<paramname="env">當前報表運行環(huán)境///<returns>無publicvirtualvoidsetMacros(Env{stringsParamTag=env.Request["e_setparammacro"];stringmacroName="macro1"if(env.isMacroName(macroName))env.putMacro(macroName,"StringMapmacrosMap=newStringMap(1);macrosMap["newmacro"]="newvalue";}在此處寫了事件代碼并編譯LoadEbiao.dll,到系統(tǒng)的bin后。按常規(guī)方式運行報表時并不會調用到此處的事件代碼,只有在運行報表的URL的后加上了&e_setparammacro=yes后才會調用此處寫的事件代碼。&e_setparammacro=yesyes也可以用其它的非空值代替。也就是說只要&e_setparammacro非空才能調用事件代碼。因為stringsParamTag=env.Request["e_setparammacro"];來區(qū)分了。env.Request["e_setparammacro"]&e_setparammacro=yesyes這個值。比三類報表參數(shù)的處理方式:type1,type2,type3;則事件代碼為:stringsParamTagenv.Request["e_setparammacro"];if(sParamTag.equals(“type1”)){}if(sParamTag.equals(“type2”))}if(sParamTag.equals(“type3”))}在運行報表時要調用第一種報表參數(shù)的處理方式就加上:&e_setparammacro=type1,要調用第二種報表參數(shù)的處理方式就加上:&e_setparammacro=type2,以此類推。arg1=1arg1=2,則最終是按報表參arg1=2來運算報表的。eforJava.fcsoft.report.extsetMacros(Envenv)方法用于設置宏值。用戶可以修改這部分代碼后,編譯運行即可。報表運行時改變數(shù)據集配置的事通過寫的IDataSet事件代碼來實現(xiàn)。efor.NETLoadEbiaoIDataSet.cs文件的代碼,代碼的寫法可以參照示例中的方式。編譯生成dll文件后,將LoadEbiao.dll到系統(tǒng)的改變數(shù)據集配置的事/////////<paramname="env">當前報表運行環(huán)境///<paramname="dss">原始的數(shù)據集配置信息///<returns>處理后的數(shù)據集配置信息publicvirtualGetDataSetssetDataSetConfigs(Envenv,GetDataSets{stringsParamTag=env.Request["e_setdataset"];DataSetConfigdsc=dss.get_Renamed("ds1");dsc.SQL"select*frome_group";sql語句dss.put(dsc);//將修改后的dataset加回DataSetConfignewdsc=newDataSetConfig();newdsc.Name="ds2";//數(shù)據集名稱,必須指定newdsc.SQL"select*frome_groupwheresdw=?";newdsc.addSQLArgument("公司",ArgDataType.STRING);//設置參數(shù)的值return}在此處寫了事件代碼并編譯LoadEbiao.dll,到系統(tǒng)的bin后。按常規(guī)方式運行報表時并不會調用到此處的事件代碼,只有在運行報表的URL的后加上了&e_setdataset=yes&e_setdataset=yesyes也可以用其它&e_setdatasetstringsParamTag=env.Request["e_setdataset"];來區(qū)分了。env.Request["e_setdataset"]&e_setdataset=yesyes這個值。比stringsParamTagenv.Request["e_setdataset"];if(sParamTag.equals(“type1”)){}if(sParamTag.equals(“type2”))}if(sParamTag.equals(“type3”))}在運行報表時要調用第一種改變數(shù)據集配置的處理方式就加上:&e_setdataset=type1,要調用第二種改變數(shù)據集配置的處理方式就加上:&e_setdataset=type2,以此類推。eforJava.fcsoft.report.ext下的SetInRunReport.Java文件中。其中有publicGetDataSetssetDataSetConfigs(Env調用Sqlserver庫的過調用過程的地方有兩處:1是在定義數(shù)據集時,選擇類型為過程。2是在應calldbcall函數(shù)時。在sqlserver庫中做好如下的過selecttop3idfrom@Searchvarchar(100)exec('selectimoneyfrome_group'+@Search)@Searchvarchar(100) @retvarchar(1000)out--exec('selectimoneyfrome_group@Search)set@ret='值:'+@Search過程e_test是一個簡單的sql語句,過程e_testpara含有一個輸入參數(shù),過程用過程來定義報表的數(shù)據版來說,根據使用的數(shù)據庫連接對象的不同而設置不同:用OleDb方式來連接的話,應設置如下:SqlClient要注意此時必須要設置參數(shù)名稱Search,且參數(shù)名稱Search必須和過程eforJavaOleDb用call函數(shù)來調用過版來說,根據使用的數(shù)據庫連接對象的不同而設置不同:用OleDb方式來連接的話,應設置如下:單元格的表達式為:=call("e_testpara","wheresarea='表示調用過程:e_testpara,。第二個及以后的參數(shù)為過程的參數(shù)值數(shù)值為@@result時,表示此參數(shù)為輸出參數(shù)。默認時,輸出參數(shù)的類型為字符型,長度為SqlClient方式來連接的話,應設置如下單元格的表達式為:=call("e_testpara","search","wheresarea='表示調用過程:e_testpara,第二個參數(shù)為參數(shù)名列表,多個參數(shù)時用逗號分隔開參數(shù)名稱必須和過程e_testpara中定義的參數(shù)名稱一樣。第三個及以后的參數(shù)為過程隔開參數(shù)名稱,第三個及以后的參數(shù)為過程的參數(shù)值。當參數(shù)值為@@result時,表示callcall函數(shù)中的代碼:usingusingExpParse usingFunctionUnit= usingConvertTool= usingReportError= usingSQLTool= usingSystem.Data.OracleClient;usingSystem.Data.SqlClient;usingSystem.Data.OleDb;usingSystem.Data; {publicclass{public{}publicoverrideSystem.Object{{System.Data.IDbConnectioncn=if(cn==null||(cn.State==System.Data.ConnectionState.Closed))thrownewReportError("過程調用函數(shù)執(zhí)行異常,無有效數(shù)據庫連接");System.Stringencoding=env.getDBCharset();if(paramList.Count==0)thrownewReportError("過程調用函數(shù)參數(shù)列表為空");ExpParseparam1=(ExpParse)paramList[0];System.Objectresult1=ConvertTool.getValue(param1.calculate());System.Stringsql=null;if(result1issql=((System.String)thrownewReportError("過程調用函數(shù)參數(shù)1應為字符串");mandpst=SupportClass.TransactionManager.manager.PrepareCall(cn,String[]argNameList=null;intstartPos=1;if(pst mand||pst {startPos=2if(paramList.Count>1){ExpParseparam2=(ExpParse)paramList[1];System.Objectresult2=System.StringargNames=null;if(result2isSystem.String){argNames=((System.String)argNameList=argNames.Split(',');//參數(shù)名用逗號分開if(argNameList.LengthparamList.Count-startPos)thrownewReportError("call}{thrownewReportError("過程調用函數(shù)參數(shù)2}}}OracleParameteroraP=null;SqlParametersqlP=null;OleDbParameteroledbP=null;intrn=0;for(inti=startPos;i<paramList.Count;{ExpParseparam=(ExpParse)paramList[i];if(param==null)thrownewReportError("stringargNameif(startPos==2)argName=argNameList[i-startPos];System.Objectresult=ConvertTool.getValue(param.calculate());if(result!=null&&{if(pstis mand){//":"+Convert.ToString(
oraP=newOracleParameter();//oraP.ParameterName=argName;//"p_CURSOR";//oraP.OracleType=OracleType.Cursor;oraP.OracleType=OracleType.VarChar;oraP.Size=4000;oraP.Direction=System.Data.ParameterDirection.ReturnValue;//此處用}catch(Exceptione) thrownewReportError(System.String.Concat("過程調用參數(shù)異常:",e.Message.ToString().ToString()),e);}if(pstis mand){sqlP=newSqlParameter();//sqlP.ParameterName=argName;sqlP.Size=4000;sqlP.SqlDbType=sqlP.Direction=System.Data.ParameterDirection.Output;//此處要用}catch(Exception{ thrownewReportError(System.String.Concat("過程調用參數(shù)異常:",e.Message.ToString().ToString()),e);}if(pstis mand){oledbP=newOleDbParameter();//oledbP.Size=4000;oledbP.OleDbType=oledbP.Direction=System.Data.ParameterDirection.Output;//此處要用}catch(Exception{ thrownewReportError(System.String.Concat("過程調用參數(shù)異常:",e.Message.ToString().ToString()),e);}}{}}
if(rn==rn=SQLTool.setObject(pst,i-startPos+1,result,if(oraP!=null||
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)景點評級標準
- 手術中的電生理監(jiān)測
- 自制禮物課件教學課件
- 河南省2024九年級語文上冊第二單元8就英法聯(lián)軍遠征中國致巴特勒上尉的信課件新人教版
- 慢病調理中心介紹
- 消防演練總結講評
- 農業(yè)物聯(lián)網導論
- 感恩課件英文教學課件
- 玉米灰斑病病害循環(huán)
- 氣管切開燒傷病人的護理
- (完整版)譯林版四年級上冊Unit7單元測試
- 水上作業(yè)危險源辨識與技術控制措施
- 吊索具檢查記錄表
- 商務接待申請表
- 最新少先隊基礎知識競賽題庫(含答案)
- 衛(wèi)生院在全院實行工作日午間禁酒的規(guī)定
- 藍色卡通幼兒園關愛眼睛主題班會
- XX鎮(zhèn) 2022年度溫室大棚項目可研報告范本
- 各種能源排放因子
- 護士值班及交接班制度測試卷附答案
- 船體結構介紹課件
評論
0/150
提交評論