2016-02-18 6 views
1

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

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

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 

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

+0

Что произойдет, если вы вставите 'Me.RecordsetClone.MoveLast', как первая строка в этой процедуре? – HansUp

+0

Это было! Спасибо. – Stopahn

ответ

0

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

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

Me.RecordsetClone.MoveLast 
Смежные вопросы