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

时间:2016-02-16 22:13:42

标签: access-vba ms-access-2013

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

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

我想在第一个表单中复制这些字段并将它们带到第二个表单中,这样用户就不必重复这些信息了。这是我当前的代码(设置为点击屏幕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语句无效;预期'删除','插入','过程','选择'或'更新'。

我是Access的新手,我不确定这意味着什么或如何修复它。我所知道的是,我找不到解决方案。有人可以帮忙吗?我非常感激。

2 个答案:

答案 0 :(得分:0)

http-equiv不能有FROM或WHERE子句。您插入具有固定值的单个记录,而不是来自另一个表的数据。

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

然后您仍然会出现SQL注入错误。使用INSERT INTO table (...) VALUES (...)Recordset.AddNew添加记录更安全。

参见例如在这里:https://stackoverflow.com/a/34969410/3820271
(但没有循环)

答案 1 :(得分:0)

这里有mock-up Access file,说明了在不使用SQL的情况下执行操作的方法:

表单1 打开...

enter image description here

......完成各个领域:

enter image description here

点击复制到表单2 按钮,这将打开表单2 ,并使用表单1 中的数据填充其字段:

enter image description here

这是复制到表单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

请注意,当表单2 打开时,光标默认显示的文本框似乎不会显示任何数据;如果你离开那个文本框就应该神奇地显示出来(不知道为什么会这样做,但是你去了)。