VBA代码通过Load事件初始化Access表单

时间:2018-10-26 14:07:52

标签: vba forms ms-access onload-event

我有一个要在加载时用记录号初始化的表格。 在数据库中的其他几种形式中,我成功使用了以下代码:

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ørnVeirø

0 个答案:

没有答案