从日期输入面板格式化日期

时间:2018-08-13 20:48:14

标签: xml date vbscript formatting 3270

我有一个通过输入面板输入日期的用户界面。我正在构建如下所示的面板。这是一个DATEPANEL,因此它会自动添加输入蒙版(例如,正斜杠mm / dd / yyyy):

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仿真器屏幕上。日期面板的格式为MM / DD / YYYY,我正在尝试将其格式化为MMDDYY格式以适合屏幕。下面是我尝试在屏幕上输入的方法:

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 //”。当我输入“ 08/13/2018”时,我始终会得到结果“ 0000 //”,就好像该函数正在运行一样,但是我并不是从面板上“获取”文本。每次给我“ 0000 //”时,我都无法从面板上获得实际的文本来将“ 081318”写到屏幕上。

有人可以协助吗?

1 个答案:

答案 0 :(得分:0)

所以,我知道了。问题很简单,有些我不知道。我已全局定义了变量strRepurchaseDate,并且还在创建用户界面的函数中定义了该变量。无论出于何种原因,都无法同时在函数和全局中定义它。我只是从创建用户界面的函数中删除了该变量,然后它起作用了。因此funcFormatDate可在使用DATEPANEL时重新格式化日期。谢谢你的协助。