我用listview显示数据库里的数据,下面是一部分代码。
Dim rs1 As ADODB.Recordset
Set rs1 = New ADODB.Recordset
Dim i As Integer
rs1.Open si, conn, 1, 1
Do While Not rs1.EOF
  Set addlist = ListView1.ListItems.Add
  
  addlist.SubItems(0) = IIf(IsNull(rs1.Fields("资产标志").Value), "", rs1.Fields("资产标志").Value)
  addlist.SubItems(1) = IIf(IsNull(rs1.Fields("资产编号").Value), "", rs1.Fields("资产编号").Value)
  addlist.SubItems(2) = IIf(IsNull(rs1.Fields("资产名称").Value), "", rs1.Fields("资产名称").Value)
  addlist.SubItems(3) = IIf(IsNull(rs1.Fields("品名").Value), "", rs1.Fields("品名").Value)
  addlist.SubItems(4) = IIf(IsNull(rs1.Fields("生产厂家").Value), "", rs1.Fields("生产厂家").Value)
  addlist.SubItems(5) = IIf(IsNull(rs1.Fields("型号").Value), "", rs1.Fields("型号").Value)
  addlist.SubItems(6) = IIf(IsNull(rs1.Fields("配置").Value), "", rs1.Fields("配置").Value)
  addlist.SubItems(7) = IIf(IsNull(rs1.Fields("数量").Value), "", rs1.Fields("数量").Value)
  addlist.SubItems(8) = IIf(IsNull(rs1.Fields("购进单位").Value), "", rs1.Fields("购进单位").Value)
  addlist.SubItems(9) = IIf(IsNull(rs1.Fields("使用人").Value), "", rs1.Fields("使用人").Value)
Text2.Text = Text2.Text + Val(rs1.Fields("数量").Value)
rs1.MoveNext
Looprs1.close
conn.close
我执行的时候,addlist.SubItems(0) = IIf(IsNull(rs1.Fields("资产标志").Value), "", rs1.Fields("资产标志").Value)这句会出现错误:无效的属性值。

解决方案 »

  1.   

    addlist.SubItems(1) = rs1("资产标志") &""
    addlist.SubItems(2) = rs1("资产编号) &""
    ...
      

  2.   

    第一列的文本是 ListItem 的 Text 属性,不在 SubItems 中
    Set addlist = ListView1.ListItems.Add(, , rs1.Fields("资产标志").Value & "")
     
    addlist.SubItems(1) = rs1.Fields("资产编号").Value & ""
    addlist.SubItems(2) = rs1.Fields("资产名称").Value & ""
    ...
      

  3.   

    那你得设置好控件的属性,列数为subitems的总数+1
      

  4.   

    如果控件总共有十列,且"资产标志"作为第一列的内容,则如4楼,亦可Set addlist = ListView1.ListItems.Addaddlist.text=rs("资产标志") &""
    addlist.SubItems(1) = rs1("资产编号) &""
    ....
    控件上点右键,设置列数也可以listview.columnheaders.add添加列
      

  5.   


    看你ColumnHeader有几列
    第一列  是.Text
    第二列  SubItem(1)
    第三列  Subitem(2)
    ……'你的改成这样
    Dim rs1 As ADODB.Recordset
    Set rs1 = New ADODB.Recordset
    Dim i As Integer
    rs1.Open si, conn, 1, 1
    Do While Not rs1.EOF
      Set addlist = ListView1.ListItems.Add
       
      addlist.Text = IIf(IsNull(rs1.Fields("资产标志").Value), "", rs1.Fields("资产标志").Value)'这一句!!!!
      addlist.SubItems(1) = IIf(IsNull(rs1.Fields("资产编号").Value), "", rs1.Fields("资产编号").Value)
      addlist.SubItems(2) = IIf(IsNull(rs1.Fields("资产名称").Value), "", rs1.Fields("资产名称").Value)
      addlist.SubItems(3) = IIf(IsNull(rs1.Fields("品名").Value), "", rs1.Fields("品名").Value)
      addlist.SubItems(4) = IIf(IsNull(rs1.Fields("生产厂家").Value), "", rs1.Fields("生产厂家").Value)
      addlist.SubItems(5) = IIf(IsNull(rs1.Fields("型号").Value), "", rs1.Fields("型号").Value)
      addlist.SubItems(6) = IIf(IsNull(rs1.Fields("配置").Value), "", rs1.Fields("配置").Value)
      addlist.SubItems(7) = IIf(IsNull(rs1.Fields("数量").Value), "", rs1.Fields("数量").Value)
      addlist.SubItems(8) = IIf(IsNull(rs1.Fields("购进单位").Value), "", rs1.Fields("购进单位").Value)
      addlist.SubItems(9) = IIf(IsNull(rs1.Fields("使用人").Value), "", rs1.Fields("使用人").Value)
    Text2.Text = Text2.Text + Val(rs1.Fields("数量").Value)
    rs1.MoveNext
    Looprs1.close
    conn.close
      

  6.   

    我4楼已经说了,lijie005168 没反应。
      

  7.   

    Private Sub Command1_Click()
    Dim xx As ListItem
    For ii = 1 To 5
    Set xx = ListView1.ListItems.Add(, , "AA" & ii)
      With xx
        .SubItems(1) = "ff" & ii
        .SubItems(2) = "ddff" & ii * 25
    End With
    Next ii
    End SubPrivate Sub Form_Load()
    ListView1.View = lvwReport
    ListView1.ColumnHeaders.Add , , "第1列", 1000
    ListView1.ColumnHeaders.Add , , "第2列", 1000
    ListView1.ColumnHeaders.Add , , "第3列", 1000
    End Sub