以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 查找空值 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=195893) |
-- 作者:edisontsui -- 发布时间:2025/3/19 7:42:00 -- 查找空值 Dim drf1 As DataRow = DataTables("出入库C").SQLFind("物料编号 = " & "\'" & e.DataRow("物料编号") & "\' and YNS > " & "\'" & "" & "\' and _identify <>" & e.DataRow("_identify"), "录入时间 Desc") 老师,上面这段代码我是希望找到 YNS 不为空值的数据行,现在有几个问题请教: 1、红色那部分代码改为 YNS is not null, 其效果是不是一样的? 2、Find 这个词改为 SQL 的话,就找不到本应存在的数据行,那是不是有了红色那节代码,就不能用 SQLfind,只能用 Find 了 ? 3、如果还是希望用SQLFind, 那要怎样修改红色那部分代码? 谢谢。
|
-- 作者:有点蓝 -- 发布时间:2025/3/19 8:52:00 -- 1、不一样,两个单引号中间没有东西表示空字符串,空字符串也是一种值,不是空值 2、和红色代码没有关系。find只查询已经加载的数据,sqlfind只程查询后台已经保存的数据:http://www.foxtable.com/webhelp/topics/2902.htm 3、使用is not null
|
-- 作者:edisontsui -- 发布时间:2025/3/19 10:23:00 -- 3. 我测试过了, 如果用 SQLfind, 即使用 is not null, 也找不到应有的数据行。而 如果只用 find 的话,就可以找到应有的数据行。 |
-- 作者:有点蓝 -- 发布时间:2025/3/19 10:33:00 -- 只能说明 1、需要查询的数据没有保存 2、后台没有符合条件的数据
|
-- 作者:edisontsui -- 发布时间:2025/4/23 15:21:00 -- Dim n5 As Integer = Tables(tx3.value).DataTable.GetValues(lm, "[筛选标记] = \'" & st1 & "\' and \'" & lm & "\' <> \'" & "" & "\' ").count Dim n5 As Integer = Tables(tx3.value).DataTable.GetValues(lm, "[筛选标记] = \'" & st1 & "\' and \'" & lm & "\' Is Not Null").count 老师,上面两句代码的目的都是要排除列名 lm (是一串字符串,比如 “开料代号”) 为空值的数据,但是实际计算结果,哪怕 “开料代号” 没有任何数据, n5 都是 1,这样的结果肯定不符合我的要求.请问还有什么方法可以排除空值吗?谢谢。
|
-- 作者:有点蓝 -- 发布时间:2025/4/23 16:07:00 -- 列名不需要单引号,列名右边的字符串值才需要单引号 Dim n5 As Integer = Tables(tx3.value).DataTable.GetValues(lm, "[筛选标记] = \'" & st1 & "\' and " & lm & " Is Not Null").count 学会调试看实际的条件,下面有什么区别? msgbox("[筛选标记] = \'" & st1 & "\' and \'" & lm & "\' Is Not Null") msgbox("[筛选标记] = \'" & st1 & "\' and " & lm & " Is Not Null")
|
-- 作者:edisontsui -- 发布时间:2025/4/23 16:51:00 -- 谢谢。 |