请大家进来帮忙,看一看这个错误“无效的属性值”怎么样解决
错误在这句中itmX.SubItems(1) = Format(CStr(Rs!C_name), "") 提示是无效的属性值。    Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
    cn.ConnectionString = "Provider=MSDASQL.1;DRIVER={adaptive server anywhere 8.0};Persist Security Info=False;DSN=ascnew_2_server; SRVR=ascnew8947;DB=" & db & ";UID=dba;PWD=nokia&shangsi&asc"
    cn.Open
    Rs.CursorLocation = adUseClient
    Rs.Open "select * from T_AX_Corp_Info", cn, 3, 1
        While Not Rs.EOF
   Set itmX = ListView1.ListItems.Add(, , CStr(Rs!c_code))
     If Not IsNull(Rs!c_code) Then
               itmX.SubItems(1) = Format(CStr(Rs!C_name), "") '第一种               'itmX.SubItems(1) = CStr(Rs!C_name) 第二种               'itmX.SubItems(1) = Rs!C_name  第三种      End If
      Rs.MoveNext   '移动到下一条记录。
   Wend
    
     Set Rs = Nothing
     Set cn = Nothing

解决方案 »

  1.   

    还真不习惯这种写法,我一般写成Rs.Fields().对了,这里加上Format并把第二个参数设为""的意图是什么呢
      

  2.   

    Rs.Fields("c_name")改成这个错误提示一样。
    因为我在看别人代码中这样写。在他的测试中可以显示正常,就改成他那个样子。但是感觉没有实质意义。
    他的代码
       Do Until Rsbdata.EOF 'x < 100
        'Do while Rsbdata.EOF       
            '建立行头先
            ListView1.ListItems.Add , , Rsbdata.Fields(0)
            'DoEvents 
        '每一次循环得到的数据
        For i = 1 To Rsbdata.Fields.Count - 1
            ListView1.ListItems(Rsbdata.AbsolutePosition).SubItems(i) = Format(Rsbdata.Fields(i).Value, "") 
        Next i
            Rsbdata.MoveNext
            'x = x + 1
        Loop
        'MsgBox "数据处理完毕!", 64
        Rsbdata.Close '关闭记录集
    '--------------------------------------
        Exit Sub
      

  3.   

    s=Format(Rs!C_name)
    format后就类似于cstr,所以cstr多余... 
    可靠的方法:
    s=Rs!C_name & vbnullstring
      

  4.   


    Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
    ListView1.View = lvwReport
    ListView1.ColumnHeaders.Add 1, , ""'注您要显示多少列就有多少个
    ListView1.ColumnHeaders.Add 1, , ""
    ListView1.ColumnHeaders.Add 1, , ""
    cn.ConnectionString = "Provider=MSDASQL.1;DRIVER={adaptive server anywhere 8.0};Persist Security Info=False;DSN=ascnew_2_server; SRVR=ascnew8947;DB=" & db & ";UID=dba;PWD=nokia&shangsi&asc"
        cn.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from T_AX_Corp_Info", cn, 3, 1
     While Not Rs.EOF
       Set itmX = ListView1.ListItems.Add(, , CStr(Rs!c_code))
         If Not IsNull(Rs!c_code) Then
                   itmX.SubItems(1) = Format(CStr(Rs!C_name), "") '第一种               'itmX.SubItems(1) = CStr(Rs!C_name) 第二种               'itmX.SubItems(1) = Rs!C_name  第三种      End If
          Rs.MoveNext   '移动到下一条记录。
       Wend
        
         Set Rs = Nothing
         Set cn = Nothing
      

  5.   

    不好意思上面忘了定义itmxDim cn As New ADODB.Connection, Rs As New ADODB.Recordset
    Dim itmx As ListItem
    ListView1.View = lvwReport
    ListView1.ColumnHeaders.Add 1, , ""'注您要显示多少列就有多少个
    ListView1.ColumnHeaders.Add 1, , ""
    ListView1.ColumnHeaders.Add 1, , ""
    cn.ConnectionString = "Provider=MSDASQL.1;DRIVER={adaptive server anywhere 8.0};Persist Security Info=False;DSN=ascnew_2_server; SRVR=ascnew8947;DB=" & db & ";UID=dba;PWD=nokia&shangsi&asc"
        cn.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from T_AX_Corp_Info", cn, 3, 1
     While Not Rs.EOF
       Set itmX = ListView1.ListItems.Add(, , CStr(Rs!c_code))
         If Not IsNull(Rs!c_code) Then
                   itmX.SubItems(1) = Format(CStr(Rs!C_name), "") '第一种               'itmX.SubItems(1) = CStr(Rs!C_name) 第二种               'itmX.SubItems(1) = Rs!C_name  第三种      End If
          Rs.MoveNext   '移动到下一条记录。
       Wend
        
         Set Rs = Nothing
         Set cn = Nothing
      

  6.   

         If Not IsNull(Rs!c_code) Then'跟这个写法一样不就可以了
                   if not IsNull(Rs!C_name) then itmX.SubItems(1) = Rs!C_name
      

  7.   

    谢谢,大家。找到原因了。
    原来我少定义了
    ListView1.ColumnHeaders.Add 1, , ""
    看到才想起来,没有定义。
    不过也学到东西了。不白问。
    感谢大家的关系
      

  8.   

    itmX.SubItems(1) = Rs!C_name & ""