1

我有一个连续的表格,我需要填写所有员工的 ID 和姓名以设定他们的年度目标。我不想通过组合框手动添加它们,因为它可以为单个员工创建重复记录。该表单包含名为 EMPID(员工 ID)和 EmpName(员工姓名)的两个字段。我希望所有 EMPID 和 EmpName 从名为“InsertNameTarget”的查询中自动填充为该连续形式。在观看了一些 YouTube 视频后,我想出了如下内容:

Dim i As Integer

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("InsertNameTarget")

For i = 0 To rs.RecordCount - 1
    DoCmd.GoToControl "EMPID"
    DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    EMPID = rs.Fields("EMPID")
    EmpName = rs.Fields("EmpName")
    rs.MoveNext
Next i

rs.Close
Set rs = Nothing
db.Close

它没有按预期工作。它给了我以下结果: 在此处输入图像描述

它给出了 10 条记录中的第一条记录,并且没有将 EMPID 正确插入所有记录。我不知道我在这里做错了什么。你能为我指出正确的方向吗?

4

1 回答 1

1

连续形式很难使用。由于每个控件仅表示一次,因此您无法可靠地为其分配值。

相反,使用表单记录集:

Dim i As Integer

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim frs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("InsertNameTarget")
Set frs = Me.Recordset

Do While Not rs.EOF
    frs.AddNew
    frs!EMPID = rs.Fields("EMPID")
    frs!EmpName = rs.Fields("EmpName")
    frs.Update
    rs.MoveNext
Loop

rs.Close
Set rs = Nothing
db.Close
于 2021-12-16T12:41:45.307 回答