Я использую VBscript для извлечения данных из AS / 400 iSeries.Хотя это не технически важно для ответа.
В настоящее время я выполняю поиск в предварительно сгенерированном календаре и нахожу текущий период.Затем мне нужно найти последний закрытый период.
1 в 52,5 раза, это нормально, я просто забираю 1. Но каждые 52 или 53 недели (в зависимости от того, где находится вторник) это даст мнезначение 0, которое не работает
Вещи, которые я пробовал:
- Перейти к сегодняшней дате, убрать одну и использовать обновленный период.Это не работает, потому что 1-е число каждого месяца будет нарушать работу системы
- Если новый период = 0, то 52. Это не работает, потому что, как я уже сказал, это может легко быть 53
Учитывая:
- Последний закрытый период всегда тот, что раньше, чем мы сейчас находимся
- Для выполнения этого сценария нужны и период, и год
- период и год всегда находятся в фиксированном месте на фиксированном экране
- Скажем, сегодня период 23 года 19. Последнее закрытие будет периодом 22 года 19.
- Если сегодня был период 01 года 20Последнее закрытие будет период 52 года 19. Но ...
- Если сегодня был период 01 год 19. Последнее закрытие будет период 53 года 18.
Вот мой код:
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT
'Current Session'
autECLSession.SetConnectionByName(ThisSessionName)
'Declare'
DIM accNo 'KF account number
DIM RetPeriod, RetYear
DIM ScreenName
'End'
'Pull Screen Name (FMSOPS is the idea)'
ScreenName = autECLSession.autECLPS.GetText(1, 2, 6)
'End'
'Ask User for account number'
accNo = InputBox("Enter Account Number:","User Input","000000")
'End'
'Press F3 until main menu'
Do Until ScreenName = "FMSOPS"
ScreenName = autECLSession.autECLPS.GetText(1, 2, 6) 'Pulls Calendar period
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[pf3]" 'Back'
Loop
'End'
'Go to calendar'
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "41"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[Enter]"
autECLSession.autECLOIA.WaitForInputReady
'End'
'Pulls period and year'
RetPeriod = autECLSession.autECLPS.GetText(10, 21, 2) 'Pulls Calendar period
RetYear = autECLSession.autECLPS.GetText(10, 28, 2) 'Pulls Calendar year
'End'
'If the period is 1, then go to last year'
'Else, go to last closed period'
If RetPeriod = "01" Then
RetYear = RetYear - 1
'Need to do 52/53 conversion here
Else
RetPeriod = RetPeriod - 1 'Calendar period minus one
End If
'msgbox "You entered: " & RetPeriod
'msgbox "You entered: " & accNo