我在表"MTOStudy"中添加了两个新字段&"OtherDesc"作为短文本数据类型.表中的其他数据类型是数字和是/否值.

但是,在Access中添加这两列并更新表的相应表单后,我无法在单击按钮后更新表.

我已经证实:

  1. 该按钮使用消息框功能工作.
  2. 变量与表中的变量一致.
  3. 该代码与工作函数相同,不包括添加"MTOStudy"和"OtherDesc"变量
  4. 我看到的错误代码是"错误号:3078;MS Access db引擎找不到输入表或查询‘128’.请确保它存在并且名称拼写正确."

调试行:INSERT INTO tbl_MTO_vs_ETO ([Order], [Line], [MTO], [ETO], [DUP], [MTOStudy], [OtherDesc]) VALUES ( , , -1, 0, 0, "TEST ONE PUMP", "")

下面是函数:

Private Sub btn_save_Click()
'On Error GoTo Err_Execute

    If Me.Check_MTO = False And Me.Check_ETO = False And Me.Check_DUP = False Then
        MsgBox ("Please select one of the classification options."), vbCritical
    Else
    
    Dim Append_SQL As String, tbl_target As String, _
        target_fields As String, field_values As String, _
        errLoop As Error
    
    tbl_target = "tbl_MTO_vs_ETO"

    target_fields = "([Order]," _
    & " [Line]," _
    & " [MTO]," _
    & " [ETO]," _
    & " [DUP]," _
    & " [MTOStudy]," _
    & " [OtherDesc])"
            
    
    field_values = "(" _
    & " " & Me.order & "," _
    & " " & Me.line & "," _
    & " " & Me.Check_MTO.Value & "," _
    & " " & Me.Check_ETO.Value & "," _
    & " " & Me.Check_DUP.Value & "," _
    & " """ & Me.MTOStudy.Value & """," _
    & " """ & Me.OtherDesc.Value & """)"
    
    Call Check_MTO_Dropdown

    Append_SQL = "INSERT INTO " & tbl_target & " " & target_fields & " VALUES " & field_values
    
    CurrentDb.Execute Append_SQL
    
    Debug.Print Append_SQL

    On Error GoTo 0
    
Err_Execute:
    
    If DBEngine.Errors.count > 0 Then
    For Each errLoop In DBEngine.Errors
    MsgBox "Error number: " & errLoop.Number & vbCr & _
    errLoop.description
    Next errLoop
    End If

    'DoCmd.Close acForm, Me.name
    'MsgBox ("Test"), vbOKOnly
    
    End If
End Sub

推荐答案

正如HackSlash提到的,我也更喜欢记录集.

如果你想走这条路,试试这个:

Private Sub btn_save_Click()
    
    'Create new record in tbl_MTO_vs_ETO
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
    
        Set db = CurrentDb
        Set rs = db.OpenRecordset("tbl_MTO_vs_ETO")
        
            With rs
                .AddNew
                    ![Order] = Order
                    ![Line] = Line
                    ![MTO] = Check_MTO.Value
                    ![ETO] = Check_ETO.Value
                    ![DUP] = Check_DUP.Value
                    ![MTOStudy] = MTOStudy.Value
                    ![OtherDesc] = OtherDesc.Value
                .Update
            End With
    
        rs.Close
        db.Close
    
        Set rs = Nothing
        Set db = Nothing

End Sub

Sql相关问答推荐

GROUP BY和GROUP_CONCAT用于计算比赛排名

如何以"% m—% d"格式对生日列表进行排序,以查找与今天最近的日期?

Postgres JSONB对象筛选

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

在Oracle SQL中将列值转换为行

使用generate_series()时,LEFT联接缺少日期/间隔

了解多个分组集

使用与JOIN一起使用的查询后进行分页和排序

postgres中的条件索引和触发器

统计重复记录的总数

SQL Server:时态表并在运行时添加计算列

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

在Snowflake中,如何将以逗号和连字符分隔的多个混合数值拆分成数字列表

查询中获取审批者不起作用

根据是否存在值组合分组并 Select 行

使用in和and运算符过滤记录的条件

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

如何通过子 Select 在一次更新(并行数组)中多次更新相同的行

Athena:从字符串birth_dt列计算年龄

从多个连接返回 1 行到同一个表 - SQL Server