MS Access 2013 复制特定数量的字段并粘贴到新记录中

MS Access 2013 copy a specific number of fields and paste into a new record

我已经找到了这个问题的类似答案,即使是在这个网站上,但是,语法不适用于我的数据库,我不确定需要做什么。该数据库用于对员工绩效和准确性进行审计。我现在正在创建表单并让它们为用户正确流动。

进行审核时,用户需要在第一个表单中输入六个特定字段。这些表格是审计、月、年、用户名、位置、审阅者和日期。用户将需要完成多次审核,但是,这六个字段将始终相同。

我想复制第一个表单中的这些字段并将它们带入第二个表单中,这样用户就不必重复这些信息。这是我当前的代码(单击屏幕 1 底部的命令按钮时设置为 运行):

Dim strSQL As String
strSQL = "INSERT INTO [tblTripMem] (Audit, Month, Year, Username, Location, Reviewer, Date)"
strSQL = strSQL & " Values (" & Me.cboFP1Audit & "," & Me.Month & "," & Me.Year & "," & Me.Username & "," & Me.Location & "," & Me.Reviewer & "," & Me.Date & ") FROM [FPScreen1]"
strSQL = strSQL & "WHERE (currentrecord = " & Me.CurrentRecord & ")"
DoCmd.RunSQL (strSQL)

每次我 运行 收到以下错误:“无效的 SQL 语句;应为 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT', 或 'UPDATE'.

我是 Access 的新手,不确定这意味着什么或如何修复它。我所知道的是我没有找到解决方案。谁能帮忙?我将不胜感激。

INSERT INTO table (...) VALUES (...) 不能有 FROM 或 WHERE 子句。您插入具有固定值的单个记录,而不是来自另一个 table.

的数据

但是一旦删除这些子句,就会出现其他错误,因为您需要正确设置字符串和日期值的格式才能使 INSERT 查询正常工作。

然后你仍然容易出现 SQL 注入错误。使用Recordset.AddNew.Update添加记录比较安全。

参见例如这里:
(但没有循环)

这里 mock-up Access file 说明了一种无需使用 SQL 即可完成您正在做的事情的方法:

使用 表格 1 打开...

...完成各个字段:

单击复制到表格 2 按钮,这将打开 表格 2 并使用来自 [=35= 的数据填充其字段]表格 1:

这是 复制到 Form 2 按钮的 OnClick 事件的 VBA 代码:

Private Sub cmdCopyToFrm2_Click()

    Dim frm As Form

    DoCmd.OpenForm "Form2"

    Set frm = Forms!Form2

    With frm

        !AuditRef = Me.cboFP1Audit
        !AuditMonth = Me.txtAuditMonth
        !AuditYear = Me.txtAuditYear
        !AuditUsername = Me.txtAuditUsername
        !Location = Me.txtLocation
        !Reviewer = Me.txtReviewer
        !AuditDate = Me.txtAuditDate

    End With

End Sub

请注意,当 Form 2 打开时,光标默认指向的文本框可能不会显示任何数据;如果你离开那个文本框,它应该会神奇地显示(不知道为什么会这样,但你去吧)。