更新时的表单字段事件,插入另一个 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

您打算响应完成什么?