Форматирование даты с панели ввода даты
У меня есть пользовательский интерфейс для ввода даты через панель ввода. Я строю панель, как показано ниже. Это DATEPANEL, поэтому она автоматически добавляет маску ввода (прямое разбиение, например, мм / дд / гггг):
RepurchaseDatePanel = oMstrCmp.AddPanel(DATEPANEL)
oMstrCmp.AddMessage RepurchaseDatePanel,"SALE/REPURCH/MNT Date"
If IsDate(strRepurchaseDate) Then
oMstrCmp.AddItems RepurchaseDatePanel, strRepurchaseDate
End If
oMstrCmp.MoveVertDivider RepurchaseDatePanel, 75
oMstrCmp.Panels(RepurchaseDatePanel).CaptionFont.Style = 1
Затем я беру текст с панели и определяю строку глобально следующим образом:
strRepurchaseDate = oMstrCmp.GetText(RepurchaseDatePanel)
strRepurchaseDate = Left(strRepurchaseDate,2) + "/" +Mid(strRepurchaseDate,3,2) + "/" + Right(strRepurchaseDate,2)
Далее я пытаюсь ввести эту дату в формате MMDDYY на экране эмулятора 3270. Формат для панели даты - ММ / ДД / ГГГГ, и я пытаюсь отформатировать его в формате ММДДГГ, чтобы соответствовать экрану. Ниже показано, как я пытаюсь ввести его на экране:
subMoveCursor 11, 10
If (InStr(1, Trim(strRepurchaseDate), "/") <> 0) Then
strHold_Date = funcFormatDate(strRepurchaseDate)
subPressKey "@F"
subEnterData strHold_date
End If
Я использую funcFormatDate для форматирования даты из панели из формата MM / DD / YYYY в формат MMDDYY. Ниже приведено описание funcFormatDate:
Function funcFormatDate(strRepurchaseDate)
Dim strhld_mm
Dim strhld_dd
Dim strhld_yy
Dim nMM_pos
Dim nDD_len
Dim nDD_pos
nMM_pos = InStr(1,strRepurchaseDate,"/")
strhld_mm = Left(strRepurchaseDate,nMM_pos - 1)
strhld_mm = Right("00" & strhld_mm,2) ' zero fill field upt to 2 pos
nDD_pos = InStr(nMM_pos + 1,strRepurchaseDate,"/")
nDD_len = (nDD_pos - nMM_pos) - 1
strhld_dd = Left(strRepurchaseDate,nDD_pos - 1)
strhld_dd = Mid(strRepurchaseDate,nMM_pos + 1, nDD_len)
strhld_dd = Right("00" & strhld_dd,2) ' zero fill field upt to 2 pos
strhld_yy = Right(strRepurchaseDate,2)
funcFormatDate = strhld_mm & strhld_dd & strhld_yy
End Function
Тем не менее, я получаю результат "0000 //". Когда я ввожу "13.08.2008", я всегда получаю результат "0000 //", как будто функция работает, но я не "получаю" текст с панели. Я не могу получить фактический текст с панели, чтобы написать "081318" на экране, каждый раз, когда он дает мне "0000 //".
Кто-нибудь может помочь?
1 ответ
Итак, я получил это работает. Проблема была довольно простой, и я не знал об этом. У меня была переменная strRepurchaseDate, определенная глобально, и она также была определена в моей функции для создания пользовательского интерфейса. По какой-то причине он не может быть определен в функции и глобально одновременно. Я просто удалил переменную из своей функции, которая создает пользовательский интерфейс, и это сработало. Поэтому funcFormatDate работает для переформатирования даты при использовании DATEPANEL. Спасибо за вашу помощь.