vb用ado连接的数据库,取的记录放在变量data_value里,值为0-3的数字,因为范围小,我就将data_value定义为byte类型的,
但是在运行中碰到错误。
因为数据库中有时候记录是不存在的,所以取到的值就为空值,放到data_value就类型不匹配,只有把data_value定义为变体的才能赋值。
只有将data_value定义为变体吗? 没有别的方法了?  谢谢

解决方案 »

  1.   

    Dim data_value As Byte
    data_value=CByte(rs("data_value") & "")
      

  2.   

    data_value=CByte(rs("data_value") & "")rs 是什么?  我试了一下 还是不行
      

  3.   

    因为数据库中有时候记录是不存在的,所以取到的值就为空值
    ------------------------------------------------------------
    你是怎么取值的呢?上面的rs 是记录集对象,它存放的是查询得到的记录集,rs("data_value") 是取当前记录的data_value字段的值
      

  4.   

    你的取值并把值放到data_value变量去 的代码是怎么写的?
      

  5.   

    Dim data_value As Byte
    data_value=iif(IsNull("记录")?0,CByte(Val("记录")))
      

  6.   

    没看到你用到ADO,用ADO可以这样做:Private Sub Command1_Click()
        Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, strSql As String
        cn.CursorLocation = adUseClient
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;User Id=admin;Password=;"
        cn.Open
        strSql = "select iif(IsNull(字段名),0,CByte(字段名) As 字段别名 from 表 "
        Set rs = cn.Execute(strSql)
        
        Dim data_value As Byte
        If Not rs.EOF Then data_value = rs("字段名")
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
    End Sub
      

  7.   

    If Not rs.EOF Then data_value = rs("字段名")
    ---------------------------
    这句改为:
    If Not rs.EOF Then data_value = rs("字段别名")
      

  8.   

    data_value = Trim(data_jg.Fields(0).Value)
    我是这样赋值的
      

  9.   

    赋值之前先用IsNull函数判断一下字段是否为空值。