【发布时间】:2019-04-18 13:07:24
【问题描述】:
我正在尝试在 Access 中提供一个用户界面来显示计划的 AS400 作业的状态,以将它们显示为挂起、运行或完成。
我继承了一些安排多个作业的代码,这些作业运行良好 - 但用户无法看到作业状态,有时它们会挂起。
目前通过作业更新的表中的数字计数器发出完成信号,并且有一个定期检查完成的表单计时器事件。
使用此方法,代码可以判断 AS400 上的处理何时完成,但无法判断它是否挂起或失败,或者服务器是否负载过重且运行缓慢。
我试图在 Internet 上查找代码示例,但结果一片空白。我能找到的只有 IBM 数据库手册(pdf 和在线)和 IBM 的 Troy C Bleeker 的题为“iSeries Access ActiveX Development”的 pdf 幻灯片。
使用这些资源,我使用 IBM i Access for Windows ActiveX 对象库 (cwbx) 编写了一些代码来与运行良好的 AS400 通信,我可以发出 WRKUSRJOB 命令来检查作业状态,但我可以'不知道如何(甚至是否)可以查看命令的结果。
有没有办法做到这一点,如果有,怎么做?
Dim SysNames As New cwbx.SystemNames
Dim SvrName As String
Dim Svr As New cwbx.AS400System
Dim Svc As cwbx.cwbcoServiceEnum
Dim Cmd As New cwbx.Command
Dim x As New cwbx.DataQueue
'Set server name
SvrName = SysNames.DefaultSystem
Debug.Print SvrName
Svr.Define SvrName
'Set service type
Svc = cwbcoServiceRemoteCmd
'Connect and test
Svr.Connect Svc
Debug.Print Svr.IsConnected(Svc)
'Command
Set Cmd.System = Svr
Debug.Print "WRKUSRJOB"
Cmd.Run "WRKUSRJOB"
```
'How to get results of the command? Nothing in Errors
Debug.Print SprintF("Errors: %s", Cmd.Errors.Count)
```
'Tidy up
Svr.Disconnect Svc
'Object destruction
Set Cmd = Nothing
Set Svr = Nothing
Set SysNames = Nothing
如果错误集合包含命令的结果,或者它们可以通过管道传输或重定向到 ActiveX 可以读取的文件或队列,那就太好了,但我一直画一个空白。
编辑:我的客户端安装了 v7r1 并且正在逐步淘汰 db2,因此不可能升级到更新的版本。
【问题讨论】:
标签: ms-access vba db2 ibm-midrange