sql - ms access db 中的 SQL 语句调出 InputBox
问题描述
我有一个表格的 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
(DAO.Database或DAO.QueryDef的)方法,而不是使用DoCmd.RunSQL
. 这使调试变得更加容易(这里是一个包含更多信息的论坛帖子)。
此外,由于您似乎需要所有控件(、、和)中的值[Field_List]
,[New_Value_Box]
因此Current_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
推荐阅读
- azure-devops - 在 Azure 管道上构建之前选择版本
- jquery - 创建整数数组并让函数检查每个值
- azure - Kubernetes 部署后外部 IP 无响应
- verilog - 如何在 Chisel 生成的模块中注入 Verilog 代码?
- excel - Application.Run 返回错误 438,不调用宏
- excel - 为什么 MS Excel 在打开超链接时会忽略此 URL 参数?
- android-studio - Android Studio 和 Gradle KTS 构建文件
- json - 为什么 Windows Server 2016 中的添加内容将文本写入单行而不是像我的 Windows 10 PC 那样的多行?
- javascript - 虽然循环阻止承诺解决
- ansible - 由于引号,无法读取 ansible shell 模块输出