Код VBA для инициализации формы доступа через событие загрузки - PullRequest
0 голосов
/ 26 октября 2018

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

Private Sub Form_Load()
  Dim rstforf As DAO.Recordset, i As Integer, j As Integer
  Set rstforf = CurrentDb.OpenRecordset("TabForfatter", dbOpenDynaset)
  With rstforf
    ' find index
   .MoveFirst
   j = .Fields(0)
   Do Until .EOF
     If .Fields(0) = j Then .MoveNext Else Exit Do
     j = j + 1
   Loop
  ' insert the index in TabForfatter
  .AddNew
  .Fields(0) = j
  ' Write it on the form
   Me.ArtForfatter_id = j
   ' lock and disable the fiels
   Me.ArtForfatter_id.Locked = True
   Me.ArtForfatter_id.Enabled = False
 End With
 End Sub

Когда я пытаюсь сделать то же самое в «форме проблемы», он отображает первую запись, связанную с ней, с номером записи, найденным с помощью вышеуказанного алгоритма. Когда я смотрю на связанную таблицу, появляется запись с новым номером.

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

Когда я кодирую часть для формы проблемы, VBA не дает мне возможность заблокировать и отключить поле. В руководстве сказано, что только текстовые поля могут быть заблокированы или отключены, но в моем примере кода поле является числом, и оно работает.

Я попробовал DoCmd.GotoRecord с найденным номером записи. Это дает мне пустую форму, но без номера записи. .MoveLast, за которым следует .MoveNext, тоже не помогают.

Может кто-нибудь помочь?

Biørn Veirø

...