|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
不详细说明了,直接看代码,不能上传压缩文件真是坑爹。。。
'添加对U8API框架类库引用(在U8SOFT\UFMOM\U8APIFramework目录):
'UFIDA.U8.MomServiceCommon.tlb
'UFIDA.U8.U8MOMAPIFramework.tlb
'UFIDA.U8.U8APIFramework.tlb
'添加Microsoft XML v3.0引用
Option Explicit
Public Sub CallU8Api()
On Error GoTo ErrHandler
'第一步:构造u8login对象并登陆
'如果当前环境中有login对象则可以省去第一步
'第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
Dim u8EnvCtx As New U8EnvContext
Set u8EnvCtx.U8Login = g_objLogin 'ologin
'第三步:构造ApiBroker对象,调用Connect,传入Api的地址标识(Url),传入上下文
Dim u8apiBroker As New U8ApiComBroker
u8apiBroker.Connect "U8API/ProductIn/Add", u8EnvCtx
'第四步:API参数赋值
'给普通参数sVouchType赋值。此参数的数据类型为String,此参数按值传递,表示单据类型:10
u8apiBroker.AssignNormalValue "sVouchType", "10" '参数类型:String
'给BO表头参数DomHead赋值,此BO参数的业务类型为产成品入库单,属表头参数。BO参数均按引用传递
'方法二是构造BusinessObject对象,具体方法如下:
Dim DomHead As New BusinessObject
Set DomHead = u8apiBroker.GetBoParam("DomHead")
DomHead.RowCount = 1 '设置BO对象(表头)行数,只能为一行
'给BO对象(表头)的字段赋值,值可以是真实类型,也可以是无类型字符串
'****************************** 以下是必输字段 *****************************
DomHead(0).setValue "id", "8888" '主关键字段,Integer类型
DomHead(0).setValue "ccode", "8888" '入库单号,String类型
' Dim ddate As Date
' ddate = CDate("2010-02-01")
DomHead(0).setValue "ddate", "2010-02-01" '入库日期,Date类型
DomHead(0).setValue "cwhname", "成品库" '仓库,String类型
'***************************** 以下是非必输字段 ****************************
DomHead(0).setValue "iproorderid", "0" '生产订单ID,String类型
DomHead(0).setValue "cmaker", "demo" '制单人,String类型
DomHead(0).setValue "csource", "1" '单据来源,Integer类型 库存
DomHead(0).setValue "cvouchtype", "10" '单据类型,String类型
DomHead(0).setValue "cwhcode", "04" '仓库编码,String类型
DomHead(0).setValue "crdcode", "12" '入库类别编码,String类型
DomHead(0).setValue "cdepcode", "0501" '部门编码,String类型
DomHead(0).setValue "vt_id", 63 '模版号,Integer类型
'给BO表体参数domBody赋值,此BO参数的业务类型为产成品入库单,属表体参数。BO参数均按引用传递
'提示:给BO表体参数domBody赋值有两种方法
'方法二是构造BusinessObject对象,具体方法如下:
Dim domBody As New BusinessObject
Set domBody = u8apiBroker.GetBoParam("domBody")
domBody.RowCount = 1 '设置BO对象(表体)行数为多行
'可以自由设置BO对象(表体)行数为任意大于零的整数,也可以不设置而自动增加
'给BO对象(表体)的字段赋值,值可以是真实类型,也可以是无类型字符串
'以下代码示例只设置第一行值。各字段定义详见API服务接口定义
'****************************** 以下是必输字段 *****************************
domBody(0).setValue "autoid", "8888" '主关键字段,Integer类型
domBody(0).setValue "cinvcode", "0301" '产品编码,String类型
domBody(0).setValue "editprop", "A" '编辑属性:A表新增,M表修改,D表删除,String类型
'***************************** 以下是非必输字段 ****************************
domBody(0).setValue "id", "8888" '与主表关联项,Integer类型
domBody(0).setValue "iquantity", "33" '数量,Double类型
domBody(0).setValue "brelated", "0" '是否联副产品,Integer类型
domBody(0).setValue "bvmiused", "0" '代管消耗标识,Integer类型
domBody(0).setValue "iexpiratdatecalcu", "0" '有效期推算方式,Integer类型
'给普通参数domPosition赋值。此参数的数据类型为Object,此参数按引用传递,表示货位:传空
u8apiBroker.AssignNormalValue "domPosition", Nothing '参数类型:Object
'该参数errMsg为OUT型参数,由于其数据类型为String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("errMsg")获取其值
'给普通参数cnnFrom赋值。此参数的数据类型为ADODB.Connection,此参数按引用传递,表示连接对象,如果由调用方控制事务,则需要设置此连接对象,否则传空
u8apiBroker.AssignNormalValue "cnnFrom", Nothing '参数类型:ADODB.Connection
'该参数VouchId为INOUT型普通参数。此参数的数据类型为String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值
u8apiBroker.AssignNormalValue "VouchId", Nothing '参数类型:String
'该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
Dim domMsg As New MSXML2.DOMDocument
u8apiBroker.AssignNormalValue "domMsg", domMsg '参数类型:MSXML2.IXMLDOMDocument2
'给普通参数bCheck赋值。此参数的数据类型为Boolean,此参数按值传递,表示是否控制可用量。
u8apiBroker.AssignNormalValue "bCheck", False '参数类型:Boolean
'给普通参数bBeforCheckStock赋值。此参数的数据类型为Boolean,此参数按值传递,表示检查可用量
u8apiBroker.AssignNormalValue "bBeforCheckStock", False '参数类型:Boolean
'给普通参数bIsRedVouch赋值。此参数的数据类型为Boolean,此参数按值传递,表示是否红字单据
u8apiBroker.AssignNormalValue "bIsRedVouch", False '参数类型:Boolean
'给普通参数sAddedState赋值。此参数的数据类型为String,此参数按值传递,表示传空字符串
u8apiBroker.AssignNormalValue "sAddedState", "" '参数类型:String
'给普通参数bReMote赋值。此参数的数据类型为Boolean,此参数按值传递,表示是否远程:转入false
u8apiBroker.AssignNormalValue "bReMote", False '参数类型:Boolean
'第五步:调用API
If u8apiBroker.InvokeApi() = False Then
'第六步:错误处理
MsgBox u8apiBroker.GetLastError()
If u8apiBroker.ErrorType = ExceptionType_Business Then
'处理API业务错误
ElseIf u8apiBroker.ErrorType = ExceptionType_System Then
'处理系统错误
End If
Else
'第七步:获取返回结果
'获取返回值
'获取普通返回值。此返回值数据类型为Boolean,此参数按值传递,表示返回值:true:成功,false:失败
Dim result As Boolean
result = CBool(u8apiBroker.GetReturnValue())
'获取out/inout参数值
'获取普通OUT参数errMsg。此返回值数据类型为String,在使用该参数之前,请判断是否为空
Dim errMsgRet As String
errMsgRet = CStr(u8apiBroker.GetResult("errMsg"))
'获取普通INOUT参数VouchId。此返回值数据类型为String,在使用该参数之前,请判断是否为空
Dim VouchIdRet As String
VouchIdRet = CStr(u8apiBroker.GetResult("VouchId"))
'获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,前面已定义该参数,请直接使用
End If
'结束本次调用,释放API资源
u8apiBroker.Disconnect
Set u8apiBroker = Nothing
If result Then
' 更新主表cbustype和csource
Dim conn As New ADODB.Connection
Dim sql As String
conn.Open g_objLogin.UfDbName()
sql = "update rdrecord set cbustype = '成品入库', csource = '库存' where id = " + VouchIdRet
conn.Execute sql
' 更新表体行号
sql = "update rdrecords set irowno = 1 where autoid = " + VouchIdRet
conn.Execute sql
conn.Close
MsgBox VouchIdRet
Else
MsgBox errMsgRet
End If
Exit Sub
ErrHandler:
MsgBox Err.Description
End Sub
|
|