val(.Fields("a_count")  &"")

解决方案 »

  1.   

    if isnull(rs("字段名")) then
       '相关处理
    end if
      

  2.   

    ferrytang(ferry),写全一些,行吗?
      

  3.   

    给你提个变通的主意可以判断一下
    当然是if条件句
    if str=null then
      str=0
    end if
    之类,如果觉得麻烦可以写成一个过程或函数!
      

  4.   

    or
    iif(isnull(rs("field")),0,rs("field") )
      

  5.   

    我也遇到过类似的问题,我觉得最好的解决办法,我认为是在设计数据库的时候就将这些数值型的字段的默认值设为0,还有一种方法就是在执行这些语句之前写一个UPDATE语句,把所有为NULL的记录置为0,具体做法如下
    dim cmd as command
    set cmd=new command
    cmd.activeconnection=conn
    cmd.execute "update temp set a_count=0 where a_count is null"
    这几个语句我并没有调试,也许有的关键字会有错误的。
    上面的一些方法也是可以的,不过我不主张把数值型的数据填为NULL,因为这样在统计的时候一定会出现问题,这个我是深有体会,我曾经做过一个纵向求和,也就是列求和,这是不能采取上面的方法的,这就只能用我的这种方法了。
      

  6.   

    Null &""=""
    上面的看得懂吗??
    那么 val(NUll&"")=0 看得懂吗?那么现在处理数据库中会出现的问题
    对于任何形态的字段,最怕的就是Null
    string型
           rst("aaa")&""
           如果rst("aaa")=Null
    那么rst("aaa")&""=""
           否则
    假设rst("aaa")="abc"
    那么rst("aaa")="abc"没什么影响吧数值型       val(rst("aaa")&"")
           如果rst("aaa")=Null
    那么rst("aaa")&""=""
           val(rst("aaa")&"")=0
           
    如果rst("aaa")=9
    那么  val(rst("aaa")&"")=9没什么影响吧所以,在获取数据库的字段的值的时候先 &""然后作类型转换就可以避免Null了
    不用写什么方法去判断修改了
      

  7.   

    ferrytang(ferry),你好,你这样写很难看,我建议你,在代码的地方就用英文,注释的地方用中文,代码写得完整一些。谢谢!!
      

  8.   

    c_c_(cc)你好,你的建议很好,我把字段的默认值设为0程序就通过了。
    但是,我想知道在VB程序中如何将数字型字段的值为Null的字段一次性批量替换成0。
      

  9.   

    注:上面写的是蹩脚伪代码,不是有注释的代码!
    total1  =  val(.Fields("a_count")&"")  +  val(.Fields("b_count")&"")  + val( .Fields("c_count")&"")  + val( .Fields("d_count")&"")
    换成这样你调试一下看看!
    记住这一点,任何字符串&""都与它本身或"",所以利用val函数会将""转换成0这一特性,我们不用判断就可以将Null转换成 0,其他数值不变!你自己在立即窗体下试验一下如下代码
    ?val("")
    ?val("dhfhg67")
    ?val("123fghj565")
    ?val("35647.00")
    看看是什么结果!
     
      

  10.   

    //在VB中解决   :)
    定义公共的记录集对象
    public rs as ADODB.Recordset再定义一个转换的函数
    Function myConvert(Bool As Boolean, Fieldname As String) As Long
        If Bool = False Then
            myConvert = rs(name).Value
        Else
            myConvert = 0
        End If
    End Function调用:
    set rs=myred   
    Do  Until  myred.EOF
        total1  =  myConvert(isnull(myred("a_count")),"a_count")  +  myConvert(isnull(myred("b_count")),"b_count")  +  .....
      

  11.   

    定义一个函数:
    '如果字段值为NULL值或空串,则设其为0
    Public Function ifZero(ByVal Var As Variant) As Variant
        If IsNull(Var) Or Trim(Var) = "" Then
            ifZero = 0
        Else
            ifZero = Var
        End If
    End Function
      

  12.   

    '如果字段值为NULL值或空串,则设其为0
    Public Function ifZero(ByVal Var As Variant) As Variant
        If IsNull(Var) Or Trim(Var) = "" Then
            ifZero = 0
        Else
            ifZero = Var
        End If
    End Function
      

  13.   

    '如果字段值为NULL值或空串,则设其为0
    Public Function ifZero(ByVal Var As Variant) As Variant
        If IsNull(Var) Or Trim(Var) = "" Then
            ifZero = 0
        Else
            ifZero = Var
        End If
    End Function