Access 2013: я пытаюсь вернуть сегодняшнюю дату, когда поля "да / нет" помечены как "да"

Я пытаюсь вернуть сегодняшнюю дату в поле даты, когда другое поле помечено как "Да". Я попробовал следующее выражение, но безрезультатно. Я имею ограниченный опыт работы с выражениями и очень ценю любые рекомендации. Если поле не имеет "Да", поле даты может быть пустым. Я не могу установить значение по умолчанию "Нет" для поля Утверждено.

Дата утверждения: IIf([Одобрено]= Истина, Сегодня (), Нуль)

Если я установлю дату, она будет работать, но дата будет динамичной, так что это не очень полезно. Дата утверждения: IIf([Одобрено]= Истина,5/1/2016, Нуль)

Спасибо заранее за вашу помощь.

1 ответ

Решение

Хорошо, я потратил немного времени на то, чтобы сделать это с помощью выражения. Ответ: вы не можете, по крайней мере, без вспомогательной функции. Итак, мое гибридное решение:

1) Создать функцию в стандартном модуле:

Public Function SetControlValue( _
    ByVal ctlControl As Access.Control, _
    ByVal varValue As Variant, _
    Optional ByVal varTest As Variant = True)
        If (varTest) Then
            ctlControl.Value = varValue
        End If
End Function

2) В AfterUpdate событие для флажка Утверждено, введите:

=SetControlValue([ApprovedDate],Date(),([Approved]=True) AND (IsNull([ApprovedDate])))

Такой подход избавляет вас от создания модуля класса в форме. И вы можете хранить весь такой код в общем модуле, чтобы вы могли собрать библиотеку таких функций для других форм.


(старый ответ 2)

Исходя из ваших ответов, вы можете добавить AfterUpdate событие для Утвержденного элемента управления, которое делает что-то вроде:

Private Sub Approved_AfterUpdate() 
    If (Approved.Value = True) And IsNull(ApprovedDate.Value) Then 
        ApprovedDate.Value = Date()
    End If
End Sub

Это установит утвержденную дату один раз, когда проверенный флажок будет впервые установлен. Если вам нужно другое поведение, это можно легко изменить.


(старый ответ 1)

Я думаю, что у вас есть это задом наперед. Если для параметра [Approved] установлено значение True, установите [ApprovedDate] = Today(). Таким образом, он сохраняется в таблице, и у вас есть постоянная запись о том, когда он был утвержден.

Другие вопросы по тегам