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 打开时,光标默认指向的文本框可能不会显示任何数据;如果你离开那个文本框,它应该会神奇地显示(不知道为什么会这样,但你去吧)。
我已经找到了这个问题的类似答案,即使是在这个网站上,但是,语法不适用于我的数据库,我不确定需要做什么。该数据库用于对员工绩效和准确性进行审计。我现在正在创建表单并让它们为用户正确流动。
进行审核时,用户需要在第一个表单中输入六个特定字段。这些表格是审计、月、年、用户名、位置、审阅者和日期。用户将需要完成多次审核,但是,这六个字段将始终相同。
我想复制第一个表单中的这些字段并将它们带入第二个表单中,这样用户就不必重复这些信息。这是我当前的代码(单击屏幕 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 打开时,光标默认指向的文本框可能不会显示任何数据;如果你离开那个文本框,它应该会神奇地显示(不知道为什么会这样,但你去吧)。