2010-03-26 5 views
0

Согласно документации Access (2003), когда вы удаляете запись, она помещается в буфер, после чего происходит событие BeforeDeleteConfirm, а затем события AfterConfirmDelete Удалить события. В моей таблице, если запись удалена, мне нужно добавить одно из своих значений поля (значение количества) в поле в другой таблице.Чтение записанного буфера записи

Я попытался установить количество в приватную переменную в текущем событии, но как только я удалю удаление щелчка, похоже, что текущее событие снова срабатывает и сбрасывает мою переменную.

Как получить доступ к значению поля в удаленной записи?

ответ

0

Значения в связанных элементах управления по-прежнему доступны в форме удаления события. В этом примере txtid является связанным текстовым полем.

Private Sub Form_Delete(Cancel As Integer) 
    Dim strActivity As String 
    Dim strSql As String 

    strActivity = Me.txtid & " deleted." 
    strSql = "INSERT INTO tblAudit (activity) " & _ 
     "VALUES (""" & strActivity & """);" 
    CurrentDb.Execute strSql, dbFailOnError 
End Sub 
0

Это решение может потребовать перепроектирования, но это то, что я использую для формы моих:

  1. Добавить логическое поле для вашей записи таблицы под названием «Видимого».
  2. На главной форме, установите form.filter = "[Visible] = True"
  3. На главной форме, установите AllowFilters = Да.
  4. На главной форме, установите Form.Allow делеции = False (мы не хотим, чтобы они на самом деле удаление записи)
  5. сделать собственную кнопку Удалить команду, которая устанавливает Visible = False.
  6. Если вы почувствуете необходимость позже, вы можете добавить некоторые запросываемые запросы и удалить запросы для очистки основной таблицы и переноса удаленных значений в другую таблицу.

Таким образом, пользователь фактически не «удаляет» запись. Скорее, они просто делают эту запись невидимой. И позже, когда форма будет выгружена, вы можете добавить некоторые запросы на очистку.

0

Вообще, если я хочу сделать что-то в других, чем действия по умолчанию OnDelete событий, я, как правило, повернуть AllowDeletes OFF и создать кнопку Удалить запись команду, которая делает то, что я хочу.

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

Я просто нахожу это намного проще, особенно потому, что пользовательские настройки могут привести к поведению вещей по-разному. Например, два Confirm события не происходит, когда пользователи имеют следующие параметры (из файла A2003 помощи, но это всегда было так):

Примечание AfterDelConfirm событие не происходит и Delete Confirm Диалоговое окно не отображается, если вы установили флажок «Изменения записи». Подтвердить на вкладке «Редактировать/найти» диалоговое окно «Параметры», доступное , нажав «Параметры» в меню «Инструменты».

Таким образом, я просто избегаю всего, сворачивая свой код удаления и избегая поведения по умолчанию.

(и да, если вы следовали моим сообщениям за эти годы, вы знаете, что для меня довольно необычно советовать просто использовать поведение по умолчанию по умолчанию, но это один из случаев, когда я чувствую, что больше контроля подходит почти все случаи)

Смежные вопросы