行开插件开发实例供应商资质管理_第1页
行开插件开发实例供应商资质管理_第2页
行开插件开发实例供应商资质管理_第3页
行开插件开发实例供应商资质管理_第4页
行开插件开发实例供应商资质管理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、行开插件开发实例-供应商资质管理摘要U8系列产品提供了许多的二次开发接口,用户可在U8平台充分利用二次开发技术及接口开发出符合特定业务需求的插件,以更好的满足用户的个性化需求。本文将以供应商资质管理为实例介绍如何利用U8平台提供的二次开发技术及接口实现插件式的二次开发,并应用于U8标准流程的控制。目标本文通过一个实例分步介绍了如何利用U8提供的开发技术及接口实现供应商资质管理。通过本文的学习,开发人员可掌握U8中权限管理、菜单挂接、工具条、单据开发、单据事件接口等相关技术,并能按步骤开发出类似的插件。实例简介供应商资质管理介绍:建立供应商资质档案,菜单挂接:供应链资质管理供应商资质业务处理供应

2、商资质认证 供应链采购管理供应商管理供应商资质认证列表在审核采购订单时,判断订单供应商是否有对应资质认证,只有供应商存在对应资质认证的前提下才能成功审核采购订单,否则提示该供应商无资质认证,审核失败。业务流程如下图:开发实现步骤1. 菜单挂接和权限U8的菜单都是通过脚本,将菜单的数据,包括菜单层级关系预制到ufdata库的ua_menu表,下面将以“供应商资质”为例介绍一下如何插入菜单节点:如下图:首先,需要了解一下UA_menu 表的结构:字段名数据类型含义AutoIDuid自动编号cMenu_IdString菜单编号,自动产生,不可修改cMenu_NameString菜单名称,输入cMen

3、u_EngString程序类型,可忽略cSub_IdString模块标识,程序处理IGradeInt16级次,根据当前选中菜单程序自动处理cSupMenu_IdString上级菜单编号,根据当前选中菜单程序自动处理bEndGradeBoolean是否末级,输入,cAuth_IdString功能权限编号,程序内部处理,控制权限时有效(cAuth_Id= cMenu_Id)。iOrderInt32显示顺序号,程序处理iImgIndexInt32图标索引号,暂不用ParamtersString参数,输入,只有末级菜单才允许录入参数DependsString依赖 FlagInt标志按照层级关系,首先在

4、供应链下面插入资质管理的顶级菜单节点: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','资质管理',Null,'HH',1,'SCMG','0',Null,-9999,1,Null,'HH',Null)然后再分别插入“供应商资质”节点和末级节点“供应商资

5、质认证”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','供应商资质',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','供应商资质认证',Null,'HH',4,'EFZZGL0101','1','EFZZGL01010101',1000,1,Null,'HH',Null)做完上述的菜单插入后,就要为各个菜单关联上权限,这样才可以在系

7、统内对菜单进行权限控制,U8功能权限信息也是通过预制数据库数据实现,预制权限是对ua_auth_base表进行操作:见上图,这里需要说明一下权限与菜单的差异:权限节点,某模块的顶级节点,在U8拥有该模块产品号的前提下是不需要预制,例如上图资质管理节点,在权限表内是找不到该权限节点,但是,如果U8未包含的产品,就必须预制权限表,预制的例子如下:首先预制权限主表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) 然后预制权限语言信息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','供应商资质认证')注:预制菜单时,可以使用先删除后插入的方式进行预制,预制权限怎不允许这种方式,所以在例子语句中,都添加了判断的SQL语句2. 预制门户按钮(U8 V11.0以下版本不需要做这一步)下面先对U8门户按钮做一下简单介绍:按钮插入步骤1、插入窗体信息主表AA_Forms_base与窗体信息语言AA_Forms_lang,插入时可采用先删除后插入的模式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'供应商资质',N'U870',0)Insert Into AA_Forms_lang(cFormCode,localeid,cFormCaption

12、,cFormDesc,cSubID,cProjectNO) Values (N'HH_Voucher_EFZZGL01',N'zh-CN',N'供应商资质',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,下面也为大家简单介绍一下U8V11.0以前版本预制按钮的方式,请看一下例子代码:初始化微软工具栏工具栏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工具栏进行绑定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方法的第一参数,传入就是该按钮所使用的图标,图标文件可以在U8SOFTicons中寻找到。3. 预制单据模板信息U8单据模板信息,同样是将模板信息存储在数据库当中,主要涉及以下几个表:Vouchers_base、Vouchers_lang、VoucherTemplates_Base、VoucherTemplates_lang、VoucherItems_Base、Voucheritems_PRN_base、VoucherItems_PRN_Lang预制数据时需要按照顺序预制这几张表。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','供应商资质',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','供应商资质','资质管理')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','供应商资质显示模版','供应商资质','Tahoma,15,0,0,1','第%p页共%P页','','',

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','编号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','编号id',Null,Null,'Tahoma,9,0,0,1')4. 代码开发预制完上述菜单、权限、按钮、单据模板信息后,下面要进行的就是代码开发。代码开发,主要就是三个方面的工作:(1) 门户登录,既在门户中双击插入

44、的菜单,登录到程序界面;(2) 完成对门户按钮预制信息,单据模板预制信息的加载(3) 功能逻辑实现在本文档,主要讲一下第一点与第二点,第三点由于程序各异,就不多加说明Ø 门户登录:组件引用:在编写门户登录时,需要在VB工程内增加一个接口类,接口类主要对门户登录接口的一个实现,并同时从门户中获取门户的登录业务对象Business、登录组件Login以及数据库连接对象,为后续代码编写提供基础,“供应商资质”的接口类为clsProductFacade,下列是实例代码: 获取门户的业务对象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对象。End Property门户登录时运行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对象 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、;来表示,既防止重复,又清晰易懂。 Call g_obusiness.ShowForm(frmMain, "DP", "f frmMain_key4", False, True, vfd) Else frmMain.Show frmMain.ZOrder 0 End IfEnd Function而编写这个类又怎么跟门户挂接呢,此时在数据的UFSYSTEM库的ua_idt这个表需要预知一条数据,将菜单ID(cMenu_id)与接口类关联,例如“供应商资质”工程名叫EFZZGLMain,接口类叫clsProductFacade,则预知到ua_idt这个表的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的按钮,需要同时在窗体中增加微软的toolbar控件和U8的uftoolbar控件按钮加载一般在窗体的Form_laod事件中进行: 方法说明 Settoolbarfromdata(

52、oMSToolBar As Object, CN As Connection, oLogin As Object, sFormKey As String, sSubKey As String, oVouchers As Object) oMSToolBar:微软toolbar控件名称, CN数据连接对象, ologin登陆组件,即u8login.clslogin ,sFormKey 窗体关键字,sSubKey 子产品号,oVouchers 窗体所使用的单据控件UFToolbar1.Settoolbarfromdata tbrvoucher, DBConn, m_Login, formKey,

53、"HH"UFToolbar1.SetToolbar tbrvoucherCall UFToolbar1.SetFormInfo(Me.Voucher, Me)代码中Settoolbarfromdata方法是从数据中获取上述预制的按钮信息UFToolbar1.SetToolbar tbrvoucher是将Toolbar与uftoolbar进行绑定Ø 单据模板、单据数据加载方法:需要引用单据服务与单据控件u 模板加载 If objVoucherTemplate Is Nothing Then Set objVoucherTemplate = New UFVoucher

54、Server85.clsVoucherTemplate End If ' 创建单据数据源对象 Set oDataSource = CreateObject("IDataSource.DefaultDataSource") If oDataSource Is Nothing Then MsgBox “创建单据数据源对象" End If Set oDataSource.SetLogin = g_oLogin Set Voucher.SetDataSource = oDataSource Call SetTemplateData Voucher.LoginObj

55、 = g_oLogin Voucher.InitDataSource实例代码SetTemplateData为加载单据的主体代码Private Sub SetTemplateData() Dim oRecordset As ADODB.Recordset '模版数据记录集 Dim sAuth As String '字段权限字符串 Dim sNumber As String '单据编号规则字符串 Dim lColor1 As Long Dim lColor2 As Long On Error GoTo Err_Handler ' * ' * 得到单据模版数据

56、,根据指定的单据类型和模版ID取得单据数据 Set oRecordset = objVoucherTemplate.GetTemplateData2(g_Conn, gstrCardNumber, m_strVT_ID) ' * 取得指定操作员对单前单据的权限,以便进行权限控制 ' * 1) 每次换模版的时候需要应用一次 sAuth = objVoucherTemplate.GetAuthString(g_oLogin, gstrCardNumber) ' * 取得 Rule 颜色 Call objVoucherTemplate.GetRuleColor( _ strC

57、onn:=g_Conn, _ clrDisable:=lColor1, _ clrNeed:=lColor2) ' * 设置单据控件不可见 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 数据加载U8单据数据以XML的方式加载到单据控件上的,所以从数据库取出数据后,需要转化为XML后再加载到单据上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) ' * 转换成 XML 数据格式 oRecordset.Save odombody, adPersistXML Voucher.setVoucherDataXML odomhead, odombody5. 单据列表单据列表的开发主要涉及以下步骤:1、 预知单据列表栏目信息;单据列表栏目的预知,U8 UAP提供很简便的工具,UAP主界面上工具菜单中有栏目设计器:栏目设计器:在栏目设计器,可以对单据列表栏目进行设计,具体栏目如何设计参考U8开发技术文档2、 代码编写加载单据列表栏目、加载单据列表数据、业务逻辑编写使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论