Как заблокировать определенные строки в подчиненной форме при загрузке формы? - PullRequest
0 голосов
/ 31 января 2011

У меня есть подчиненная форма, содержащая записи с полем Да / Нет, отображаемым как флажок в подчиненной форме. Когда главная форма загружена, мне нужно заблокировать все отмеченные поля, чтобы пользователь не мог отменить то, что делал предыдущий пользователь: он должен иметь возможность только отмечать / снимать флажки, которые не были отмечены в начале сеанса.

Можно ли выполнять итерацию по всем записям в подчиненной форме и выборочно блокировать записи на основе значения поля при загрузке формы?

Я знаю, что могу поставить что-то вроде

If (Me.chkItemReceived.Value = -1) Then
        Me.chkItemReceived.Locked = True
Else
        Me.chkItemReceived.Locked = False
End If

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

Мое другое решение состоит в том, чтобы разделить форму на две подчиненные формы - элементы, проверенные по сравнению с элементами, но не сохраняющие ее в одной форме.

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 31 января 2011

Нет, нет способа заблокировать определенные строки (или записи) в GUI в MS Access. Если вы изменяете свойства элемента управления для одной записи, он изменяет его для всех записей в подчиненной форме.

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

Два метода, которые вы описываете (OnCurrent и отдельные SubForms), вероятно, являются вашими лучшими вариантами. Для чистоты кода я бы выбрал последнее.

0 голосов
/ 31 января 2011

Ну, вы в основном дали себе решение своей проблемы - правильно ли я читаю ваш вопрос.Вы можете установить его таким образом, чтобы при переходе к следующей записи определенные элементы управления блокировались для редактирования в зависимости от значения этих или других элементов управления.Конечно, вы на самом деле не блокируете строки в таблицах, но запрещаете пользователю изменять значение заблокированных элементов управления.

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

...