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, 那要怎样修改红色那部分代码?
谢谢。
1、不一样,两个单引号中间没有东西表示空字符串,空字符串也是一种值,不是空值
3、使用is not null
3. 我测试过了, 如果用 SQLfind, 即使用 is not null, 也找不到应有的数据行。而 如果只用 find 的话,就可以找到应有的数据行。
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,这样的结果肯定不符合我的要求.请问还有什么方法可以排除空值吗?谢谢。
列名不需要单引号,列名右边的字符串值才需要单引号
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")