使用VBscript读取IBM iSeries数据库环境中的特定字段

时间:2018-05-22 18:00:41

标签: vbscript ibm-midrange

我正在为我的工作制作一个宏,它将更新特定采购订单的特定商品的价格。目前,我将信息输入到excel电子表格中,然后通过VBA生成代码,我将其粘贴到文本文件中并运行在IBM iSeries数据库环境中。我的代码崩溃试图读取环境中的字段并说:

  

“第41行脚本中的错误。对象不支持此属性   或方法:'autECLSession.autECLPS.Refresh'。“

我花了大约一个小时浏览IBM知识中心,了解如何阅读字段并尝试建立不同的连接,这是我认为最接近解决问题的方法。我必须缺少一个关键要素。这是我粘贴到记事本中的代码:

[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=PO_Price_Change
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT

Dim IBMItemNum
Dim counter

IBMItemNum = 1
counter = 0

autECLSession.SetConnectionByName(ThisSessionName)
UpdateAll_

'This method enters the PO and then calls FindItemNum to parse through the items
sub UpdateOnePO(PONum,ItemNum,Price)
autECLSession.autECLPS.SendKeys "4"
autECLSession.autECLPS.SendKeys PONum
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLPS.SendKeys "[enter]" 'now within the PO
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]" 'now on first line
Call MatchItemNum(ItemNum,Price)
IBMItemNum = 1
counter = 0 'Reset counter and IBMItemNum for next PO
end sub

'This method parses through the PO to find ItemNum
sub MatchItemNum(ItemNum,Price)
Do While IBMItemNum <> 0
counter = counter + 1
If counter > 11 Then
autECLSession.autECLPS.SendKeys "[PGDN]" 'page down since bottom of lines reached
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]" 'tab to return to first line of PO
counter = 0 'reset counter
End if
autECLSession.autECLPS.Refresh()
IBMItemNum = autECLSession.autECLPS.GetText()
If IBMItemNum = ItemNum Then 'If-Then statement once ItemNum is found
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys Price
autECLSession.autECLPS.SendKeys "[field+]"
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLPS.SendKeys "Y"
autECLSession.autECLPS.SendKeys "[enter]"
IBMItemNum = 0 'exit condition for loop
Else 'Tab five times to reach next line
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLPS.SendKeys "[tab]"
End if
autECLSession.autECLPS.SendKeys "[F3]"
end sub

'This  method calls UpdateOnePO for all the POs, Item Numbers, and Prices entered into excel. This method will be produced by excel through VBA
sub UpdateAll_()
Call UpdateOnePO(55555,55555,55.55)
end sub

1 个答案:

答案 0 :(得分:0)

它会在错误消息中为您提供答案。根据文档,autECLPS没有Refresh方法。 https://www.ibm.com/support/knowledgecenter/en/SSEQ5Y_5.9.0/com.ibm.pcomm.doc/books/html/host_access02.htm#ToC_1470

我不确定你要用线路做什么

autECLSession.autECLPS.Refresh()

但是它会引起你的问题。你可能会找这样的东西吗?

autECLPSObj.autECLFieldList.Refresh()