ms access db中的SQL语句打开InputBox

ms access db中的SQL语句打开InputBox,sql,vba,ms-access,Sql,Vba,Ms Access,我有VBA表格 我试图在表单的文本框中获取信息,并更新表中的特定字段。(还没有弄清楚如何正确地做到这一点) 这行代码是我当前的尝试,但我得到了意想不到的行为 程序在此之后不会继续执行 If (Not IsNull([New_Value_Box].Value)) Then DoCmd.RunSQL "Update [Export_NDC_Certification] Set " & [Field_List].Value & " = " & [New_Va

我有VBA表格

我试图在表单的文本框中获取信息,并更新表中的特定字段。(还没有弄清楚如何正确地做到这一点) 这行代码是我当前的尝试,但我得到了意想不到的行为

程序在此之后不会继续执行

   If (Not IsNull([New_Value_Box].Value)) Then
       DoCmd.RunSQL "Update [Export_NDC_Certification] Set " & [Field_List].Value & " = " & [New_Value_Box].Value & " WHERE SellerLoanIdentifier = " & Current_Loan
    End If

但是,它会打开一个输入框,标题为Current_Loan的值。它似乎对输入没有任何作用,也不执行任何进一步的代码。我使用MsgBox进行调试,它肯定来自这一行。这一行是我在获取值并用它更新特定表值时遇到的。如果这不是解决问题的方法,那么朝着正确的方向努力,我们将不胜感激。谢谢大家!

首先,我建议使用
Execute
方法(或),而不是使用
DoCmd.RunSQL
。这使得调试更容易(有更多信息)

此外,由于您似乎需要所有控件中的值(
[Field\u List]
[New\u Value\u Box]
,以及
Current\u Loan
),因此您应该对所有这些控件执行空检查

正如@HansUp所指出的,您的实际SQL字符串可能导致了问题,因此您可能希望将其存储在一个单独的变量中,然后输出到即时窗口

综上所述,经过修订的代码可能如下所示:

Dim db As DAO.Database, qdf As DAO.QueryDef
Dim strSQL As String

If _
        IsNull([New_Value_Box].value) Or _
        IsNull([Field_List].value) Or _
        IsNull([Current_Loan].value) _
Then
    ' handle missing input
Else
    ' we know all required fields have values, so can proceed
    strSQL = _
            "UPDATE [Export_NDC_Certification " & _
            "SET " & [Field_List].value & "=" & [New_Value_Box].value & " " & _
            "WHERE SellerLoanIdentifier=" & Current_Loan

    Debug.Print strSQL

    Set db = CurrentDb
    Set qdf = db.CreateQueryDef("")
    qdf.SQL = strSQL
    qdf.Execute dbFailOnError
End If


' clean up DAO objects
Set qdf = Nothing: Set qdf = Nothing: Set db = Nothing

检查请求Access执行的
UPDATE
语句。使用
Debug.Print
将其打印到即时窗口。然后Ctrl+g将带您到那里。如果您无法发现该语句的问题,请将其复制并粘贴到您的问题中。我猜以下内容可能是一个问题,但可能不是唯一的问题:
Set“&[Field\u List].Value&=“
谢谢你,汉斯普。这完全是我传递的字段列表值。它们与对应表中的值没有正确的关联。我的答案非常类似,只是我使用了参数,直到我意识到字段列表是控件中的一个值。是的,参数化查询也是我的第一个想法。我的WAG是
Set“&[Field\u List]。value&=”“
产生
设置当前贷款=
并且该字段在表中不存在。。。因此出现了“缺少参数”的症状。必须查找WAG代表什么…:)哈哈,在我回答之前,我没有看到这些更新。这是关于合并DAO.database的好建议。是的,在代码的前面有输入过滤和错误检查。我的问题是[Field_List]。值与表值没有正确关联。我没有用正确的引号将这些术语封装在SQL语句中。