Чтение определенного поля в среде баз данных IBM iSeries с помощью VBscript - PullRequest
0 голосов
/ 22 мая 2018

Я делаю макрос для своей работы, который будет обновлять цены на определенные товары для определенных заказов на покупку.В настоящее время я ввожу информацию в электронную таблицу 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 голосов
/ 22 мая 2018

Это дает вам ваш ответ прямо в сообщении об ошибке.Согласно документации, у 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()
...