Доступ к элементам управления формой VBA отключен

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

Я использую этот код в событии «Текущий» для формы:

Private Sub Form_Current()
If Me.CurrentRecord = 1 Then
Me.Prev_Rec.Enabled = False
Me.First_Rec.Enabled = False
Else
Me.Prev_Rec.Enabled = True
Me.First_Rec.Enabled = True
End If
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
Me.Next_Rec.Enabled = False
Me.Last_Rec.Enabled = False
Else
Me.Next_Rec.Enabled = True
Me.Last_Rec.Enabled = True
End If
End Sub

Когда я открываю форму (она открывается для первой записи), все кнопки становятся серыми; однако, если я поиграюсь с элементами управления (просто щелкнув их и/или переместив) в режиме «Дизайн», а затем переключусь обратно, кнопки «следующая» и «последняя» снова активируются (я нахожусь на первой записи, поэтому кнопки «первая» и «предыдущая» отключены, как и должно быть). Что я делаю неправильно?


person Stopahn    schedule 18.02.2016    source источник
comment
Что произойдет, если вы вставите Me.RecordsetClone.MoveLast в качестве первой строки в этой процедуре?   -  person HansUp    schedule 18.02.2016
comment
Это сделало это! Спасибо.   -  person Stopahn    schedule 18.02.2016


Ответы (1)


Я подозревал, что исходный RecordCount ненадежен, потому что форма еще не загрузила все строки в свой набор записей, когда вы впервые проверили RecordCount.

Вы смогли принудительно завершить загрузку набора записей до того, как проверили RecordCount, вставив это в качестве первой строки процедуры...

Me.RecordsetClone.MoveLast
person HansUp    schedule 18.02.2016