【问题标题】:How to format DayTime as Day of week Medium Time on Access如何在访问中将 DayTime 格式化为星期几中时间
【发布时间】:2020-06-03 11:02:22
【问题描述】:

我在 Access 上尝试了一些 SQL,但是当我尝试格式化 Date/Time 数据类型以便我可以为我的变量输入星期几和中间时间时。

例如,我希望能够输入如下内容:Mon 1:00 PM

我尝试将数据类型格式化为ddd h:nn AM/PM,但是当我尝试输入值时,系统提示我输入的格式与我的格式不匹配。

我也尝试通过单击输入框旁边的日历并选择日期来自动填充输入,但这样我无法格式化时间。

任何帮助将不胜感激。

我没有添加任何图片或代码,因为我认为不需要回答这个问题。如果需要任何额外的东西,我非常愿意提供。

谢谢

【问题讨论】:

    标签: sql ms-access format sqldatatypes


    【解决方案1】:

    您不能在格式化的布局/文本中输入日期/时间。

    虽然日期/时间值是根据您的“格式”属性显示的,但只要将光标移入字段或单击该字段,它就会发生变化。

    然后你必须以传统方式输入它,即日期,如果需要,它后面的时间。

    使用日历您只能输入日期,遗憾的是没有时间。选择日期后,您必须自己在字段中输入时间。

    我看到输入格式化日期/时间的唯一方法是编写一个 VBA 例程来解释您的输入并将正确格式化的常规文本放入您的文本框中。

    【讨论】:

      【解决方案2】:

      您可以使用绑定到包含两个 unbound 控件的表格的表单来显示和修改工作日和时间 - 就像这个模型:

      顶部的两个文本框绑定到表/查询的 Id 和日期/时间字段。

      打开表单时,组合框将填入星期几,并计算星期的第一个日期。

      OnCurrent 事件中,组合框将设置为工作日,文本框设置为时间。修改其中任何一个都会更新当前记录。

      必须将组合框设置为使用 ValueList 作为 RowSource 并隐藏第一列(将 ColumnWidths 设置为:0 ;)

      时间文本框可以有 格式:短时间格式

      表格的代码将是:

      Option Compare Database
      Option Explicit
      
      Private FirstDate       As Date
      Private FirstWeekDay    As VbDayOfWeek
      
      Private Sub Form_Current()
      
          Me!Weekday.Value = DatePart("w", Me!Date.Value)
          Me!Time.Value = TimeValue(Me!Date.Value)
      
      End Sub
      
      Private Sub Form_Load()
      
          Dim DayOfWeek       As VbDayOfWeek
          Dim LastWeekDay     As VbDayOfWeek
          Dim RowSource       As String
      
          FirstDate = DateAdd("d", Date, 1 - DatePart("w", Date, vbUseSystemDayOfWeek))
          FirstWeekDay = DatePart("w", FirstDate, vbUseSystemDayOfWeek)
      
          For DayOfWeek = 1 To 7
              RowSource = RowSource & """" & (FirstWeekDay - 1 + DayOfWeek) Mod 7 + 1 & """;""" & Format(DateAdd("d", DayOfWeek - 1, FirstDate), "dddd") & """;"
          Next
          Debug.Print RowSource
          Me!Weekday.RowSource = RowSource
      
      End Sub
      
      Private Sub Time_AfterUpdate()
      
          UpdateDate
      
      End Sub
      
      Private Sub Weekday_AfterUpdate()
      
          UpdateDate
      
      End Sub
      
      Private Sub UpdateDate()
      
          Me!Date.Value = DateAdd("d", (Me!Weekday.Value - 1 - FirstWeekDay + 7) Mod 7, FirstDate) + Nz(Me!Time.Value, #12:00:00 AM#)
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2016-11-27
        • 2022-06-25
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        相关资源
        最近更新 更多