以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]帮忙看下原因,SQL句执行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11075)

--  作者:dlovef
--  发布时间:2011/7/6 19:05:00
--  [求助]帮忙看下原因,SQL句执行问题
基于独占式编辑设计中的问题
前提:t_yg表中的sys_locked字段没有值
问题:
1,开始是用的条件(sys_locked Is Null Or sys_locked = \'" & _UserName & "\'),始终检索不出结果。什么原因呢?
2,改用条件(sys_locked Is Null Or sys_locked = \'" & _UserName & "\')检索时奇怪的事情发生了。
如下图一,当_UserName不为空时,字符串拼接成的条件为(sys_locked = \'\' Or sys_locked = \'xxx\') And [_Identify] = 3) 检索结果为0
如下图二,当_UserName为空串时,字符串拼接成的条件为(sys_locked = \'\' Or sys_locked = \'\') And [_Identify] = 3 检索结果为1
问题点在于,前提是sys_locked没有值,所以理论上来说,对于图一和图二中的条件,(sys_locked = \'\')应该都满足,检索结果应该都为1,
可是为什么只有图二中的检索结果为一呢?也就是说图二中Or后面的(sys_locked = \'\')条件生效了,而Or前面的却不满足。很困惑,求解。
3,在保存时(Tables("t_yg").Current("sys_locked") = Nothing)这句执行结果也不能生效。即保存后,sys_locked中仍然有值。

图一

图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看
图二

图片点击可在新窗口打开查看此主题相关图片如下:截图03.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2011-7-6 19:08:59编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/7/7 8:26:00
--  

= "" 和 Is Null 是不一样的

刚开始的条件表达式是正确的,没有结果出也许就是没有符合条件的记录。

你可以在SQL 执行窗口调试一下合成的SQL语句。


--  作者:dlovef
--  发布时间:2011/7/7 8:46:00
--  
我的执行结果就是在命令窗口执行的。
狐爸可以帮忙解释一下问题2的现象吗?

--  作者:狐狸爸爸
--  发布时间:2011/7/7 8:56:00
--  

我是说在SQL执行窗口调试好SQL语句:

http://help.foxtable.com/topics/1484.htm

 

sys_locked = \'\' Or sys_locked = \'xxx\'

检索不到数据,说明此列内容不等于xxx, 留意表中原始内容后面是否有空格回车之类的。

 


--  作者:dlovef
--  发布时间:2011/7/7 9:30:00
--  
狐爸,因为表里是没有数据的,所以我是想让(sys_locked = \'\') 为True,我比较困惑的是图二有结果,图一没结果。


--  作者:狐狸爸爸
--  发布时间:2011/7/7 9:38:00
--  

SQL不会撒谎的,有就是有,没有就是没有。

没有数据测试,不能判断具体原因。

 

你可以:

 

DataTables("xxx").LoadFilter = "(sys_locked = \'\' Or sys_locked = \'\') And [_Identify] = 3 "

DataTables("xxx").Load()

 

看看加载的这行数据,到底是什么。


--  作者:dlovef
--  发布时间:2011/7/7 9:54:00
--  
狐爸,结果是有的,我想问的就是((sys_locked = \'\' Or sys_locked = \'\') )这个条件的Or的左右看着是完全一样的,可是为什么会出现不一样的判断结果呢?
--  作者:狐狸爸爸
--  发布时间:2011/7/7 9:58:00
--  

呵呵,这个得问微软了。

 

图片点击可在新窗口打开查看


--  作者:dlovef
--  发布时间:2011/7/7 10:07:00
--  
这个,这个,太高深了。不过还是谢谢了。