收藏 分销(赏)

用友U872参照Edit编程指南V872.doc

上传人:pc****0 文档编号:7771477 上传时间:2025-01-16 格式:DOC 页数:41 大小:629KB 下载积分:10 金币
下载 相关 举报
用友U872参照Edit编程指南V872.doc_第1页
第1页 / 共41页
用友U872参照Edit编程指南V872.doc_第2页
第2页 / 共41页


点击查看更多>>
资源描述
参照Edit编程指南 参照Edit编程指南(V872) 下面所有参照ID只用来测试使用,可能不作最终的参照ID 1、控件引用 2、使用示例 2.1 元素据定义参照 属性设置 RefEdit.RefType= Reftypes.RefArchive 例如: 示例1:直接调用存货参照 调用存货初始化(窗体参照): EdtArchive.RefType=RefArchive Call Me.EdtArchive.Init(g_oLogin, "Inventory_AA", False, "") 示例2:直接调用仓库档案参照 调用仓库初始化(列表参照) EdtArchive.RefType=RefArchive Call Me.EdtArchive.Init(g_oLogin, "warehouse_AA",False, "") 其中参数值"Inventory","warehouse"均表示参照ID, 示例3:程序动态设置部分元素据定义示例: EdtArchive.RefType=RefArchive Call Me.EdtArchive.Init(g_oLogin, "Inventory_AA", False, "") sMetaXML = "<Ref><RefSet bMultiSel='0' iShowStyle='1' /></Ref>" Call EdtArchiveUser.Init(g_oLogin, "Inventory", False, sMetaXML) 其参照格式元素据定义:参照元素据定义.xml 2.2 枚举参照 属性设置: EdtRefEnum.RefType = Reftypes.RefEnumType 2.2.1、调用类型1(完整型) ( 其XML格式定义: 参照枚举元素据参数定义.xml) 例如: Dim sXml As String sXml = "<Ref> " & _ " <RefSet cRetFld='code' cCheckFlds='code,name' cShowFld='name'>" & _ " </RefSet>" & _ " <DataSrc>" & _ " <DataGrid provider='XML' cDataSrcID='' >" & _ " <Item code='0' name='无换算率'/>" & _ " <Item code='1' name='固定换算率'/>" & _ " <Item code='2' name='浮动换算率'/>" & _ " </DataGrid>" & _ " </DataSrc>" & _ "<RefColSet>" & _ "<U8ColSet>" & _ " <Data>" & _ " <ColSet cFld='code' bDisp='1' cCaption='' iColWidth='0' iAlign='1'/>" & _ "<ColSet cFld='name' bDisp='1' cCaption='' iColWidth='1500' iAlign='1'/>" & _ " </Data>" & _ "</U8ColSet>" & _ "</RefColSet>" & _ "</Ref>" EdtRefEnum.RefType = Reftypes.EnumType Call Me.EdtRefEnum.Init(g_oLogin, sXml, False, "") 2.2.2、调用类型2(简约型) 格式定义:同UFComboBox控件的SetEnumMapString("") 格式保持一致 例如: Dim strEnum As String strEnum = "1{#}0{##}是{#}否" Call Me.EdtRefEnum.Init(g_oLogin, strEnum, False, "") 2.2.3、调用类型3(数据库型) 应用场景:对于参照的枚举数据需要从AA_Enum中读取; 格式定义:( 其XML格式定义: 参照枚举元素据参数定义.xml) 例如(示例格式为XML简写格式): Dim sXML As String sXML = "<Ref><DataSrc>" & _ " <DataGrid provider='DB' cEnumTypeID='AA.ARCHIVE.boolean' >" & _ "</DataGrid>" & _ "</DataSrc></Ref>" Call RefEditEnumDB.Init(g_oLogin, sXML, False, "") 2.3 日历调用 直接设置属性: EdtDate.RefType = Reftypes.RefDate 2.4 计算器调用 直接设置属性: EdtCal.RefType = Reftypes.RefCalculator 2.5 自定义数据参照调用 (推荐用2.8 用户自定义数据源参照) 属性设置: EdtArchive.RefType = RefTypes.RefUserDefine 元素据定义、显示数据完全有调用者实现 示例1:树表结构窗体参照 示例2:表结构窗体参照 示例3:列表参照 下面将三个示例一起实现 第一步:初始化: Call RefUserDefineEdit.Init(Me, "inventory") Call RefUserDefineSimpleEdit.Init(Me, "warehouse") Call RefUserDefineSimpleEdit_List.Init(Me, "warehouse_list") 第二步:实现获取元素据方法 '------------------------------------------------ '功能:实现自定义参照的获取元素据 '------------------------------------------------ Public Sub GetSrvRefMeta(sRefID As String, sXML As String, MetaXML As String, sMsg As String, bFlag As Boolean) Select Case LCase(sRefID) Case "inventory" MetaXML = "<Ref cRefName='存货自定义参照' cEntityKeyFld='cInvCode' cEntityNameFld='cInvName'> " & _ " <RefSet cCheckFlds='cInvCode,cInvName' iFilterStyle='1'>" & _ " </RefSet>" & _ "<DataSrc>" & _ "<DataClass cDataSrcID='InventoryClass' cRefClsName='存货分类' bRule='1' clsCode='cInvCCode' clsName='cInvCName' sortField='cInvCCode'/>" & _ "<DataGrid cDataSrcID='Inventory' clsCode='cInvCCode'/>" & _ "</DataSrc>" & _ "<RefColSet><U8ColSet><Data>" & _ " <ColSet cFld='cInvCode' bDisp='1' cCaption='存货编码' iColWidth='1000' iAlign='1'/>" & _ " <ColSet cFld='cInvname' bDisp='1' cCaption='存货名称' iColWidth='1500' iAlign='1'/>" & _ " </Data></U8ColSet></RefColSet>" & _ "</Ref>" Case "warehouse" MetaXML = "<Ref cRefName='仓库自定义参照' cEntityKeyFld='cWhcode' cEntityNameFld='cWhName' > " & _ " <RefSet cCheckFlds='cWhcode,cWhName' iShowStyle='0' iFilterStyle='1'>" & _ " </RefSet>" & _ "<DataSrc>" & _ "</DataSrc>" & _ "<RefColSet><U8ColSet><Data>" & _ " <ColSet cFld='cWhcode' bDisp='1' cCaption='仓库编码' iColWidth='1000' iAlign='1'/>" & _ " <ColSet cFld='cWhName' bDisp='1' cCaption='仓库名称' iColWidth='1500' iAlign='1'/>" & _ " </Data></U8ColSet></RefColSet>" & _ "</Ref>" Case "warehouse_list" MetaXML = "<Ref cRefName='仓库自定义参照' cEntityKeyFld='cWhcode' cEntityNameFld='cWhName'> " & _ " <RefSet cCheckFlds='cWhcode,cWhName' iShowStyle='1' iFilterStyle='1'>" & _ " </RefSet>" & _ "<DataSrc>" & _ "</DataSrc>" & _ "<RefColSet><U8ColSet><Data>" & _ " <ColSet cFld='cWhcode' bDisp='1' cCaption='仓库编码' iColWidth='1000' iAlign='1'/>" & _ " <ColSet cFld='cWhName' bDisp='1' cCaption='仓库名称' iColWidth='1500' iAlign='1'/>" & _ " </Data></U8ColSet></RefColSet>" & _ "</Ref>" End Select End Sub 第三步:实现获取数据方法 Public Sub GetSrvData(sRefID As String, sXML As String, RstClass As ADODB.Recordset, RstGrid As ADODB.Recordset, RstColSet As ADODB.Recordset, sMsg As String, bFlag As Boolean) If bLogin = False Then MsgBox "Login first!" Exit Sub End If Dim cnn As New ADODB.Connection Dim sWhereSql As String cnn.ConnectionString = g_oLogin.ufdbname cnn.Open bFlag = True If Len(sXML) > 0 Then Dim dom As New DOMDocument Call dom.loadXML(sXML) sWhereSql = dom.documentElement.selectSingleNode("filtersql").Text If Len(sWhereSql) > 0 Then sWhereSql = " where " + sWhereSql End If End If Select Case LCase(sRefID) Case "inventory" bFlag = GetRst(cnn, "select cast(0 as bit) as bRefSelectColumn cInvCCode,cInvCName from inventoryclass", RstClass, sMsg) If bFlag = True Then bFlag = GetRst(cnn, "select cInvCode,cInvName from Inventory" + sWhereSql, RstGrid, sMsg) End If Case "warehouse", "warehouse_list" bFlag = GetRst(cnn, "select cast(0 as bit) as bRefSelectColumn cWhcode,cWhName from warehouse" + sWhereSql, RstGrid, sMsg) End Select cnn.Close Set cnn = Nothing End Sub 2.6 完全自定义 设置属性: EdtArchive.RefType = RefTypes.RefUserBrowse 自己实现控件消息 EditArchive_UserBrowse(sXML) 2.7 RichText编辑框 直接设置属性: EdtDate.RefType = Reftypes. RefRichText 2.8 附件 设置属性: EdtArchive.RefType = RefTypes. RefAccessories 自己实现控件消息 EditArchive_UserBrowse(sXML) 2.8 用户自定义数据源参照 设置属性: EdtArchive. RefType=RefTypes.RefUserDataSource 参照控件调用示例: Dim sMetaXML As String sMetaXML = "<Ref cRefName='Meta数据库自定义数据源参照示例' cEntityKeyFld='cRefID' cEntityNameFld='cRefName'> " & _ " <RefSet cCheckFlds='cRefID,cRefName' iFilterStyle='1'>" & _ " </RefSet>" & _ "<DataSrc>" & _ "<DataGrid cUserDataSrcQrySelectPart='select cRefID,cRefName from UFMeta_001..refdesign' cUserDataSrcQryOrderPart='Order by cRefID ASC'/>" & _ "</DataSrc>" & _ "<RefColSet><U8ColSet><Data>" & _ " <ColSet cFld='cRefID' bDisp='1' cCaption='参照编码' iColWidth='2000' iAlign='1'/>" & _ " <ColSet cFld='cRefName' bDisp='1' cCaption='参照名称' iColWidth='3000' iAlign='1'/>" & _ " </Data></U8ColSet></RefColSet>" & _ "</Ref>" EdtRefUserDataSource.RefType = RefTypes.RefUserDataSource Call EdtRefUserDataSource.Init(g_oLogin, "", False, sMetaXML) 参照服务调用示例: Dim sMetaXML As String sMetaXML = "<Ref cRefName='存货自定义数据源参照' cEntityKeyFld='cInvCode' cEntityNameFld='cInvName'> " & _ " <RefSet cCheckFlds='cInvCode,cInvName' iFilterStyle='1'>" & _ " </RefSet>" & _ "<DataSrc>" & _ "<DataClass cDataSrcID='InventoryClass' cRefClsName='存货分类' bRule='1' clsCode='cInvCCode' clsName='cInvCName' cUserDataSrcQrySelectPart='select cInvCCode,cInvCName from InventoryClass' cUserDataSrcQryWherePart='' cUserDataSrcQryOrderPart='Order by cInvCCode ASC'/>" & _ "<DataGrid cDataSrcID='Inventory' clsCode='cInvCCode' cUserDataSrcQrySelectPart='select cInvCode,cInvName from Inventory' cUserDataSrcQryWherePart='' cUserDataSrcQryOrderPart='Order by cInvCode ASC'/>" & _ "</DataSrc>" & _ "<RefColSet><U8ColSet><Data>" & _ " <ColSet cFld='cInvCode' bDisp='1' cCaption='存货编码' iColWidth='2000' iAlign='1'/>" & _ " <ColSet cFld='cInvname' bDisp='1' cCaption='存货名称' iColWidth='3000' iAlign='1'/>" & _ " </Data></U8ColSet></RefColSet>" & _ "</Ref>" Dim obj As New U8RefService.IService obj.RefType = RefUserDataSource obj.FillText = EdtServiceRefUserDataSource.Text obj.RefID = "" obj.MetaXML = sMetaXML Dim retRstClass As ADODB.Recordset, retRstGrid As ADODB.Recordset Dim sErrMsg As String If obj.ShowRef(g_oLogin, retRstClass, retRstGrid, sErrMsg) = False Then MsgBox sErrMsg Else If Not (retRstGrid Is Nothing) Then MsgBox retRstGrid.Fields(1).Value End If End If 2.9 Web参照调用 Web参照调用和C/S调用基本相同:其加载步骤如下: 1、加载RefEdit控件到Web页面 2、设置属性 3、初始化Init接口 4、所有的关于URL传入一定为URL虚拟目录的根目录 配置文件: 1、注册组件:U8WebRefS.dll 2、在虚拟目录的根目录下建立目录名为U8BaseService,然后将文件U8WebRefS.ASP 放入此目录即可 示例1:调用存货档案: 1、设置属性: <object classid="clsid:0E2FDA55-039D-4774-96FB-252507AD2544" id="EdtArchive" width="280" height="19"> <param name="RefType" value="1"> </object> 2、初始化: 在初始化时调用方法: call EdtArchive.init(Nothing, Document.URL & "?refid=inventory_AA",true,"") 示例2:调用枚举 1、设置属性: <object classid="clsid:0E2FDA55-039D-4774-96FB-252507AD2544" id="EdtRefEnumSimple" width="280" height="19"> <param name="RefType" value="4"> </object> 2、初始化: 在初始化时调用方法: call EdtRefEnumSimple.Init (Nothing,Document.URL & "?refid= 0{#}1{##}否{#}是", true, "") 示例3:调用日历: 引用控件后,直接设置属性即可 <object classid="clsid:0E2FDA55-039D-4774-96FB-252507AD2544" id="EdtRefDate" width="280" height="19"> <param name="RefType" value="2"> </object> 示例4:调用计算器 引用控件后,直接设置属性即可 <object classid="clsid:0E2FDA55-039D-4774-96FB-252507AD2544" id="EdtRefCalculator" width="280" height="19"> <param name="RefType" value="3"> </object> 3、属性描述: AutoHideCmd: 是否自动隐藏Button按钮 AutoDisplayText: 设置参照是否自动检查赋值Text属性是否正确,并显示相关信息,默认为true,即当RefType为RefArchive、RefUserDefine 、RefEnumType时,控件自动根据参照定义查询和显示相关内容 AutoExchangeText: 是否自动切换Text与DisplayText值的显示,默认为true,即当RefType为RefArchive、RefUserDefine类型时,且AutoExchangeText属性为true时,则若控件获得焦点,则显示Text内容,若离开焦点时,则显示DisplayText内容 AutoFormatDouble 是否自动格式浮点数,默认为true,即格式化 注:日期强制格式化 CancelMatchRefWnd: 是否取消因模糊匹配到多项记录而弹出参照窗口,默认为false CheckMode 获取参照检查模式 Public Enum CheckModes ' 检查数据模式 CheckNone = -1 BtnRefClick = 0 '0:点击参照Btn的Click事件; InputText = 1 '1:填写的的数据,然后看看是否唯一; SetText = 2 '2:设置属性Text后检查 End Enum CheckedValid 是否检查完毕有效性,运行时只读 EnumTypeString: 枚举字符串,与属性IsEnum一起使用 使用示例: EdtEnumTypeString.RefType = RefEnumType EdtEnumTypeString.EnumTypeString = "0{#}1{##}否{#}是" EdtEnumTypeString.IsEnum = True EdtEnumTypeString.Text = "0" IsEditArch: 是否编辑档案,默认为true。 有些情况可能因为功能互斥、不能实现循环调用,需要屏蔽档案的编辑功能 IsEnum: 是否为枚举参照 IsUserDefArch: 是否是自定义项参照,默认为false LanguageID: 多语属性 其枚举内容如下: zh_CN = 0 zh_TW = 1 en_US = 2 对应属性设置,若在给控件初始化时,传给Login对象的,可以不用设置该属性,控件根据Login对象自动获取多语属性,对应没有传入Login对象,若需要控制多语, MessageStyle: 数据错误提示处理方式 Public Enum MessageStyles '数据错误提示处理方式 ShowErrorTip = 0 '通过tip显示消息,默认方式 HideErrorTip = 1 '隐藏tip显示消息 ShowErrorMsg = 2 '通过Msg弹出消息 End Enum 则必须设置该属性 MultiRetStyle: 多选时多值返回风格 其枚举: RetSingle = 0 :表示只返回第一个数据集的相关内容,即按照参照定义返回内容,和单选返回处理方式是一致的; RetMultiCode = 1 :表示Text=“”,DisplayText=多选的编码,之间用“ ; ”(即:空格+英文分号+空格) RetMultiName = 2 :表示Text=“”,DisplayText多选的名称,之间用“ ; ”(即:空格+英文分号+空格) MultiTextElement: 对于多选内容,需要返回所有的返回字段和显示字段的内容,且格式为XML的格式, 只读属性 其格式为: <data cRetFld="cInvcode" cShowFld="cInvCode,cInvName"> <Item value="201" DisplayText="201 - sdfas201"/> <Item value="204" DisplayText="204 - sdfas204"/> <Item value="208" DisplayText="208 - sdfas208"/> <Item value="211" DisplayText="211 - sdfas211"/> <Item value="213" DisplayText="213 - sdfas213"/> </data> MultiTextXML: 多选赋值属性 只写属性 示例: Dim sXML As String sXML = "<data cRetFld='cInvCode' cShowFld='cInvName'>" sXML = sXML + "<Item value='10001' DisplayText='fuziname10001'/>" sXML = sXML + "<Item value='10004' DisplayText='fuziname10004'/>" sXML = sXML + "<Item value='10010' DisplayText='fuziname10010'/>" sXML = sXML + "</data>" EdtArchive.MultiRetStyle = RetMultiName EdtArchive.MultiTextXML = sXML DisplayText: 用来显示的内容,对于除参照属性为RefArchive、RefEnumType,RefUserDefine外,其Text和DisplayText默认是一致的 RefType: 设置参照类型,目前包括参照、枚举、日历、计算器、无(等同Edit) RefNone = 0 没有参照,等同Edit RefArchive = 1 参照档案,必须通过预制参照元素据方可使用 RefDate = 2 参照日历档案 RefCalculator = 3 参照计算器 RefEnumType = 4 参照枚举 RefUserDefine = 5 用户实现元素据和数据 RefUserBrowse = 6 用户自己实现参照 RefFile = 7 参照文件 RefRichText=8 多行编辑框,类似记事本 RememberLastRst: 是否选中上次选择的记录,即第一次参照返回数据后,再次点击参照,若RememberLastRst=true,则系统自动选中上次记录 RetStyle: 返回方式 Public Enum RetStyles UnDefine = -1 -1、未定义 (默认) Code_CodeName = 0 0、返回主键,显示主键+描述 Code_Name = 1 1、返回主键,显示描述(代码中修改) Code_Code = 2 2、返回主键,显示主键(代码中修改) Name_Name = 3 3、返回描述,显示描述(代码中修改) End Enum Text: 用来保存到数据库的值,设置该属性时,对应参照、自定义参照,且属性AutoDisplayText=true,将会查询数据库内容,根据参照元素定义显示DisplayText 注意1:对于参照属性为RefArchive、RefUserDefine,其控件获得焦点将显示Text内容,若离开焦点,将显示DisplayText内容 注意2:对于参照属性为RefArchive,若m_AutoDisplayText = False,输入一个值,或者m_AutoDisplayText = true输入一个非法值时,此时真正的Text内容为空,但为了方便业务组获取Text内容,此时Text内容为用户输入的内容。 Valid: 表示当前的内容是否合法 其它属性 与Edit相同,此处不再列举 4、事件 1、值改变消息 TextChange 消息定义:Public Event TextChange () 该消息表示从进入RefEdit控件开始到离开RefEdit控件之后,若参数值发生改变,将触发该消息,在中间过程变化将不触发该消息 2、点击参照获取过滤消息和是否取消参照 BeforeBrowse (1)、限C/S使用消息定义: Public Event BeforeBrowse(ByRef sXMLFilterPara As String, sSQL As String,ByRef Cancel As Boolean) (2)、限Web使用消息定义: Public Event BeforeBrowseWeb (ByRef sXMLFilterPara As Variant, ByRef sSQL As Variant, ByRef Cancel As Variant) 参数说明: sXMLFilter:XML格式条件 sSQL :过滤条件串 其格式为: sXMLFilter = "<RefConditions>" sXMLFilter = sXMLFilter + "<Condition paramName='@cDepCode' paramValue='001' />" sXMLFilter = sXMLFilter + "</RefConditions>" Cancel:当赋值为True时,表示此时不用参照 注意:参数名paramName严格区分大小写,即示例中@cDepCode是严格区分大小写 3、数据填充消息 AfterBrowse 消息定义:Public Event AfterBrowse (ByRef RstClass As ADODB.Recordset, ByRef RstGrid As ADODB.Recordset, ByRef sXML As String) 该消息表示在弹出参照,并选择完成数据后,程序员可能需要填写其他数据,其中参数含义: RstClass: 对于有分类的参照,若操作员选择分类后,将返回选择的分类记录 RstGrid:返回列表的数据 sXML: 预留参数 注意:参照有可能没有参照回数据,但是也触发该消息 4、激活保存按钮消息 ActiveSaveBtn 消息定义:Public Event ActiveSaveBtn() 对于点击参照按钮、或
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服