У меня есть форма, которую я хочу инициализировать с номером записи при загрузке.
В нескольких других формах в моей базе данных я с успехом использую следующий код:
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ø