ISNULL和ISEMPTY是不是必须用于判断VARIAIN类型数据,不可用于判断其他类型的(如数值或文本型)数据?

解决方案 »

  1.   

    它们用于其它数据类型时只会返回false.你那个房间号是文本还是数值类型的?
      

  2.   

    如果房间号是数值类型的,在添加新记录时会初始化为0,这样在VB中用isnull会返加false,如果是在access中输入法的话要把0删掉,如果是用程序添加记录的话加明确赋值为null,这样isnull就会返true了。
    如果是文本,默认为null,在VB中isnull会返回true,如果输入或赋值为"",则为零长度字符串,isnull返回false.如果要判断文本字段为null还是零长度字符串,可先用isnull测试,然后再用len测长度。
      

  3.   

    可以用,不过始终返回 False,没有意义。
    就像你用 Is飞行器(自行车) 一样。
      

  4.   

    说说我理解的逻辑关系吧:
    1,ISNULL和ISEMPTY是Variant型变量特有的值状态
    2,VB6允许把其它类型变量赋值给Vaiant变量,但因为1,所以赋值后也只可能是其它值
    3,所以你用ISNULL和ISEMPTY去判断其他类型的变量数值,"相当于判断一个隐含转换后的Variant变量",当然会永远是False
      

  5.   

    Variant类型不是简单数据类型.它的内存结构里包含了一些标志位,所以可以进行一些特殊操作.例如IsMissing函数,就不能判断Long之类的简单数据类型是否作为有效参数传进来了,因为Long之类的简单数据类型里并没有"丢失"标志位.ISNULL和ISEMPTY应该也差不多.....
      

  6.   

    按微软的定义,使用IsNull和IsEmpty时,参数应为Variant类型数据。数据类型都有默认值:
    类型         默认值
     String     空串(注意空串是字串的一种,和Empty不是一回事)
     Integer    0 
     Long       0 
     Single     0 
     Double     0 
     Currency   0 
     Date       0:00:00 
     Boolean    False
     Byte       0 
     Variant类型数据的默认值是Empty    
      

  7.   

    你说对了,对变量值的判断,ISNULL和ISEMPTY只对VARIAIN类型数据有用,而数字用IsNumeric判断。对于一个VARIAIN变量要判断它的数据类型可以用TypeName
    dim a ,b as string
    a="aaaa"
    debug.print typename(a)
    a=100
    debug.print typename(a)
    .
    .