Foxtable(狐表)用户栏目专家坐堂 → 空值問題


  共有8763人关注过本帖树形打印复制链接

主题:空值問題

帅哥哟,离线,有人找我吗?
hhbb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
空值問題  发帖心情 Post By:2012/4/7 16:43:00 [只看该作者]

窗口中有一SQLQuery查詢表,Fill1與Fill2都有"Email"列,設一鍵二用,篩選Email用戶與冇Email用戶,結果,折騰許久,非得如此設置才成!不明白啊??

其中  Fill1的Email列內容是由SQL的INNER JOIN連接[客戶資料]表而來,
        Fill2的Email列內容是由[客戶資料]表賦值而來

[ > '', ='']  與 [ Is not Null, Is Null] 省掉任何一個都不行

Dim s1 As String
Dim t As Table =Tables("查詢_Table1")
vars("bn1") =not vars("bn1")

If t.DataTable.DataCols.Contains("轉賬方式") Then
   s1 =  iif(vars("bn1") = True," > ''"," =''")        
Else
    s1  = iif(vars("bn1") = True," Is not Null"," Is Null")
End If

t.filter = "Email" & s1

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 8:23:00 [只看该作者]

是这样的,因为""不一定就是null
 
正如:
 
所有的表都有一个名为_Locked的列,用于保存行的锁定状态。
如果要筛选已经锁定的行,表达式为:
[_Locked] = True
如果要筛选未锁定的行,表达式却不能简单地设为:
[_Locked] = False
这是因为_Locked列中可能有空值,所以正确的表达式为:
[_Locked] = False Or [_Locked] Is Null
虽然我们用的是_Locked这样一个特殊的列作为例子,但是上面的知识适合任何逻辑

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/4/9 11:04:00 [只看该作者]

我現在寫成這樣OK,但如以[Email Is not null] 替代 [Email > ''],反而不OK了,
[Email Is not null] <> [Email > '']嗎?非空[Email > '']更通用嗎?

Dim s1 As String
Dim t As Table =Tables("查詢_Table1")

vars("bn1") =not vars("bn1")
s1=  iif(vars("bn1") = True,"Email > ''","Email is Null or Email =''")        
t.filter = s1



 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 11:07:00 [只看该作者]

最保险的就是:

 

Email is Null or Email =''

 

因为有的单元格是真的null,有的单元格的值是'',不是null,只是看上去null


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/4/9 11:12:00 [只看该作者]

明白Email is Null or Email =''

我說是[Email Is not null] 不等於 [Email > '']嗎?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 11:14:00 [只看该作者]

不等于的。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/4/9 11:24:00 [只看该作者]

以下是引用狐狸爸爸在2012-4-9 11:14:00的发言:

不等于的。


昏!這個空與非空還真複雜! 難道何時用 [Email > ''],何時用[Email Is not null]只能實踐了?



 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 11:25:00 [只看该作者]

不用实践,不管三七二一,两个都写上,用or连起来。
[此贴子已经被作者于2012-4-9 11:25:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/4/9 11:30:00 [只看该作者]

以下是引用狐狸爸爸在2012-4-9 11:25:00的发言:
不用实践,不管三七二一,两个都写上,用or连起来。
不行啊!這個OK
Dim s1 As String
Dim t As Table =Tables("查詢_Table1")
vars("bn1") =not vars("bn1")
s1=  iif(vars("bn1") = True,"Email > ''","Email is Null or Email =''")        
t.filter = s1


兩個都寫上不OK啊?
Dim s1 As String
Dim t As Table =Tables("查詢_Table1")
vars("bn1") =not vars("bn1")
s1=  iif(vars("bn1") = True,"Email Is not Null or Email > ''","Email is Null or Email =''")        
t.filter = s1


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 11:36:00 [只看该作者]

第一个是正确:
 
Email is Null or Email = ''
 
第二个应该:
 
Email Is not Null  And Email >''

 回到顶部
总数 12 1 2 下一页