Блокировка предыдущих записей в базе данных Access на основе идентификатора - PullRequest
1 голос
/ 30 января 2020

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

Я пробовал несколько вещей, но, как начинающий пользователь VBA, ничего не получалось. Я попытался:

Private Sub Form_Load()
If Me.ID < 22 Then
Me.AllowEdits = False
Else
Me.AllowEdits = True
End If
End Sub

Я использовал фиктивную "22", чтобы увидеть, будет ли работать код, но он просто заблокировал все записи, а не только номера 1-21, как я пытался do.

Я бы хотел, чтобы "22" было значением поля ID в самой последней записи. Я также хотел бы, чтобы это было: Если Me.ID <(идентификатор самой последней записи) -5 </p>

Возможно ли это?

1 Ответ

0 голосов
/ 30 января 2020

Form_Load - неверное событие, которое возникает только один раз при запуске, а Me.ID - первая запись. Вы должны проверить текущую выбранную запись с событием Form_Current.

Не полагайтесь на последовательность ID (например, вызванную удалением). Выберите Top 5 ID (сортировка по убыванию) и получите минимум.

Создать как сохраненный запрос (например, назовите его FormNameTop5ID, где FormName - имя формы, TableName - таблица / запрос, связанный с формой)

SELECT TOP 5 ID FROM TableName ORDER BY ID DESC

В форме создайте Form_Current событие

Private Sub Form_Current()
If Me.ID.Value < DMin("ID", "FormNameTop5ID") Then
    Me.AllowEdits = False
Else
    Me.AllowEdits = True
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...