我正在为我的工作制作一个宏,它将更新特定采购订单的特定商品的价格。目前,我将信息输入到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
答案 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()