Рассчитать дату в MS Access, затем записать значение в поле в таблице

Следуя этот вопрос, как мне пойти о записи результирующего значения даты в поле (DEADLINE (25 WD)), которое находится в форме?

(Поле находится в форме, которая связана с таблицей.)


person Mus    schedule 04.06.2015    source источник
comment
В поле? В запросе? Форма? Какова установка?   -  person PaulFrancis    schedule 04.06.2015
comment
Поле находится в форме, которая связана с таблицей - (вопрос обновлен).   -  person Mus    schedule 04.06.2015


Ответы (1)


Реальное решение состоит в том, чтобы не хранить этот «вычисление», а использовать его, когда и где это необходимо. Расчеты относятся к запросам, а не к таблицам. Причина, по которой лучше использовать в запросах, чем хранить в таблицах с использованием метода формы, заключается в том, что при изменении DateOpened крайний срок автоматически обновляется. НО это происходит, только если вы используете форму для редактирования информации. Если вы редактируете дату непосредственно в таблице или используете запрос для обновления записи, крайний срок не будет согласованным.

Однако, если вы используете запрос типа

SELECT 
    DateOpened, 
    addWorkDays(25, DateOpened) As Deadline 
FROM 
    yourTable;

Это будет работать на основе DateOpened, как при запуске запроса. Даже если он будет изменен в запросе (пока он открыт), крайний срок будет соответствующим образом обновлен. Вы теряете эту гибкость, когда используете форму для хранения вычислений обратно в таблицу.

При этом вам нужно рассчитать это на основе другого поля; Я бы посоветовал вам использовать событие AfterUpdate элемента управления DateOpened.

Private sub DateOpened_AfterUpdate()
    If Len(Me.DateOpened & vbNullString) <> 0 Then 
        Me.DeadlineDate = addWorkDays(25, DateOpened)
    Else
        Me.DeadlineDate = ""
    End If
End Sub

Поскольку элемент управления привязан к таблице, запускать код обновления не нужно. Это автоматически заполнит крайний срок.

person PaulFrancis    schedule 04.06.2015
comment
Будут ли эти значения постоянно храниться (до изменения) в связанной таблице (для целей отчетности)? - person Mus; 04.06.2015
comment
Я тестировал, но, к сожалению, не могу заставить это работать; не могли бы вы указать, куда все должно идти (как в коде VBA, так и в свойствах поля формы)? Для справки, это поля: Date opened и 25WD. Функция addWorkDays установлена ​​в качестве источника управления для 25WD. Спасибо. - person Mus; 05.06.2015
comment
Нет, источником управления не должно быть имя поля в таблице. Код рассчитает 25 рабочих дней на основе даты открытия. Вам не нужно устанавливать функцию в качестве источника управления. - person PaulFrancis; 08.06.2015