Форматирование даты с панели ввода даты

У меня есть пользовательский интерфейс для ввода даты через панель ввода. Я строю панель, как показано ниже. Это 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. Спасибо за вашу помощь.

Другие вопросы по тегам