Как связать поле даты с комбинированным списком (с типом источника строки = списком значений)?
Мы настраиваем комбинированный список следующим образом в форме загрузки в VBA:
For i = 0 To 6
Dim strValueMember As String
Dim strDisplayMember As String
strValueMember = format(DateAdd("d", 0 + i, anchorDate), "dd-MMM-yy") & ";"
strDisplayMember = format(DateAdd("d", 0 + i, anchorDate), "ddd dd-MMM-yy") & ";"
strItems = strItems & strValueMember & strDisplayMember
Next i
strItems = Left(strItems, Len(strItems) - 1)
Me.cboDeliveryDate.RowSource = strItems
Это дает нам аккуратный маленький комбинированный список с возможностью выбора из списка за 7 дней. В качестве бонуса он видит день недели (на самом деле, для этого конечного пользователя название дня очень важно).
![enter image description here](https://i.stack.imgur.com/K9ojw.png)
У выпадающего списка есть два столбца: столбец значений (для истинной даты) и столбец отображения (для отображения названия дня).
Но есть проблемы, какие бы Связанные столбцы мы не установили:
Если мы установим столбец привязки в столбец 0 , он, очевидно, будет работать, но сохранено значение 31/12/1899, 01.01.1900, 01.01.1900 и т. Д. Так что это просто чтение списка индексов комбо и преобразование его в дату.
Если установить для столбца «Связанный столбец» значение 1 , это на самом деле работает, когда выбранное значение записывается обратно в базу данных. Но он никогда не отображается в форме, поэтому пользователь явно не почувствует, что его редактирование заняло
Если установить для столбца «Связанный столбец» значение 2 , мы получим ошибку Not In List.
Все вышеперечисленное применяется независимо от того, используем мы dd-MMM-yy
для strValueMember или (как подсказывает ответ @HansUp, yyyy-m-d
).