MS Access заблокировать запись на основе поля со списком? - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь выяснить, как заблокировать запись, как только я установил ее в состояние «Завершено», используя поле со списком.У меня есть это, используя временную метку в поле [Дата завершения], и я хочу заблокировать ее, чтобы поле не могло быть изменено снова после его установки.Без этого или чего-то подобного вы можете выбрать «Выполняется» или «Завершено» и постоянно обновлять время, и я пытаюсь не допустить этого.

Я пробовал следующее, но он блокирует все записи.

Private Sub Staus_BeforeChange(Cancel As Integer)
'Private Sub Status_Change()
Dim rs As DAO.Recordset
Dim ValueList()


'In progress
If [Status] = 10 Then
[StartDate] = Now()

'Completed
ElseIf [Status] = 100 Then
   [DateCompleted] = Now()

     'Lock record if completed status
        'If Form.CurrentRecord.[Status] = 100 Then
        'Form.CurrentRecord.AllowEdits = False
        'Else
        'Form.CurrentRecord.AllowEdits = True
        'End If

'Transferred
ElseIf [Status] = -10 Then
   [DateTransferred] = Now()
   'Copy Record without completed date
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
    [Status] = 0
    [StartDate] = Null
    [User ID] = "Unassigned"
    [DateTransferred] = Null
    [DueDate] = [DueDate]
MsgBox "The following Task has been transferred:" & " " & Me.[Company] & " " & Me.[Task Name]

'Waiting
ElseIf [Status] = 50 Then
   [DateCompleted] = Now()
End If

Forms![frmTasks].Form.Requery
Forms![frmTasks].Form.Refresh

End Sub


Public beforeValueChange As Integer

beforeValueChange = Me.[Status]

End Sub


Private Sub Status_AfterUpdate()

If Not IsNull(Me.[DateCompleted]) Then

Me.[Status] = beforeValueChange

End If

End Sub

Я ценю любую помощь или толчок в правильном направлении.Спасибо!!!-Deke

1 Ответ

1 голос
/ 23 мая 2019

Если это не мешает пользователю вносить изменения, то, возможно, ниже?

Public beforeValueChange As Int


Private Sub Staus_BeforeChange(Cancel As Integer)

beforeValueChange = Me.[Status]

End Sub


Private Sub Status_AfterUpdate()

If Not IsNull(Me.[DateCompleted]) Then

    Me.[Status] = beforeValueChange

End If

End Sub
...