行開插件開發(fā)實(shí)例供應(yīng)商資質(zhì)管理_第1頁(yè)
行開插件開發(fā)實(shí)例供應(yīng)商資質(zhì)管理_第2頁(yè)
行開插件開發(fā)實(shí)例供應(yīng)商資質(zhì)管理_第3頁(yè)
行開插件開發(fā)實(shí)例供應(yīng)商資質(zhì)管理_第4頁(yè)
行開插件開發(fā)實(shí)例供應(yīng)商資質(zhì)管理_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、行開插件開發(fā)實(shí)例-供應(yīng)商資質(zhì)管理摘要U8系列產(chǎn)品提供了許多的二次開發(fā)接口,用戶可在U8平臺(tái)充分利用二次開發(fā)技術(shù)及接口開發(fā)出符合特定業(yè)務(wù)需求的插件,以更好的滿足用戶的個(gè)性化需求。本文將以供應(yīng)商資質(zhì)管理為實(shí)例介紹如何利用U8平臺(tái)提供的二次開發(fā)技術(shù)及接口實(shí)現(xiàn)插件式的二次開發(fā),并應(yīng)用于U8標(biāo)準(zhǔn)流程的控制。目標(biāo)本文通過一個(gè)實(shí)例分步介紹了如何利用U8提供的開發(fā)技術(shù)及接口實(shí)現(xiàn)供應(yīng)商資質(zhì)管理。通過本文的學(xué)習(xí),開發(fā)人員可掌握U8中權(quán)限管理、菜單掛接、工具條、單據(jù)開發(fā)、單據(jù)事件接口等相關(guān)技術(shù),并能按步驟開發(fā)出類似的插件。實(shí)例簡(jiǎn)介供應(yīng)商資質(zhì)管理介紹:建立供應(yīng)商資質(zhì)檔案,菜單掛接:供應(yīng)鏈資質(zhì)管理供應(yīng)商資質(zhì)業(yè)務(wù)處理供應(yīng)

2、商資質(zhì)認(rèn)證 供應(yīng)鏈采購(gòu)管理供應(yīng)商管理供應(yīng)商資質(zhì)認(rèn)證列表在審核采購(gòu)訂單時(shí),判斷訂單供應(yīng)商是否有對(duì)應(yīng)資質(zhì)認(rèn)證,只有供應(yīng)商存在對(duì)應(yīng)資質(zhì)認(rèn)證的前提下才能成功審核采購(gòu)訂單,否則提示該供應(yīng)商無資質(zhì)認(rèn)證,審核失敗。業(yè)務(wù)流程如下圖:開發(fā)實(shí)現(xiàn)步驟1. 菜單掛接和權(quán)限U8的菜單都是通過腳本,將菜單的數(shù)據(jù),包括菜單層級(jí)關(guān)系預(yù)制到ufdata庫(kù)的ua_menu表,下面將以“供應(yīng)商資質(zhì)”為例介紹一下如何插入菜單節(jié)點(diǎn):如下圖:首先,需要了解一下UA_menu 表的結(jié)構(gòu):字段名數(shù)據(jù)類型含義AutoIDuid自動(dòng)編號(hào)cMenu_IdString菜單編號(hào),自動(dòng)產(chǎn)生,不可修改cMenu_NameString菜單名稱,輸入cMen

3、u_EngString程序類型,可忽略cSub_IdString模塊標(biāo)識(shí),程序處理IGradeInt16級(jí)次,根據(jù)當(dāng)前選中菜單程序自動(dòng)處理cSupMenu_IdString上級(jí)菜單編號(hào),根據(jù)當(dāng)前選中菜單程序自動(dòng)處理bEndGradeBoolean是否末級(jí),輸入,cAuth_IdString功能權(quán)限編號(hào),程序內(nèi)部處理,控制權(quán)限時(shí)有效(cAuth_Id= cMenu_Id)。iOrderInt32顯示順序號(hào),程序處理iImgIndexInt32圖標(biāo)索引號(hào),暫不用ParamtersString參數(shù),輸入,只有末級(jí)菜單才允許錄入?yún)?shù)DependsString依賴 FlagInt標(biāo)志按照層級(jí)關(guān)系,首先在

4、供應(yīng)鏈下面插入資質(zhì)管理的頂級(jí)菜單節(jié)點(diǎn):insert into ua_menu (cMenu_Id,cMenu_Name,cMenu_Eng,cSub_Id,IGrade,cSupMenu_Id,bEndGrade,cAuth_Id,iOrder,iImgIndex,Paramters,Depends,Flag)values('HH','資質(zhì)管理',Null,'HH',1,'SCMG','0',Null,-9999,1,Null,'HH',Null)然后再分別插入“供應(yīng)商資質(zhì)”節(jié)點(diǎn)和末級(jí)節(jié)點(diǎn)“供應(yīng)商資

5、質(zhì)認(rèn)證”insert into ua_menu (cMenu_Id,cMenu_Name,cMenu_Eng,cSub_Id,IGrade,cSupMenu_Id,bEndGrade,cAuth_Id,iOrder,iImgIndex,Paramters,Depends,Flag)values('EFZZGL01','供應(yīng)商資質(zhì)',Null,'HH',2,'HH','0','EFZZGL01',800,1,Null,'HH',Null)insert into ua_menu (cMe

6、nu_Id,cMenu_Name,cMenu_Eng,cSub_Id,IGrade,cSupMenu_Id,bEndGrade,cAuth_Id,iOrder,iImgIndex,Paramters,Depends,Flag)values('EFZZGL010101','供應(yīng)商資質(zhì)認(rèn)證',Null,'HH',4,'EFZZGL0101','1','EFZZGL01010101',1000,1,Null,'HH',Null)做完上述的菜單插入后,就要為各個(gè)菜單關(guān)聯(lián)上權(quán)限,這樣才可以在系

7、統(tǒng)內(nèi)對(duì)菜單進(jìn)行權(quán)限控制,U8功能權(quán)限信息也是通過預(yù)制數(shù)據(jù)庫(kù)數(shù)據(jù)實(shí)現(xiàn),預(yù)制權(quán)限是對(duì)ua_auth_base表進(jìn)行操作:見上圖,這里需要說明一下權(quán)限與菜單的差異:權(quán)限節(jié)點(diǎn),某模塊的頂級(jí)節(jié)點(diǎn),在U8擁有該模塊產(chǎn)品號(hào)的前提下是不需要預(yù)制,例如上圖資質(zhì)管理節(jié)點(diǎn),在權(quán)限表內(nèi)是找不到該權(quán)限節(jié)點(diǎn),但是,如果U8未包含的產(chǎn)品,就必須預(yù)制權(quán)限表,預(yù)制的例子如下:首先預(yù)制權(quán)限主表ua_auth_base:IF NOT EXISTS (SELECT TOP 1 'DATA' AS DATA FROM ua_auth_base Where (cAuth_Id='EFZZGL01010101

8、9; and cSub_Id='HH') ) INSERT INTO ua_auth_base(cAuth_Id,cSub_Id,iGrade,cSupAuth_Id,bEndGrade,iOrder,cAcc_Id,cAuthType,cAllSupAuths,irepnum,cRepellent,cRepellentModule,cNotRepellent,cRepInDB,cRepModInDB,cNotRepInDB)VALUES ('EFZZGL01010101','HH',4,'EFZZGL010101',1,2300

9、,NULL,'0','EFZZGL010101,EFZZGL0101,EFZZGL01',NULL,NULL,NULL,NULL,NULL,NULL,NULL) 然后預(yù)制權(quán)限語言信息ua_auth_lang:IF NOT EXISTS (SELECT TOP 1 'DATA' AS DATA FROM UA_Auth_lang Where (cAuth_ID='EFZZGL010101') ) INSERT INTO UA_Auth_lang(localeid,cAuth_ID,cAuth_Name)VALUES ('zh

10、-CN','EFZZGL010101','供應(yīng)商資質(zhì)認(rèn)證')注:預(yù)制菜單時(shí),可以使用先刪除后插入的方式進(jìn)行預(yù)制,預(yù)制權(quán)限怎不允許這種方式,所以在例子語句中,都添加了判斷的SQL語句2. 預(yù)制門戶按鈕(U8 V11.0以下版本不需要做這一步)下面先對(duì)U8門戶按鈕做一下簡(jiǎn)單介紹:按鈕插入步驟1、插入窗體信息主表AA_Forms_base與窗體信息語言AA_Forms_lang,插入時(shí)可采用先刪除后插入的模式Delete From AA_Forms_base Where cFormCode =N'HH_Voucher_EFZZGL01'Dele

11、te From AA_Forms_lang Where cFormCode =N'HH_Voucher_EFZZGL01'Insert Into AA_Forms_base(cFormCode,cSubID,iFormType,cMemo,cProjectNO,bSmallbutton) Values (N'HH_Voucher_EFZZGL01',N'HH',0,N'供應(yīng)商資質(zhì)',N'U870',0)Insert Into AA_Forms_lang(cFormCode,localeid,cFormCaption

12、,cFormDesc,cSubID,cProjectNO) Values (N'HH_Voucher_EFZZGL01',N'zh-CN',N'供應(yīng)商資質(zhì)',N'',N'HH',N'U870')2、插入按鈕主表AA_FormButtons_base與按鈕語言AA_FormButtons_langInsert Into AA_FormButtons_base(cFormCode,cButtonKey,cGroup,cPic,cToolBarType,iToolBarStyle,iOrder,iheig

13、htRow,cHotKey,cAuthid,iVoucherCtlIndex,ctoolbarPosIndex,cResID,cTipResID,cSubID,cProjectNO,cForegroundColor,cBackgroundColor,cSetGroup,iSetGroupRow,ProcessObjectName,FunctionKey) Values (N'HH_Voucher_EFZZGL01',N'print',N'HH_Voucher_P_10',N'Print',N'PortalToolbar&#

14、39;,5,10,1,N'Ctrl+P',N'',0,N'P',N'',N'',N'HH',N'U870',N'',N'',N'HH_Voucher_P_10_10',2,N'',N'')Insert Into AA_FormButtons_lang(cFormCode,localeid,cButtonKey,cCaption,cToolTip,cSubID,cProjectNO) Values (N&#

15、39;HH_Voucher_EFZZGL01',N'zh-CN',N'print',N'打印',N'打印',N'HH',N'U870')3、如果該按鈕包含下拉按鈕,則還需要插入按鈕菜單表AA_FormButtonMenus_base與按鈕菜單語言表Insert Into AA_FormButtonMenus_base(cFormCode,cButtonKey,cMenuKey,iOrder,cParentKey,igrade,cAuthid,cResID,cSubID,cProjectNO,

16、cForegroundColor,cBackgroundColor,iMenuType,ProcessObjectName,FunctionKey) Values (N'HH_Voucher_EFZZGL01',N'Print',N'print',1,N'',0,N'',N'',N'HH',N'U870',N'black',N'',0,N'',N'')Insert Into AA_FormButtonMe

17、nus_lang(cFormCode,localeid,cButtonKey,cMenuKey,cCaption,cToolTip,cSubID,cProjectNO) Values (N'HH_Voucher_EFZZGL01',N'zh-CN',N'Print',N'print',N'打印',N'',N'HH',N'U870')注:在U8V11.0以前的版本,按鈕都是通過在代碼中利用toolbar控件的additem方法添加按鈕(既微軟原有的方式),但是此種方法并

18、不適用于U8V11.0,下面也為大家簡(jiǎn)單介紹一下U8V11.0以前版本預(yù)制按鈕的方式,請(qǐng)看一下例子代碼:初始化微軟工具欄工具欄Public Sub Init_Toolbar(tlbObj As Toolbar, iSetType As Integer) With tlbObj.Buttons .Clear With .Add(, sKey_Print, strPrint, tbrDropdown) .ToolTipText = “打印” & "(Ctrl+P)" Call .ButtonMenus.Add(, "PrintList",”打印列表”

19、) Call .ButtonMenus.Add(, "PrintBarCode", “打印條碼”) End With .Add , sKey_Confirm, strConfirm .Item(sKey_Confirm).ToolTipText = strConfirm .Add , sKey_Cancelconfirm, strCancelconfirm .Item(sKey_Cancelconfirm).ToolTipText = strCancelconfirmEnd將微軟工具欄與U8工具欄進(jìn)行綁定Public Sub ChangeOneFormTbr(frm As

20、Form, objTbl As Toolbar, objU8Tbl As Control) Set objU8Tbl.Business = g_oBusiness With objTbl .Buttons(sKey_Print).Tag = g_oBusiness.createportaltoolbartag("print", "ICOMMON", "PortalToolbar").Buttons(sKey_Confirm).Tag = g_oBusiness.createportaltoolbartag("Approve&

21、quot;, "ICOMMON", "PortalToolbar") End With objU8Tbl.SetToolbar objTbl objU8Tbl.SetDisplayStyle 0 'TextOnly objTbl.Visible = False objU8Tbl.Visible = True objU8Tbl.Left = objTbl.Left objU8Tbl.Top = objTbl.Top objU8Tbl.Width = frm.Width - 6 * Screen.TwipsPerPixelX objU8Tbl.Hei

22、ght = objTbl.HeightEnd SubCreateportaltoolbartag方法的第一參數(shù),傳入就是該按鈕所使用的圖標(biāo),圖標(biāo)文件可以在U8SOFTicons中尋找到。3. 預(yù)制單據(jù)模板信息U8單據(jù)模板信息,同樣是將模板信息存儲(chǔ)在數(shù)據(jù)庫(kù)當(dāng)中,主要涉及以下幾個(gè)表:Vouchers_base、Vouchers_lang、VoucherTemplates_Base、VoucherTemplates_lang、VoucherItems_Base、Voucheritems_PRN_base、VoucherItems_PRN_Lang預(yù)制數(shù)據(jù)時(shí)需要按照順序預(yù)制這幾張表。insert in

23、to Vouchers_base (CardNumber,Shield,Name,CardType,ItemTblName,itemCol,BTTblName,BTQName,BWTblName,BWQName,VchListQName,HaveBodyGrid,BodyModify,VoucherWidth,VoucherHeight,BodyTop,BodyLeft,BodyWidth,BodyHeight,SelfDef1,SelfDef2,SelfDef3,DEF_ID,DEF_ID_PRN,cSub_Id,Memo,iOrder,cIndustry,bAllowMulTemp,cDe

24、fWhere,vchtblPrimarykeyNames,ReceiptNoFieldName,IsPrintLimited,AllowDateTimeFormat,NotAppiesAuth,InventoryFieldName,UpdateTime,cHeadBusObjectId,cBodyBusObjectId,cHeadFuncName,cBodyFuncName,cFieldAuthid,vchBodyPKName,BodyFKName)values('EFZZGL01','0','供應(yīng)商資質(zhì)',Null,Null,3,'EF

25、_ZZGL_VenLicence','EF_ZZGL_V_VenLicence_EFZZGL01','EF_ZZGL_VenLicences','EF_ZZGL_V_VenLicences_EFZZGL01','EF_ZZGL_V_VenLicenceList01','1','1',1000,1000,100,10,1000,10000,Null,Null,Null,31267,31268,'HH',Null,1421,Null,'1',Null,'i

26、d',Null,'1','1','1',Null,Null,Null,Null,Null,Null,Null,Null,Null)insert into Vouchers_lang (cardnumber,localeid,ccardname,appname)values('EFZZGL01','zh-cn','供應(yīng)商資質(zhì)','資質(zhì)管理')insert into VoucherTemplates_Base (VT_ID,VT_CardNumber,VT_TemplateMod

27、e,VT_Width,VT_Height,VT_BodyTop,VT_BodyLeft,VT_BodyWidth,VT_BodyHeight,VT_SelfDef1,VT_SelfDef2,VT_SelfDef3,VT_Memo,VT_Lock,VT_TitleTop,VT_TitleLeft,VT_PageHeader,VT_BodyFixedCols,VT_BodyMaxRows,VT_GridStyle,VT_WorkAreaColor,VT_FiexdColor,VT_TotalColor,VT_ControlStyle,VT_GridPrnRows,VT_GridPrnRowHeig

28、ht,VT_PrintTemplID,VT_AutoCalc,VT_PageSubTotal,VT_PageTotal,VT_PrintGrid,nAutoCalcWidth,nPrintSeril,nPrintGridLine,varPrintSetting,VT_PRN_DEF_LANDID,vt_saveObject,VT_ReservedInfo,VT_xamlField,VT_RowLayoutEnabled,AuditDisplayFlag)values(VT_ID,'EFZZGL01',0,11339,7937,1400,120,11099,6107,'3

29、000','480',Null,Null,'0',0,4830,Null,1,0,1,16777215,16769984,16777215,2,0,255,100001,0,1,1,1,31,496,1,Null,Null,Null,'','<?xml version="1.0"?><xaml></xaml>','0',Null)-insert into VoucherTemplates_lang (vt_id,localeid,vt_cardnumb

30、er,vt_name,vt_titlename,vt_titlefontstate,vt_foot,vt_gridstylehead,vt_gridstylebody,vt_gridstyletotal,vt_footheaderfont,vt_header,vt_RowLayoutXML)values(VT_ID,'zh-cn','EFZZGL01','供應(yīng)商資質(zhì)顯示模版','供應(yīng)商資質(zhì)','Tahoma,15,0,0,1','第%p頁(yè)共%P頁(yè)','','',

31、9;','','',Null)insert into VoucherItems_Base (VT_ID,CardNum,CardItemNum,CanNotSelect,ShowIt,LinkIt,LinkTbl,LinkField,TableName,FieldName,FieldType,ReferType,ReferTable,CardSection,CanModify,MaxLength,MaxShowLen,NumPoint,IsNull,CanDelete,UserCheck,UserPrompt,FormatChar,IsMain,Need

32、Sum,CalcField,AliasNum,isSelfDef,COX,COY,Width,Height,TabIndex,DefaultValue,IsFixedLenght,FormatData,PrintCaption,PrintUpcase,PrintInterval,DataSource,EnterType,DataRule,ValidityCheck,ReserveSegTitlePos,BuildArchives,ReferReturnField,cmemo,nBorder,EnumType,IsEnum,EnumTypeString,bZeroAllowable,iFlags

33、,vValueDefault,refObject,AutoFillRule,Catalog)values(VT_ID,'EFZZGL01','94','0','1',0,Null,Null,'EF_ZZGL_VenLicence','iscontrol',1,4,Null,'T','1',20,1300,0,'1',1,Null,Null,'1','1',0,'0',0,3,3860,1090,3500,

34、250,5,'','0','','1','0','',0,0,Null,'0','1','0',Null,'0',0,'False','0','False','0',0,'',Null,'0',0)insert into VoucherItems_Base (VT_ID,CardNum,CardItemNum,CanNotSelect,Sho

35、wIt,LinkIt,LinkTbl,LinkField,TableName,FieldName,FieldType,ReferType,ReferTable,CardSection,CanModify,MaxLength,MaxShowLen,NumPoint,IsNull,CanDelete,UserCheck,UserPrompt,FormatChar,IsMain,NeedSum,CalcField,AliasNum,isSelfDef,COX,COY,Width,Height,TabIndex,DefaultValue,IsFixedLenght,FormatData,PrintCa

36、ption,PrintUpcase,PrintInterval,DataSource,EnterType,DataRule,ValidityCheck,ReserveSegTitlePos,BuildArchives,ReferReturnField,cmemo,nBorder,EnumType,IsEnum,EnumTypeString,bZeroAllowable,iFlags,vValueDefault,refObject,AutoFillRule,Catalog)values(VT_ID,'EFZZGL01','94','0','

37、1',0,Null,Null,'EF_ZZGL_VenLicence','iscontrol',1,4,Null,'T','1',20,1300,0,'1',1,Null,Null,'1','1',0,'0',0,3,3860,1090,3500,250,5,'','0','','1','0','',0,0,Null,'0','1',

38、'0',Null,'0',0,'False','0','False','0',0,'',Null,'0',0)insert into VoucherItems_lang (guid,localeid,vt_id,fieldname,cardsection,cardnum,carditemname,cardformula1,cardformula2,fontstate)values(newid(),'en-us',VT_ID,'autoid

39、9;,'B','EFZZGL01','編號(hào)id','','','Tahoma,9,0,0,1')insert into Voucheritems_PRN_base (VT_ID,CardNum,CardItemNum,CanNotSelect,ShowIt,LinkIt,LinkTbl,LinkField,TableName,FieldName,FieldType,ReferType,ReferTable,CardSection,CanModify,MaxLength,MaxShowLen,NumP

40、oint,IsNull,CanDelete,UserCheck,UserPrompt,FormatChar,IsMain,NeedSum,CalcField,AliasNum,isSelfDef,COX,COY,Width,Height,TabIndex,DefaultValue,IsFixedLenght,FormatData,PrintCaption,PrintUpcase,PrintInterval,DataSource,EnterType,DataRule,ValidityCheck,ReserveSegTitlePos,BuildArchives,nBorder,ReferRetur

41、nField,cmemo,EnumType,IsEnum,EnumTypeString,bZeroAllowable,iFlags,vValueDefault,refObject,AutoFillRule,Catalog)values(VT_ID,'EFZZGL01','70','0','0',0,Null,Null,'EF_ZZGL_VenLicences','autoid',2,2,Null,'B','1',4,1300,6,'0',1,Null,

42、Null,'1','1',0,'0',0,3,1000,28,2505,0,73,Null,'0',Null,'1','0',Null,0,0,Null,'0','1','0',0,Null,Null,'False','0','True','0',0,Null,Null,'0',0)insert into VoucherItems_PRN_Lang (guid,locale

43、id,vt_id,fieldname,cardsection,cardnum,carditemname,cardformula1,cardformula2,fontstate)values(newid(),'en-us',VT_ID,'autoid','B','EFZZGL01','編號(hào)id',Null,Null,'Tahoma,9,0,0,1')4. 代碼開發(fā)預(yù)制完上述菜單、權(quán)限、按鈕、單據(jù)模板信息后,下面要進(jìn)行的就是代碼開發(fā)。代碼開發(fā),主要就是三個(gè)方面的工作:(1) 門戶登錄,既在門戶中雙擊插入

44、的菜單,登錄到程序界面;(2) 完成對(duì)門戶按鈕預(yù)制信息,單據(jù)模板預(yù)制信息的加載(3) 功能邏輯實(shí)現(xiàn)在本文檔,主要講一下第一點(diǎn)與第二點(diǎn),第三點(diǎn)由于程序各異,就不多加說明Ø 門戶登錄:組件引用:在編寫門戶登錄時(shí),需要在VB工程內(nèi)增加一個(gè)接口類,接口類主要對(duì)門戶登錄接口的一個(gè)實(shí)現(xiàn),并同時(shí)從門戶中獲取門戶的登錄業(yè)務(wù)對(duì)象Business、登錄組件Login以及數(shù)據(jù)庫(kù)連接對(duì)象,為后續(xù)代碼編寫提供基礎(chǔ),“供應(yīng)商資質(zhì)”的接口類為clsProductFacade,下列是實(shí)例代碼: 獲取門戶的業(yè)務(wù)對(duì)象Public Property Get Business() As Object Set Busines

45、s = g_obusinessEnd PropertyPublic Property Set Business(ByRef bBus As Object) Set g_obusiness = bBus '獲得business對(duì)象。End Property門戶登錄時(shí)運(yùn)行Private Function ILoginable_Login() As Boolean If (Not g_obusiness Is Nothing) And g_bLogined = False) Then Set g_oLogin = g_obusiness.GetVBclsLogin() '獲得logi

46、n對(duì)象 If g_Conn.State = 1 Then g_Conn.Close g_Conn.ConnectionString = g_oLogin.UfDbName g_Conn.CursorLocation = adUseClient g_Conn.Open ' Call InitNumberFormat g_bLogined = True ILoginable_Login = True Else ILoginable_Login = Not g_obusiness Is Nothing End IfEnd Function門戶退出Private Function ILogin

47、able_LogOff() As Boolean '程序退出前,添加自己的代碼 ILoginable_LogOff = True '本行代碼必須。 g_bLogined = False '本行代碼必須。End Function門戶登錄主方法Private Function ILoginable_CallFunction(ByVal cMenuId As String, ByVal cMenuName As String, ByVal cAuthId As String, ByVal cCmdLine As String) As Object Dim vfd As Obj

48、ect Dim clsListInterFace As VouchListInterFace DolistVoucher = False' Dim mEncrypt As Object Dim var As Variant' Set gEncryptLogin = CreateObject("UFSoft.U8.Framework.Login.UI.clsLogin")' Set mEncrypt = CreateObject("HY_FZ_Library.clsCommonLib")' If mEncrypt.Encry

49、pt("HH", gEncryptLogin, g_oLogin) = False Then' Exit Function' End If If ZwTaskExec(AuthShow, 1) = False Then Exit Function End If If Not (g_obusiness Is Nothing) Then Set vfd = g_obusiness.CreateFormEnv("frmMain_key4", frmMain) 'Form11_key為任意字符串,建議以"窗體名_key"

50、;來表示,既防止重復(fù),又清晰易懂。 Call g_obusiness.ShowForm(frmMain, "DP", "f frmMain_key4", False, True, vfd) Else frmMain.Show frmMain.ZOrder 0 End IfEnd Function而編寫這個(gè)類又怎么跟門戶掛接呢,此時(shí)在數(shù)據(jù)的UFSYSTEM庫(kù)的ua_idt這個(gè)表需要預(yù)知一條數(shù)據(jù),將菜單ID(cMenu_id)與接口類關(guān)聯(lián),例如“供應(yīng)商資質(zhì)”工程名叫EFZZGLMain,接口類叫clsProductFacade,則預(yù)知到ua_idt這個(gè)表的S

51、QL語句如下:insert into ufsystem.ua_idt (id,assembly,catalogtype,type,class,entrypoint,parameter,reserved)values('EFZZGL010101','EFZZGLMain.clsProductFacade',0,0,Null,Null,Null,Null)Ø 按鈕加載:使用U8的按鈕,需要同時(shí)在窗體中增加微軟的toolbar控件和U8的uftoolbar控件按鈕加載一般在窗體的Form_laod事件中進(jìn)行: 方法說明 Settoolbarfromdata(

52、oMSToolBar As Object, CN As Connection, oLogin As Object, sFormKey As String, sSubKey As String, oVouchers As Object) oMSToolBar:微軟toolbar控件名稱, CN數(shù)據(jù)連接對(duì)象, ologin登陸組件,即u8login.clslogin ,sFormKey 窗體關(guān)鍵字,sSubKey 子產(chǎn)品號(hào),oVouchers 窗體所使用的單據(jù)控件UFToolbar1.Settoolbarfromdata tbrvoucher, DBConn, m_Login, formKey,

53、"HH"UFToolbar1.SetToolbar tbrvoucherCall UFToolbar1.SetFormInfo(Me.Voucher, Me)代碼中Settoolbarfromdata方法是從數(shù)據(jù)中獲取上述預(yù)制的按鈕信息UFToolbar1.SetToolbar tbrvoucher是將Toolbar與uftoolbar進(jìn)行綁定Ø 單據(jù)模板、單據(jù)數(shù)據(jù)加載方法:需要引用單據(jù)服務(wù)與單據(jù)控件u 模板加載 If objVoucherTemplate Is Nothing Then Set objVoucherTemplate = New UFVoucher

54、Server85.clsVoucherTemplate End If ' 創(chuàng)建單據(jù)數(shù)據(jù)源對(duì)象 Set oDataSource = CreateObject("IDataSource.DefaultDataSource") If oDataSource Is Nothing Then MsgBox “創(chuàng)建單據(jù)數(shù)據(jù)源對(duì)象" End If Set oDataSource.SetLogin = g_oLogin Set Voucher.SetDataSource = oDataSource Call SetTemplateData Voucher.LoginObj

55、 = g_oLogin Voucher.InitDataSource實(shí)例代碼SetTemplateData為加載單據(jù)的主體代碼Private Sub SetTemplateData() Dim oRecordset As ADODB.Recordset '模版數(shù)據(jù)記錄集 Dim sAuth As String '字段權(quán)限字符串 Dim sNumber As String '單據(jù)編號(hào)規(guī)則字符串 Dim lColor1 As Long Dim lColor2 As Long On Error GoTo Err_Handler ' * ' * 得到單據(jù)模版數(shù)據(jù)

56、,根據(jù)指定的單據(jù)類型和模版ID取得單據(jù)數(shù)據(jù) Set oRecordset = objVoucherTemplate.GetTemplateData2(g_Conn, gstrCardNumber, m_strVT_ID) ' * 取得指定操作員對(duì)單前單據(jù)的權(quán)限,以便進(jìn)行權(quán)限控制 ' * 1) 每次換模版的時(shí)候需要應(yīng)用一次 sAuth = objVoucherTemplate.GetAuthString(g_oLogin, gstrCardNumber) ' * 取得 Rule 顏色 Call objVoucherTemplate.GetRuleColor( _ strC

57、onn:=g_Conn, _ clrDisable:=lColor1, _ clrNeed:=lColor2) ' * 設(shè)置單據(jù)控件不可見 Voucher.Visible = False ' * 1) SetVoucherAuth 方法必需在 SetTemplateData 方 Call Voucher.SetVoucherAuth(sAuth) Call Voucher.SetRuleColor(lColor1, lColor2) Call Voucher.SetTemplateData(oRecordset) Voucher.Visible = True ' * E

58、xit SubErr_Handler:End Subu 數(shù)據(jù)加載U8單據(jù)數(shù)據(jù)以XML的方式加載到單據(jù)控件上的,所以從數(shù)據(jù)庫(kù)取出數(shù)據(jù)后,需要轉(zhuǎn)化為XML后再加載到單據(jù)上sql = "select as editprop,* from Orderdetails where id=" & lngVoucherID If oRecordset Is Nothing Then Set oRecordset = CreateObject("ADODB.Recordset") If oRecordset.State = adStateOpen Then Cal

59、l oRecordset.Close Call oRecordset.Open(sql, g_Conn, adOpenStatic, adLockReadOnly) ' * 轉(zhuǎn)換成 XML 數(shù)據(jù)格式 oRecordset.Save odombody, adPersistXML Voucher.setVoucherDataXML odomhead, odombody5. 單據(jù)列表單據(jù)列表的開發(fā)主要涉及以下步驟:1、 預(yù)知單據(jù)列表欄目信息;單據(jù)列表欄目的預(yù)知,U8 UAP提供很簡(jiǎn)便的工具,UAP主界面上工具菜單中有欄目設(shè)計(jì)器:欄目設(shè)計(jì)器:在欄目設(shè)計(jì)器,可以對(duì)單據(jù)列表欄目進(jìn)行設(shè)計(jì),具體欄目如何設(shè)計(jì)參考U8開發(fā)技術(shù)文檔2、 代碼編寫加載單據(jù)列表欄目、加載單據(jù)列表數(shù)據(jù)、業(yè)務(wù)邏輯編寫使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論