Call OpenConn '调用(连接数据库函数)OpenConn
Set rs_1 = DbConn.Execute("SELECT * FROM B表 where Display=1")
If rs_1.EOF Then
    Set rs_1 = Nothing
    Call CloseConn
    MsgBox "没有可显示的列", vbExclamation
    Exit Sub
End If'增加ListView1列头
Dim colCount        As Long
colCount = rs_1.RecordCount
ReDim aFieldName(colCount - 1) As String
Dim i               As Long
i = 0
While Not rs_1.EOF
    Dim name, Width
    name = rs_1.Fields("name")
    Width = rs_1.Fields("Width")
    aFieldName(i) = rs_1.Fields("FieldName") '保存下来避免多次循环 rs_1    If i = 0 Then '第一列始终存在
        With Me.ListView1.ColumnHeaders(0)
            .Key = aFieldName(i)
            .Text = name
            .Width = Width
        End With
    Else
        Me.ListView1.ColumnHeaders.Add , aFieldName(i), name, Width
    End If    rs_1.MoveNext
    i = i + 1
Wend
Set rs_1 = Nothing'显示列表内容
Set rs = DbConn.Execute("SELECT * FROM A表")
Do While Not rs.EOF
    Set Item = ListView1.ListItems.Add(, "k" & rs("ID"), rs(aFieldName(0)), , 0)
    For i = 1 To colCount - 1
        Item.SubItems(i) = rs.Fields(aFieldName(i))
    Next
    rs.MoveNext
Loop
Call CloseConn

解决方案 »

  1.   

    先感谢Tiger_Zhao(VB老鸟) 
    但在这句:
     With Me.ListView1.ColumnHeaders(0)
    出现:
    实时错误'35600',索引超出边界这里:
     For i = 1 To colCount - 1
            Item.SubItems(i) = rs_1.Fields(aFieldName(i))
        Next
    出现:
    实时错误"13":类型不匹配
    可能真的被这个问题搞晕了
    望指点
      

  2.   

    >With Me.ListView1.ColumnHeaders(0)
    我搞错了,ListView 默认是没有列的,所以将 If 去掉全部走 Add 分支>Item.SubItems(i) = rs_1.Fields(aFieldName(i))
    你的字段中有空值,按你原先的做法:
    Item.SubItems(i) = rs_1.Fields(aFieldName(i)) & ""
      

  3.   

    问题已经解决了,真的要感谢Tiger_Zhao(VB老鸟),老鸟就是老鸟
    还有一个问题,就是:当A表中的的某字段比如增加一个部门的字段BM_ID,在A表用数字表示(该数字与下面的部门表中的id关连),
    另外增加C表(部门表),有id,BM_Name、、、等字段,如果用联合查询:
    SELECT * FROM A表,C表 WHERE A表.BM_ID=C表.id
    这样,应用在上面的
    Item.SubItems(i) = rs_1.Fields(aFieldName(i))中,这个字段名应该怎样取值?
    因为当A表和B表有相同的字段名时必须加上表名标识,比如
    Item.SubItems(1) = rs_1.Fields("A表.字段名) 
    像这样的多表情况下,应该怎样解决这个问题呢?还有老鸟帮助!
    各位高手请关注,谢谢了
      

  4.   

    呵呵,解决了,谢谢Tiger_Zhao,谢谢CSDN