版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Presentedby:EricZheng,TechnologyConsulter
BICSoftware技術(shù)培訓TechnicalTraining培訓提綱水晶報表相關(guān)應用客戶化、.NET編程水晶報表水晶報表的安裝,設(shè)計。BAQ報表設(shè)計者的使用如何修改系統(tǒng)自帶報表。連接外部水晶報表客戶化調(diào)用水晶報表、.NET程序調(diào)用水晶報表??蛻艋?、.NET編程1、客戶化界面功能介紹。2、客戶化里使用VB.NET如何操作數(shù)據(jù)庫、調(diào)用水晶報表、調(diào)用外掛程序以及系統(tǒng)自定義表開發(fā)方法等。3、.NET編程操作數(shù)據(jù)庫;調(diào)用水晶報表等。4、外掛程序與系統(tǒng)結(jié)合的常用作法。EPICOR系統(tǒng)有大量專業(yè)水晶報表供使用,并提供了水晶報表的開發(fā)環(huán)境,有專項功能與之銜接(BAQ報表設(shè)計者)。對于水晶報表的使用,有以下幾點。
水晶報表①、ODBC為數(shù)據(jù)源連接。操作步驟:新建報表→標準報表創(chuàng)建向?qū)А鷦?chuàng)建新連接→ODBC一、水晶報表數(shù)據(jù)源點擊ODBC節(jié)點后出現(xiàn)如下圖所示,選擇建立好的ODBC數(shù)據(jù)源。點擊NEXT。輸入用戶ID,密碼,點擊Finish。進入數(shù)據(jù)庫專家界面,如下圖。點擊添加命令。出現(xiàn)輸入SQL語句界面,輸入SQL語句,點擊確定?;氐綌?shù)據(jù)庫專家界面,點擊OK,至此完成數(shù)據(jù)源的設(shè)置。下圖為設(shè)置好數(shù)據(jù)源后的水晶報表設(shè)計界面。將字段插入水晶報表中,點擊預覽可看到報表效果。②、A(xml)為數(shù)據(jù)源。 Epicor系統(tǒng)中BAQ報表設(shè)計者使用的就是此種方式。首先生成XML文件,再建立水晶報表以之作為數(shù)據(jù)源。
操作步驟:新建報表→標準報表創(chuàng)建向?qū)А鷦?chuàng)建新連接→ADO.NET(XML)。雙擊進入如下界面,輸入XML文件路徑。點擊完成→標準報表創(chuàng)建向?qū)Аx中如下右圖所示a,選至右邊選定的表一欄。點擊完成結(jié)束數(shù)據(jù)源設(shè)置。下圖為設(shè)置好數(shù)據(jù)源后的水晶報表設(shè)計界面。插入字段到報表,點擊預覽可看到報表效果。①、插入?yún)R總、節(jié)專家、組專家、選擇專家等等的使用。組專家。如下圖,進入組專家后,選取要以之分組的字段到右邊欄位。選項設(shè)置屬性。確定后按所選字段分組,右圖為分組效果。二、水晶報表公式,程序應用分組項節(jié)專家使用。節(jié)專家界面的設(shè)置可以對報表進行靈活的控制。插入?yún)R總。插入?yún)R總項可進行數(shù)據(jù)求和、求平均、最大、最小值等功能。②、公式字段、參數(shù)字段使用公式字段。水晶報表公式編輯可使用Basic語法和Crystal語法。如下圖,建立公式字段“數(shù)量和”,編輯寫入公式,保存后退出公式編輯器。公式編輯框使用“數(shù)量和”字段。得到如下結(jié)果。數(shù)量和=加工數(shù)量+不合格數(shù)量程序里添加1個FORM窗體。拖入水晶報表控件。如下圖所示。三、程序調(diào)用水晶報表水晶報表控件編寫水晶報表使用函數(shù),有2種方式傳入數(shù)據(jù)源。①、傳入SQL語句。SubPrintView(ByValserverAsString,ByValPortAsString,ByValpathAsString,ByValsqlAsString)DimconstrAsStringDimdatabaseAsString="mfgsys"DimusernameAsString="sysprogress"DimpasswordAsString="sysprogress"constr="Driver={ProgressOpenEdge10.1Cdriver};DB="&_database&";UID="&username&";PWD="&password&";HOST="&server&";PORT="&PortDimrptdocAsNewCrystalDecisions.CrystalReports.Engine.ReportDocumentTryrptdoc.Load(path)rptdoc.SetDataSource(Query(sql,constr))Me.CrystalReportViewer1.ReportSource=rptdocMe.CrystalReportViewer1.RefreshReport()Me.Show()CatchexAsExceptionMessageBox.Show(ex.Message,"Error")EndTryEndSub傳入?yún)?shù)為服務器名/IP、端口號、水晶報表路徑、SQL語句。其中也使用到open(constr),query(sql,constr)函數(shù)。②、傳入dt
(DATATABLE)。PublicSubPrintViewXML(ByValpathAsString,ByValdtAsDataTable)DimrptdocAsNewCrystalDecisions.CrystalReports.Engine.ReportDocumentTryrptdoc.Load(path)rptdoc.SetDataSource(dt)Me.CrystalReportViewer1.ReportSource=rptdocMe.CrystalReportViewer1.RefreshReport()Me.Show()CatchexAsExceptionMessageBox.Show(ex.Message,"Error")EndTryEndSub傳入?yún)?shù)為水晶報表路徑、dt。以此方式可靈活使用水晶報表,傳入的dt可在程序中自由構(gòu)建數(shù)據(jù)。程序中調(diào)用這個FORM的2個函數(shù),傳入相應參數(shù),即可預覽、打印水晶報表。系統(tǒng)的客戶化中通過調(diào)用外掛程序也可實現(xiàn)水晶報表的打印。Epicor的客戶化平臺,可在系統(tǒng)原有基礎(chǔ)上編寫程序?qū)崿F(xiàn)功能。開發(fā)環(huán)境有VB.NET和C#2種。通過客戶化,可以實現(xiàn)自定義表開發(fā)、調(diào)用外掛程序、水晶報表、數(shù)據(jù)操作等功能。二、客戶化進入客戶化。①、向?qū)ы摵炇窃O(shè)置事件類型的功能.規(guī)則向?qū)Э稍O(shè)置在不同條件下數(shù)據(jù)的規(guī)則。1、客戶化界面介紹②、窗體事件向?qū)Э商砑痈鞣N事件.在窗體上有相應改變的情況下觸發(fā)。例:AfterFieldChange事件,在字段值發(fā)生改變時出發(fā)。③、表單向?qū)Э尚略鲆粋€新的Tab頁.④、事件向?qū)?,所有自定義控件的方法事件。一般使用的是VB.NET開發(fā)環(huán)境。因此,數(shù)據(jù)操作與.net中類似。主要包括以下3個函數(shù)。①、打開數(shù)據(jù)庫連接: Open(byvalconstrasstring);②、返回1個DataTable: FunctionQuery(ByValsqlAsString)AsData.DataTable;③、執(zhí)行插入、刪除、更新動作: SubExcuteSql(ByValsqlAsString);(詳細內(nèi)容在外掛程序使用中有說明。)2、數(shù)據(jù)操作。Epicor系統(tǒng)有用戶自定義數(shù)據(jù)表供使用者開發(fā)。①、進入系統(tǒng)菜單維護→新建菜單項→輸入菜單ID,名稱。點擊程序…→選取要開發(fā)的自定義表dll.例如我們要用UD107表進行客戶化(表單UD107對應的自定義表為UD107和UD107A)。如圖選擇對應的Epicor.Mfg.UI.UD107Entry.dll文件后。點擊保存,重新登錄系統(tǒng)可看到剛添加的自定義表菜單項。3、自定義表開發(fā)。②、開發(fā)人員模式進入剛新建的菜單。彈出客戶化選擇框(若已有客戶化則會顯示在Customizations節(jié)點中),點擊確定進入界面。右鍵彈出菜單項,選擇客戶化進入客戶化模式。③、進入客戶化環(huán)境后,可對其進行開發(fā)設(shè)計。包括屬性設(shè)置、程序編寫等等。下圖提示為:文本框如何綁定到數(shù)據(jù)表字段。點此可設(shè)置文本框所綁定的數(shù)據(jù)表字段④、完成客戶化后,保存。保存后可到菜單維護發(fā)布完成的客戶化。如圖所示:此處可選擇已完成的客戶化。如何在客戶化中調(diào)用外掛程序。①、如圖所示,外掛程序完成后,進入MyProject。應用程序類型選擇為類庫,點擊生成按鈕,編譯成dll文件。4、調(diào)用外掛②、將生成的dll文件放到Epicor安裝目錄的client目錄下。③、如圖,點擊工具欄→半成品參考管理器。④、選中customAssemblies→添加自定義參考。⑤、選取要調(diào)用的dll文件,如右圖所示,點擊確定。⑥、至此外掛程序已被引用到客戶化中。測試引用。添加1個epiButton1,在epiButton1的click事件中寫入以下代碼 PrivateSubepiButton1_Click(ByValsenderAsObject,ByValargsAsSystem.EventArgs) '**PlaceEventHandlingCodeHere**Dimfrmasneworderback.form1 Dimstrasstringstr=frm.GridValue_back(“Driver={ProgressOpenEdge10.1CDriver};DB=mfgsys;UID=sysprogress;PWD=sysprogress;HOST=daniel;PORT=9080”,“echom”) ‘GridValue_back()為外掛程序中的函數(shù)msgbox(str) EndSub⑦、更新代碼,測試通過后,保存客戶化代碼。關(guān)閉界面重新進入客戶化,選擇剛剛保存的客戶化進入。點擊epiButton1進行測試。⑧、如下圖所示,調(diào)用出frm.form1窗體。
至此完成客戶化調(diào)用外掛程序。①、獲取當前公司company,服務器host,端口號port。Dimsasstring=OTrans.Session.AppServercompany=OTrans.Session.CompanyIDhost=Mid(s,InStrRev(s,"http://")+2,InStrRev(s,":")-InStrRev(s,"http://")-2)port=Strings.Right(s,Len(s)-InStrRev(s,":"))port=Mid(port,1,2)+CStr(Int(Mid(port,3,1))+5)+CStr(Int(Mid(port,4,1))-1)②、調(diào)用系統(tǒng)功能。
oTrans.Undo()‘撤銷oTrans.update()‘保存oTrans.Refresh()‘刷新界面ProcessCaller.LaunchForm(Otrans,“UD_GDQL”)‘調(diào)用系統(tǒng)菜單項?!癠D_GDQL”為菜單ID。。。。。。③、根據(jù)條件彈出選擇框,并返回DataSetFunctionSearchShowToDS(ByValstrAtapterNameasstring,ByValstrWhereClauseasstring,ByRefdsSearchAsDataSet)DimrecSelectedAsBooleanTrydsSearch=Epicor.Mfg.UI.FormFunctions.SearchFunctions.listLookup(otrans,strAtapterName,recSelected,True,strWhereClause)CatchexAsExceptionMessageBox.Show(ex.Message.ToString)EndTryReturnrecSelectedEndFunction5、系統(tǒng)函數(shù)方法使用。④、視圖取值,賦值。DimRcvHeadAsEpiDataView=CType(oTrans.EpiDataViews("RcvHead"),EpiDataView)
‘定義RcvHead為視圖oTrans.EpiDataViews("RcvHead")。
IfRcvHead.row<0thenExitSub
‘如果視圖無值,退出程序。
PackSlip=RcvHead.dataview(RcvHead.row)(“PackSlip”).Tostring
‘取視圖RcvHead里PackSlip字段的值。EpiDataView.row為視圖索引值。
給EpiDataView.row賦值可以定位視圖位置。例:EpiDataView.row=0。將視圖定位到第一頁。RcvHead.dataview(RcvHead.row)(“PackSlip”)=PackSlip‘為視圖賦值。⑤、使用系統(tǒng)界面已有控件。正常情況系統(tǒng)自身加入的各種控件,如Grid,Textbox等,我們無法使用。經(jīng)過下面的方法可以實現(xiàn)操作系統(tǒng)界面已有控件。例:tmpgrid為系統(tǒng)自身已有Grid。DimtmpgridasEpicor.Mfg.UI.FrameWork.EpiUltraGridtmpgrid=ctype(csm.GetNativeControlReference("27d314e8-4849-47df-a4db-2dda5d27ae90"),EpiUltraGrid)Epicor.Mfg.UI.FrameWork.EpiUltraGrid為控件類型。27d314e8-4849-47df-a4db-2dda5d27ae90為控件屬性里的EpiGuid項。經(jīng)過以上代碼可以實現(xiàn)操作tmpgrid。例:tmpgrid.datasource.table.Columns.Counttmpgrid列數(shù)。外掛程序基于VB.NET開發(fā)。對于EPICOR系統(tǒng),外掛程序開發(fā)主要包括以下幾個方面的內(nèi)容。
一、VB.NET外掛程序開發(fā)外掛程序中,數(shù)據(jù)操作是必不可少的。主要包括數(shù)據(jù)的讀取,寫入,更新等等。程序編寫使用的是ADO.NET對象操作數(shù)據(jù)。連接方式為ODBC。首先來了解一下ADO.NET對象。1、數(shù)據(jù)操作ADO.NET的對象主要包括: Connection,Command,DataAdapter,DataReader,DataSet,DataTable,dateview,DataColumn,和DataRow
①、DataSet:這個對象是一個集合對象,可以當成一個離線的數(shù)據(jù)庫它可以包含任意數(shù)量的數(shù)據(jù)表,以及所有表的約束、索引和關(guān)系。所有這些信息都以XML的形式存在,我們可以處理、遍歷、搜索任意或者全部的數(shù)據(jù)。
①、DataReader對象:它與DataSet最大的不同是有連接式的,每次對數(shù)據(jù)庫進行存取都會影響到數(shù)據(jù)庫。
②、DataTable:這個對象代表著可以在DataSet對象內(nèi)找到的所有表,
③、Connection對象:用于連接數(shù)據(jù)庫的對象,表示到數(shù)據(jù)源的一個唯一的連接。
④、Command對象:表示要對數(shù)據(jù)庫執(zhí)行的一個SQL語句或一個存儲過程。
⑤、DataAdapter對象:該對象是與DataSet配合使用的對象,用于把表填充到DataSet,和更新DataSet等。
⑥、DataColumn:表包含與列有關(guān)的信息,包括列的名稱、類型和屬性。我們可以按照下面的方式創(chuàng)建DataColumn對象,指定數(shù)據(jù)類型,然后把列加入到表。
⑦、DataRow:要填充一個表,我們可以使用命令的自動數(shù)據(jù)綁定功能,或者也可以手工添加行斷開連接模式。
斷開連接模式適合網(wǎng)絡(luò)數(shù)據(jù)量大、系統(tǒng)節(jié)點多、網(wǎng)絡(luò)結(jié)構(gòu)復雜,尤其是通過Internet/Intranet進行連接的網(wǎng)絡(luò)。典型的ADO.NET斷開連接模式應用如右圖所示。斷開連接模式下數(shù)據(jù)訪問的步驟:(1)使用Connection對象連接數(shù)據(jù)庫。(2)使用Command對象獲取數(shù)據(jù)庫的數(shù)據(jù)。(3)把Command對象的運行結(jié)果存儲在DataAdapter(數(shù)據(jù)適配器)對象中。(4)把DataAdapter對象中的數(shù)據(jù)填充到DataSet(數(shù)據(jù)集)對象中。(5)關(guān)閉Connection對象。(6)在客戶機本地內(nèi)存保存的DataSet(數(shù)據(jù)集)對象中執(zhí)行數(shù)據(jù)的各種操作。(7)操作完畢后,啟動Connection對象連接數(shù)據(jù)庫。(8)利用DataAdapter對象更新數(shù)據(jù)庫。(9)關(guān)閉Connection對象。
ADO.NET訪問數(shù)據(jù)庫的機制及非數(shù)據(jù)庫模式過程:Subopen(ByValcnstrAsString)TryCon=NewOdbc.OdbcConnection(cnstr)IfCon.State=ConnectionState.ClosedThenCon.Open()EndIfCatchexAsExceptionMessageBox.Show(ex.Message.ToString,"數(shù)據(jù)庫連接失敗")EndTryEndSub傳入的cnstr為ODBC連接字符串。例:constr=“Driver={ProgressOpenEdge10.1CDriver};DB=mfgsys;UID=sysprogress;PWD=sysprogress;HOST=Daniel;PORT=9060”上例為Epicor9的PROGRESS版數(shù)據(jù)庫的連接字符串,HOST為主機名或IP地址;PORT為數(shù)據(jù)庫端口號,9060為Training庫端口號。①、open(ByValcnstrAsString)‘打開ODBC連接了解了ADO.NET知識后,通過以下3個函數(shù)可以幫助我們實現(xiàn)數(shù)據(jù)操作。函數(shù):FunctionQuery(ByValsqlAsString,ByValconSAsString)AsData.DataTable
odbadp=NewOdbc.OdbcDataAdapterodbcmd=NewOdbc.OdbcCommandds=NewDataSett1=NewDataTableTryodbcmd.Connection=Conodbcmd.CommandText=sqlodbadp.SelectCommand=odbcmdodbadp.Fill(ds,"a")t1=ds.Tables("a")Returnt1CatchexAsExceptionMessageBox.Show(ex.Message.ToString,"查詢出錯")Returnt1EndTryEndFunction
傳入的sql為SQL查詢語句(Select語句),語句構(gòu)建規(guī)則與SQLSERVER類似。conS為ODBC連接字符串。函數(shù)返回結(jié)果為1個DataTable??捎糜跀?shù)據(jù)讀取操作。②、Query(ByValsqlAsString,ByValconStrAsString)asDataTable‘傳入sql語句查詢得到Datatable函數(shù):FunctionExcuteSql(ByValsqlAsString,ByValcnstrAsString)AsIntegerDimodbcmdAsNewOdbc.OdbcCommandDimdAsDoubleTryodbcmd.Connection=Conodbcmd.CommandText=sqld=odbcmd.ExecuteNonQuery()ReturndCatchexAsExceptionMessageBox.Show(ex.Message.ToString,"數(shù)據(jù)為寫入出錯")ReturndEndTryEndFunction傳入的sql為更新、寫入、刪除語句(Update、Insert、Delete語句),語句構(gòu)建規(guī)則與SQLSERVER類似。conS為ODBC連接字符串,函數(shù)返回結(jié)果為此sql語句影響的數(shù)據(jù)條數(shù)。③、ExcuteSql(ByValsqlAsString,ByValcnstrAsString)asInteger ‘寫入,更新數(shù)據(jù)函數(shù)一、在外掛界面提供輸入連接字符串參數(shù)的接口。如:HOST主機名/IP;PORT數(shù)據(jù)庫端口號等。例:如右圖所示,輸入連接字符串參數(shù)。傳入?yún)?shù)后即可對數(shù)據(jù)庫進行操作查詢。此類程序主要用在自制查詢分析器等數(shù)據(jù)庫查詢操作工具,便于更改連接字符串。2、外掛程序常用做法外掛程序要做到與系統(tǒng)及數(shù)據(jù)庫的結(jié)合。有以下幾種途徑:二、程序處理,命令行參數(shù)傳入。步驟如下:1、添加1個新的Module。如圖。模塊程序:ModuleinitPublichostAsStringPublicPortAsStringPubliccompanyAsStringSubMain(ByValCmdArgs()AsString)'CmdArgs()就是參數(shù)'CmdArgs(0)表示第一個參數(shù)'cmdArgs.Length表示參數(shù)個數(shù)
'注:
'1、SubMain必須聲明在Module中
'2、點擊“項目”-〉“......屬性”,將啟動對象設(shè)為“SubMain”IfCmdArgs.Le
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新材料研發(fā)與產(chǎn)業(yè)化推廣合同3篇
- 2025年度智能車庫租賃定金合同4篇
- 2024濕地公園生態(tài)教育展示中心建設(shè)合同3篇
- 2024投標聯(lián)合體協(xié)議書模板:新型城鎮(zhèn)化項目合作3篇
- 2025個人股份代持協(xié)議范本與合同履行評估報告4篇
- 2025年度金融產(chǎn)品個人居間推廣合同4篇
- 2025年度個人股份代持協(xié)議書(藝術(shù)品投資合作)4篇
- 2025年浙江湖州供銷集團有限公司招聘筆試參考題庫含答案解析
- 2025年山東玻纖集團股份有限公司招聘筆試參考題庫含答案解析
- 2025年廣西防城港市港發(fā)控股集團招聘筆試參考題庫含答案解析
- 2024年工程咨詢服務承諾書
- 青桔單車保險合同條例
- 車輛使用不過戶免責協(xié)議書范文范本
- 《獅子王》電影賞析
- 2023-2024學年天津市部分區(qū)九年級(上)期末物理試卷
- DB13-T 5673-2023 公路自愈合瀝青混合料薄層超薄層罩面施工技術(shù)規(guī)范
- 河北省保定市定州市2025屆高二數(shù)學第一學期期末監(jiān)測試題含解析
- 哈爾濱研學旅行課程設(shè)計
- 2024 smart汽車品牌用戶社區(qū)運營全案
- 中醫(yī)護理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報告
評論
0/150
提交評論