Извлечь последний закрытый период из текстовых значений - PullRequest
0 голосов
/ 04 июня 2019

Я использую VBscript для извлечения данных из AS / 400 iSeries.Хотя это не технически важно для ответа.

В настоящее время я выполняю поиск в предварительно сгенерированном календаре и нахожу текущий период.Затем мне нужно найти последний закрытый период.

1 в 52,5 раза, это нормально, я просто забираю 1. Но каждые 52 или 53 недели (в зависимости от того, где находится вторник) это даст мнезначение 0, которое не работает

Вещи, которые я пробовал:

  • Перейти к сегодняшней дате, убрать одну и использовать обновленный период.Это не работает, потому что 1-е число каждого месяца будет нарушать работу системы
  • Если новый период = 0, то 52. Это не работает, потому что, как я уже сказал, это может легко быть 53

Учитывая:

  1. Последний закрытый период всегда тот, что раньше, чем мы сейчас находимся
  2. Для выполнения этого сценария нужны и период, и год
  3. период и год всегда находятся в фиксированном месте на фиксированном экране
  4. Скажем, сегодня период 23 года 19. Последнее закрытие будет периодом 22 года 19.
  5. Если сегодня был период 01 года 20Последнее закрытие будет период 52 года 19. Но ...
  6. Если сегодня был период 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
...