本帖最后由 bcrun 于 2010-07-30 09:24:00 编辑

解决方案 »

  1.   

    概念错误:
    1.
    dim artmp1(1439) as single
    这个声明后,VB初始化每个元素的值都为0
    2.
    只有variant类型的数据才可以赋值null...
    If arTmp(j) = Null Then 返回null
    判断variant的值是不是null,用isnull函数....
      

  2.   

    arTmp()是string,正确的判断方法:
     if arTmp(i)="" then ....
     if arTmp(i)=vbnullstring then ....
     if len(arTmp(i))=0 then....
      

  3.   

    谢谢。因为null是从数据库中读出来的,写入文本后,将每个数据从文本中读出放入数组的。刚才试了您的方法,还是不行。
      

  4.   

    那你的文本打开是什么样的?If arTmp(j) = "Null" Then 试试看?
      

  5.   

    If isnull(arTmp(j)) Then ...参考:
    http://topic.csdn.net/u/20100729/16/f7610d13-3515-4d5d-9fe8-0c0bfc762cf7.html?56555
      

  6.   

    还是不对啊。试了好多种方法,都是不行。因为是从oracle数据库中读出来的,其oracle字段格式为clob格式,所以写到文本中是NULL值,现在没法判断NULL了。大家帮忙再想想办法,写了个小程序,就到这卡住了。
      

  7.   

    如6楼所说,用字符串比较,不过注意大小写
    If UCase(arTmp(j)) = "NULL" Then
      

  8.   

    问大家一个问题,如果文件是以binary形式写入文本的,读出的null怎么表达?因为我是读的clob类型中的数据,数据中有null值,我将读出的数据写入文本,文本中显示的是null,但是就是读不出来,感觉vb不认这个。
      

  9.   

    你用记事本打开文本文件,如果在相应字段的位置上可以看到字母"Null",那老鸟的说法就是正确的。(没用过oracle)
      

  10.   

    打开了,也试验了,就是认不出来。我单步执行,一到null连显示也不显示了。
      

  11.   

    问题已经解决。谢谢大家。出现问题的地方是循环出,就是for j=0 to 59下边的那句话,应该将j加上i做判断。要不总是循环读0到59个数据。他们如果不是null的话,肯定直接略过了。