ERP事业部咨询实施客户化开发部
Dim rsTemplate as Recordset Dim rsField as Recordset Set o = CreateObject(?UFVoucherServer85.clsVoucherTemplate‘) If o is nothing then Exit Sub ?如果创建对象Fail,则退出 Set rsTemplate = o.GetTemplateData2(数据库连接(Connection),单据 (CardNumber),模版号(VT_ID)) Set rsField = o.GetFixedData(数据库连接字符串(String),模版号(VT_ID)) Call voucher.PrintVoucherEx(rsTemplate, rsField, True) ‘显示打印对话框 End Sub ? ExportToFile方法
功能:导出单据数据到指定的文件 语法: Public Function ExportToFile(ByVal rsTemplate As Variant, ByVal rsField As Variant) As Boolean 参数:
rsTemplate [IN]记录集 单据模版数据(必需通过单据后台服务提供) rsField [IN]记录集 固定文本数据(必需通过单据后台服务提供) 返回值: 如果导出成功返回0,否则返回非0,具体的错误信息请参考打印控件(Error Table)。
举例: Public Sub Command1-_Click() Dim o as Object Dim rsTemplate as Recordset Dim rsField as Recordset Set o = CreateObject(?UFVoucherServer85.clsVoucherTemplate‘) If o is nothing then Exit Sub ‘如果创建对象Fail,则退出 Set rsTemplate = o.GetTemplateData2(数据库连接(Connection),单据 (CardNumber),模版号(VT_ID)) Set rsField = o.GetFixedData(数据库连接字符串(String),模版号(VT_ID)) Call voucher. ExportToFile(rsTemplate, rsField) ?导出文件 End Sub 单据控件的主要事件
? BodyBrowUser 当用户单击表体参照时产生此事件 语法:
Private Sub voucher_bodyBrowUser(ByVal row As Long,ByVal col As Long, sRet As variant,
referPara As UAPVoucherControl85.ReferParameter) End Sub 参数说明:
第26页 共 329页
ERP事业部咨询实施客户化开发部
参数 Voucher row col sRet
描述 单据控件名称 下标 下标(可用关键字) 返回值 ? BodyCellCheck BodyCellCheckWeb 表体数据发生改变,需要数据检查时发生此
事件
语法:
Private Sub Voucher_bodyCellCheck(RetValue As Variant, bChanged As Long,, ByVal r As Long, ByVal c As Long, referPara As UAPVoucherControl85.ReferParameter)
End Sub
参数说明:
参数 Voucher RetValue bChanged row col
? Click 当用户在单据控件上单击时产生此事件
? DblClick 当用户在单据控件上双击时产生此事件
? KeyDown , KeyPress, KeyUp, MouseDown, MouseMove, MouseUp 鼠标及键盘响应事件
? BillNumberChecksucceed 在设置单据编号规则后,如果当前单据满足了编号规则
后,将会激活当前事件
? AddNewLineEvent 当调用AddLine方法时,该事件将会产生
描述 单据控件名称 返回当前单元的值 数据检测是否启动 下标 下标(可用关键字) 1.2.1.4 应用案例
表头附件
1) Toolbar 按钮 附件
第27页 共 329页
ERP事业部咨询实施客户化开发部
按钮响应事件代码 Me.ctlVoucher1.SelectFile() 需要根据自己单据的状态设置按钮的状态 2) 单据保存部分 在原来的单据内容保存完成以后,事务提交以前增减保存附件的代码 Dim cnn As New ADODB.Connection cnn.Open m_strConnect Dim ErrDesc As String Dim blnsaveAcc As Boolean Dim strXml As String strXml = ctlVoucher1.GetAccessoriesInfo(ErrDesc) If ErrDesc <> \ MsgBox ErrDesc End If Dim m_oServer as UFVoucherServer85.clsVoucherTemplate Dim objDoc As New MSXML2.DOMDocument30 Call objDoc.loadXML(strXml) Call objDoc.documentElement.setAttribute(\oucherTypeID\ Call objDoc.documentElement.setAttribute(\oucherID\ strXml = objDoc.xml set objDoc = nothing Call m_oServer.SaveAccessories(strXml, cnn, ErrDesc) If ErrDesc <> \ MsgBox ErrDesc End If 备注:
VoucherTypeID 如果没有更改(即和单据模版一致)也可以不用设置
VoucherID 表示单据主键值的value,可以是组合 2005001{#}003 ,顺序和前面的vchtblPrimarykeyNames 顺序一致
如果是单据删除 , Call m_oServer.SaveAccessories(strXml, cnn, ErrDesc) 删除附件
strXML = \oucherTypeID='88' VoucherID='001' />\
3) 初始化模版代码部分 '设置单据数据源对象
单据数据源对象是单据的数据访问组件,web版使用的时候需要自己实现这个接口
第28页 共 329页
ERP事业部咨询实施客户化开发部
Dim m_oDataSource As Object Set m_oDataSource = CreateObject(\ If m_oDataSource Is Nothing Then MsgBox \设置单据数据源对象Fail!\渣昫\ End If m_oDataSource.SetLogin m_oLogin Set ctlVoucher1.SetDataSource = m_oDataSource 表体附件
1:890单据格式设计中可以设置字段的参照类型,需要指定一个文本字段的参照类型为附件
2:需要配置应用服务器的文件服务器设置。
3:如果需要显示的支持该功能,需要在单据模板中增加一条文本类型,参照类型为附
件的记录
表体定位
1:Toolbar 按钮 定位 2:按钮响应事件代码 ctlVoucher1.ShowFindDlg
需要根据自己单据的状态设置按钮的状态
表体固定行
单据控件设计态时设置ShowFIxColer =true
表体排序
单据控件设计态时设置ShowSorter =true
表体汇总
1:Toolbar 增加汇总
第29页 共 329页
ERP事业部咨询实施客户化开发部
2: 按钮响应事件代码
Call ctlVoucher1.SHowAggregateSetupDlg
需要根据自己单据的状态设置按钮的状态,只有在查看状态可用。
表体批改
Me.ctlVoucher1. ShowBatchModify ()
单据内容模板和草稿
单据内容模板和草稿主要有以下功能:
1:用户可以把已有的单据保存为模板,以利于下次内容差不多的情况下,可以快速使用模板,简单修改就可以了,类似于单据复制,但是单据复制一般是完整的单据表头、或者表体、或者整单,模板可以是任意的部分内容,类似于缺省值的功能。
2:用户可以把录入一部分的单据暂存为草稿,下次有时间的时候接着录入。
示例:
1、声明模板助手对象
Private WithEvents m_oHelper As Helper '单据助手对象 2、响应打开模板或者草稿的事件
Private Sub m_oHelper_LoadFromTemplate(ByVal enumType As VoucherHelper.TemplateModes, ByVal TemplateID As String, oDomHead As Variant, oDomBody As Variant, oOtherDom As Variant)
m_sCurrentDraftID = TemplateID
ctlVoucher1.setVoucherDataXML oDomHead, oDomBody End Sub
3、增加六个按钮
Case 5 '保存为草稿
SaveAsDraft DraftMode Case 6 '从草稿打开
OpenFromDraft DraftMode Case 7
m_oHelper.DeleteDraftByID DraftMode, m_sCurrentDraftID Case 8 '保存为模板
SaveAsDraft TemplateMode Case 9 '从模板打开
OpenFromDraft TemplateMode
Case 10 删除草稿,用于草稿单据正式保存以后
m_oHelper.DeleteDraftByID TemplateMode, m_sCurrentDraftID Case 11 草稿或者模板管理
m_oHelper.DraftsManagement TemplateMode, m_bill(cboBill.ListIndex)
第30页 共 329页