我已经找到了这个问题的类似答案,即使在这个网站上,但是,语法对我的数据库没有用,我不确定需要做什么。该数据库用于对员工绩效和准确性进行审计。我现在正在创建表单并让它们为用户正确流动。
进行审核时,用户需要在第一个表单中输入六个特定字段。这些表单是审计,月份,年份,用户名,位置,审阅者和日期。用户需要完成多个审核,但是,这六个字段将始终相同。
我想在第一个表单中复制这些字段并将它们带到第二个表单中,这样用户就不必重复这些信息了。这是我当前的代码(设置为点击屏幕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的新手,我不确定这意味着什么或如何修复它。我所知道的是,我找不到解决方案。有人可以帮忙吗?我非常感激。
答案 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 打开...
......完成各个领域:
点击复制到表单2 按钮,这将打开表单2 ,并使用表单1 中的数据填充其字段:
这是复制到表单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 打开时,光标默认显示的文本框似乎不会显示任何数据;如果你离开那个文本框就应该神奇地显示出来(不知道为什么会这样做,但是你去了)。