请问VBSCRIPT的isnull函数为什么怪怪的
当然也可能是ACCESS怪怪的,可是明明一个公司的产品,不应该不兼容呀!
表单中字段A没有任何输入,保存到数据库时我在ASP里检查了一下:
if request("xqdNo")="" then response.write "xqdno是空串< br> "
if isnull(request("xqdNo")) then response.write "xqdno isnull< br> "
显示“xqdno是空串”。就是说vbscript的isnull函数认为表单域没有输入值是""
然后就没有特殊处理,和有内容的字段一样直接保存了。
但当我查询这个字段的时候问题来了,如果用 字段=""的条件就查不到结果,一定要用
isnull(字段)。这是怎么回事呢?
一个vbscript眼中的""变成了access中的null
这和access中字段定义的那些“必填字段”,“允许空字符串”的选项有关系吗?
我希望是输入的时候空和非空一样对待,查询的时候也是空和非空一样,不用判断。
请指点,谢谢!
问题点数:30、回复次数:8Top
1 楼blow_jj(阿俊)回复于 2002-02-28 14:24:12 得分 15
你用request("xqdNo")等于是把变量xqdNo初始化了,没有得到值是""(这一点从GWBasic看是就这样),而用select查询则不同,继承了SQL的语法,没有就是Null.Top
2 楼FivePuzzle(五迷)回复于 2002-02-28 15:52:22 得分 0
我有点似懂非懂。
既然用request("xqdno")已经初始化得到""值,那保存到数据库的时候不就应该按照""保存而不是认为null吗?
您是说数据库中保存的仍然是一个null值吗?
如果是这样就还是我迷惑的地方啊!
我改用这样的方法:
if request("xqdno")="" then
rs("xqdno")=""
(虽然request("xqdno")="",但是一定要赋值"",不能赋值request("xqdno")
else
rs("xqdno")=request("xqdno")就可以了,数据库中保存了""
但是这样我觉得本身就不合逻辑:-(
Top
3 楼lanying(蓝鹰)(问个不休)回复于 2002-02-28 19:42:49 得分 5
应该用IsEmpty
Top
4 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-02-28 20:31:05 得分 5
Null是“非法值”
Empty代表0或者空串Top
5 楼ksy(一定要争气)回复于 2002-02-28 20:41:28 得分 5
楼上的有道理Top
6 楼blow_jj(阿俊)回复于 2002-02-28 20:52:45 得分 0
初始化了不就是代表0或者空串
真抠门...Top
7 楼blow_jj(阿俊)回复于 2002-02-28 20:55:51 得分 0
request得不到的变量写入数据库应该是null,从数据库里得出的值没有""这东东(我的水平不高,不一定合乎概念,自己理解...)Top
8 楼FivePuzzle(五迷)回复于 2002-03-06 10:29:18 得分 0
前几天出差了没顾上,虽然我觉得没有人回答为什么
if request("xqdno")="" then
rs("xqdno")=""
else
rs("xqdno")=request("xqdno")
就可以在数据库中保存"",直接赋值""就变成null(不是从数据库里得出的值没有""),不过大家这么热心,非常感谢。分不多,表示感谢而已!Top




