【问题标题】:Formatting Date From A Date Input Panel从日期输入面板格式化日期
【发布时间】:2018-08-13 20:48:14
【问题描述】:

我有一个用户界面,可以通过输入面板输入日期。我正在构建面板,如下所示。它是一个 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//”,就好像该功能正在工作一样,但我没有从面板“获取”文本。我无法从面板获取实际文本以在屏幕上写入“081318”,每次它给我“0000//”。

有人可以帮忙吗?

【问题讨论】:

  • 为什么不直接将其输入为有效日期,然后使用各种日期方法将日期拉开并重组?
  • 好吧,问题在于使用 DATEPANEL 而不是 INPUTPANEL。如果我使用 INPUTPANEL,我可以定义字符串并以这种方式重组日期。但我不会有输入掩码,我需要输入掩码。使用 DATEPANEL 时,我无法将变量串起来并将其分开。
  • 我不确定 DATEPANEL 或 INPUTPANEL 指的是什么,因为您标记了这个没有类似内容的 VBScript,猜测您指的是自定义 HTML 元素或其他内容。跨度>
  • 我正在使用 Windows 脚本组件,它们是 VBScript 中的 XML。并将对象创建为面板窗口。 CreateObject("MstrComponent.PaneledWindow") 抱歉,我应该指定的。

标签: xml date vbscript formatting 3270


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2013-11-14
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多