更新时的表单字段事件,插入另一个 table
Form Field Event on Update, INSERT INTO another table
当 "yes" 被输入到我的数据库的表单域时,我想触发在另一个 table "in the background" 中插入新的数据行并继续在我的表单中移动.有什么想法吗?不确定 "If" 语句语法...在 "DoCmd.RunSQL strSQL"
上出现调试错误
Private Sub Data_Destruction_Certificate_AfterUpdate()
Dim strSQL As String, Response As Integer
strSQL = "INSERT INTO Data_Destruction ([DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date of Destruction]) " & "VALUES ('" & DonateID & "', '" & "Unknown" & "', '" & "Make - Model" & "', '" & "Model_Serial_Number" & "', '" & "Media_Type" & "', '" & "Media_Serial_Number" & "', '" & 1 / 1 / 2000 & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Response = acDataErrAdded 'now requeries the database to refresh the list
Response = acDataErrContinue
End Sub
按照指示去做。不能 post 图片...没有积分。初始"Run Time Error is 3346, "查询值和目标字段的数量不同
调试打印输出指出:
INSERT INTO Data_Destruction ([DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date of Destruction]) VALUES ('24', 'Unknown', 'Make - Model', 'Model_Serial_Number', 'Media_Type', 'Media_Serial_Number', '0.0005')
显然我的 "date" 值语法不正确
确定...用#....# 修复了日期并添加到 MediaID(自动编号字段)中——我要插入的 table 中的所有字段现在都包含在内。 运行 代码并得到:
INSERT INTO Data_Destruction ([MediaID],[DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date_of_Destruction]) VALUES ('', '28', 'Unknown', 'Make - Model', 'Model_Serial_Number', 'Media_Type', 'Media_Serial_Number', '1/1/2000')
您的 INSERT
声明的最新版本包括 8 个 VALUES
但只有 7 个字段。我格式化了声明以便更容易计算它们:
INSERT INTO Data_Destruction
(
[MediaID],
[DonateID],
[Make-Model],
[Model_Serial_Number],
[Media_Type],
[Media_Serial_Number],
[Date_of_Destruction]
)
VALUES
(
'',
'28',
'Unknown',
'Make - Model',
'Model_Serial_Number',
'Media_Type',
'Media_Serial_Number',
'1/1/2000'
)
您需要删除其中一个 VALUES
或包括第八个字段以接受额外的值。
我建议您将 INSERT
语句粘贴到 Access 查询设计器中新查询的 SQL 视图中。根据需要调整那里的语句,直到错误消失,它会向 table 添加一行,其中包含您想要的值。一旦你在那里工作,修改你的 VBA 代码以生成相同的语句文本。
之后我建议你放弃 DoCmd.SetWarnings False
并执行这样的语句...
CurrentDb.Execute strSQL, dbFailOnError
但是,我不确定您是否还需要更多信息。主要是我很困惑,因为我不明白你为什么有这些......
Response = acDataErrAdded
Response = acDataErrContinue
您打算响应完成什么?
当 "yes" 被输入到我的数据库的表单域时,我想触发在另一个 table "in the background" 中插入新的数据行并继续在我的表单中移动.有什么想法吗?不确定 "If" 语句语法...在 "DoCmd.RunSQL strSQL"
上出现调试错误Private Sub Data_Destruction_Certificate_AfterUpdate()
Dim strSQL As String, Response As Integer
strSQL = "INSERT INTO Data_Destruction ([DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date of Destruction]) " & "VALUES ('" & DonateID & "', '" & "Unknown" & "', '" & "Make - Model" & "', '" & "Model_Serial_Number" & "', '" & "Media_Type" & "', '" & "Media_Serial_Number" & "', '" & 1 / 1 / 2000 & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Response = acDataErrAdded 'now requeries the database to refresh the list
Response = acDataErrContinue
End Sub
按照指示去做。不能 post 图片...没有积分。初始"Run Time Error is 3346, "查询值和目标字段的数量不同
调试打印输出指出:
INSERT INTO Data_Destruction ([DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date of Destruction]) VALUES ('24', 'Unknown', 'Make - Model', 'Model_Serial_Number', 'Media_Type', 'Media_Serial_Number', '0.0005')
显然我的 "date" 值语法不正确
确定...用#....# 修复了日期并添加到 MediaID(自动编号字段)中——我要插入的 table 中的所有字段现在都包含在内。 运行 代码并得到:
INSERT INTO Data_Destruction ([MediaID],[DonateID], [Make-Model], [Model_Serial_Number], [Media_Type], [Media_Serial_Number], [Date_of_Destruction]) VALUES ('', '28', 'Unknown', 'Make - Model', 'Model_Serial_Number', 'Media_Type', 'Media_Serial_Number', '1/1/2000')
您的 INSERT
声明的最新版本包括 8 个 VALUES
但只有 7 个字段。我格式化了声明以便更容易计算它们:
INSERT INTO Data_Destruction
(
[MediaID],
[DonateID],
[Make-Model],
[Model_Serial_Number],
[Media_Type],
[Media_Serial_Number],
[Date_of_Destruction]
)
VALUES
(
'',
'28',
'Unknown',
'Make - Model',
'Model_Serial_Number',
'Media_Type',
'Media_Serial_Number',
'1/1/2000'
)
您需要删除其中一个 VALUES
或包括第八个字段以接受额外的值。
我建议您将 INSERT
语句粘贴到 Access 查询设计器中新查询的 SQL 视图中。根据需要调整那里的语句,直到错误消失,它会向 table 添加一行,其中包含您想要的值。一旦你在那里工作,修改你的 VBA 代码以生成相同的语句文本。
之后我建议你放弃 DoCmd.SetWarnings False
并执行这样的语句...
CurrentDb.Execute strSQL, dbFailOnError
但是,我不确定您是否还需要更多信息。主要是我很困惑,因为我不明白你为什么有这些......
Response = acDataErrAdded
Response = acDataErrContinue
您打算响应完成什么?