sql - VBA SQL 哪里是 NULL
问题描述
我试图使用来自访问表单的输入创建带有 where 子句的 VBA sql 字符串。即使其中一个用户输入为空/未选中,我也需要代码仍能正常运行。当所有用户输入都被选中时,下面的代码可以正确运行,但是当一个输入为空/未选中时,查询最终会拉回表中的所有记录。
Dim SQL As String
SQL = "SELECT qry_1.field1, qry_1.field2, qry_1.field3 INTO recordset FROM qry_1" & _
" WHERE ((qry_1.Field1) IS NULL OR (qry_1.Field1) = '" & [Forms]![frm_Parameters]![cmbx_1] & "') " &_
" AND ((qry_1.Field2) IS NULL OR (qry_1.Field2) = '" & [Forms]![frm_Parameters]![cmbx_2] & "' ) " & _
" AND ((qry_1.Field3) IS NULL OR (qry_1.Field3) = '" & [Forms]![frm_Parameters]![cmbx_3] & "') ;"
DoCmd.RunSQL SQL
解决方案
DoCmd.RunSQL
用于操作查询 ( UPDATE
, INSERT
, DELETE
)。
要回答这个问题,我会这样做:
Nz(Field1,Nz([Forms]![frm_Parameters]![cmbx_1]))=Nz([Forms]![frm_Parameters]![cmbx_1])
Field1
如果其中一个或为 NULL,这将创建相等性,[Forms]![frm_Parameters]![cmbx_1]
而不会破坏查询的其余部分。
要在 VBA 中使用它:
"Nz(Field1,'" & Nz([Forms]![frm_Parameters]![cmbx_1]) & "')='" & Nz([Forms]![frm_Parameters]![cmbx_1]) & "'"
另请参阅 Olivier Jacot-Descombes 回答中关于考虑字符串中的单引号的评论。
推荐阅读
- c# - 达到分数后如何增加健康
- xamarin.forms - 区域更改时如何获取view.map(Xamarin.Forms.Maps)中心的纬度和经度?
- spring - Liquibase loadData 变更集忽略上下文
- python - Dash python 实时更新表
- reactjs - 如何在react中删除reducer中数组中的对象?
- php - php 服务器发送事件聊天应用程序的行为类似于轮询
- python - 我想从一个数据框中选择其值存在/不存在于另一个数据框中的所有记录。如何使用 pyspark 数据框做到这一点?
- javascript - 如何在 Angular HttpInterceptor 中使用异步 http 请求
- makefile - 关于makefile中的执行顺序
- python - Python - 将类变量指针分配给实例方法