Вы можете использовать форму, привязанную к таблице с двумя несвязанными элементами управления, для отображения и изменения дня недели и времени - как этот макет:
Два текстовых поля сверху связаны с идентификатором и полем даты / времени таблицы / запроса.
При открытии формы комбинированный список будет заполняется днями недели, и вычисляется первая дата недели.
В событии 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