以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  空值疑问  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176112)

--  作者:michl
--  发布时间:2022/3/31 10:02:00
--  空值疑问
表A,表B两表中编号列字符相同,规格列同为空
Dim r As Row ..表A
Dim br As Row ..表B
Output.Show(r("编号") = br("编号"))
Output.Show(r("规格") = br("规格"))
都显示为True
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & r("编号") & "\' and 规格 = \'" & r("规格") & "\'")
drs.count = 0 
明明两个条件都成立,为什么查询不到呢?代码应该怎么写

--  作者:有点蓝
--  发布时间:2022/3/31 10:06:00
--  
空值要另外处理

if r.isnull("规格") then
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & r("编号") & "\' and 规格 is null\'")
else
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & r("编号") & "\' and 规格 = \'" & r("规格") & "\'")
endif

--  作者:michl
--  发布时间:2022/3/31 10:50:00
--  
接上面,用表B生成统计表后,编号、规格分组列都变成了备注型,再用统计表数据继续查询表B时
dim xr as row ..\'统计表中行
此时 xr.isnull("规格") =false ,下面代码也就不对了,应该怎么处理呢
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & xr("编号") & "\' and 规格 is null")

--  作者:有点蓝
--  发布时间:2022/3/31 11:00:00
--  
if r.isnull("规格") then "规格"为空的用法
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & r("编号") & "\' and 规格 is null\'")
else "规格"为空的用法
Dim drs As List(of DataRow) = DataTables("表B").Select("编号 = \'" & r("编号") & "\' and 规格 = \'" & r("规格") & "\'")
endif

如果不知道if else是干嘛用的,学一下编程基础:http://www.foxtable.com/webhelp/topics/0223.htm

--  作者:michl
--  发布时间:2022/3/31 11:21:00
--  
老师,上一个问题是用交叉统计后分组列"规格"变成了备注型,不知是不是跟列类型有关系。
在生成的统计表中xr("规格")显示是空的,但xr.isnull("规格")却返回false。


--  作者:有点蓝
--  发布时间:2022/3/31 11:24:00
--  
请上传实例说明
--  作者:michl
--  发布时间:2022/3/31 11:54:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:示例.rar


--  作者:有点蓝
--  发布时间:2022/3/31 13:57:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:示例.zip


--  作者:michl
--  发布时间:2022/3/31 15:19:00
--  
谢谢老师更正。貌似可以理解为备注型不存在is null,直接if dr("规格") <> ""即可
--  作者:有点蓝
--  发布时间:2022/3/31 15:41:00
--  
和备注型这个类型本身没有什么关系,而是生成统计表的过程中,因为统计计算的原因,空值处理成了空字符串