Доступ переопределить удалить палочки на записи - PullRequest
0 голосов
/ 09 октября 2019

Я использую MSAcess 2013

Я пытаюсь переопределить команду Удалить для формы таблицы данных, поэтому вместо удаления записи из моего источника таблицы она переворачивает битовое поле с именем Retired и затем повторно запрашивает таблицу, чтобы удаленные записи исчезли. Проблема в том, что после выделения записи и нажатия клавиши удаления эта запись остается в источнике данных до тех пор, пока я не нажму на запись.

Вот код:

Private Sub Form_AfterUpdate()

    If Me.Accepted <> 0 Then
        Me.Accepted = 0
    End If
    Me.Requery

End Sub

Private Sub Form_Delete(Cancel As Integer)

    Cancel = True

    If Me.Retired <> 1 Then
        Me.Retired = 1
    End If

    DoEvents
    'DoCmd.GoToRecord Record:=acNext

End Sub

Вотфото моей таблицы после того, как я нажал клавишу удаления. Обратите внимание, как маленький карандаш отображается на селекторе строк. Это означает, что удаление было отменено, и бит был перевернут в источнике, но повторный запрос не будет обработан, пока строка выделена.

enter image description here

1 Ответ

1 голос
/ 09 октября 2019

Сначала используйте событие BeforeUpdate :

Private Sub Form_BeforeUpdate()

    If Me.Accepted <> 0 Then
        Me.Accepted = 0
    End If

End Sub

Далее, ваша проблема заключается в том, что действие «Удалить» заключено в транзакцию. Таким образом, хотя это активно, никакие запросы не могут выполняться, и «удаленная» запись останется видимой.

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

...