您可以使用绑定到包含两个 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