要怎么样才可以让数据库内的数据显示到这上面来,我搞了一天了都没有搞出来,请各位大哥帮帮忙!提示一下!

解决方案 »

  1.   

    1、首先读取数据库内容
    2、然后加列头,用ColumnHeaders,加入的列,相当于需要现实的字段
    3、用ListItems加入行,仅能加第一个列的内容,其余列的内容用subitems对象加
      

  2.   

    转枕善居(http://mndsoft.com/blog/default.asp):
    ADO Recordset 添加到 ListView   Public Sub RSToListview(ByRef RS As ADODB.Recordset, ByRef LV As ListView, Optional bClr As Boolean)
        On Error Goto errHand
        LV.ListItems.Clear
        If RS.State = adStateOpen Then
            If Not (RS.BOF And RS.EOF) Then
                Dim i As Integer, j As Integer, iCt As Integer
                Dim lngType() As Long
                Dim sngPct() As Single
                Dim lWid() As Long, lTotalWid As Long
                Dim li As ListItem
                '// LV must be set to lvwreport to show 
                '     ColumnHeaders...
                LV.View = lvwReport
                iCt = RS.Fields.Count - 1
                ReDim lWid(0 To iCt)
                ReDim sngPct(0 To iCt)
                ReDim lngType(0 To iCt)
                For i = 0 To iCt
                    '// Make sure it's at least 10 wide...
                    If RS(i).DefinedSize > 9 Then
                        lWid(i) = RS(i).DefinedSize
                    Else
                        lWid(i) = 10
                    End If
                    lTotalWid = lTotalWid + lWid(i)
                Next
                For i = 0 To iCt
                    sngPct(i) = lWid(i) / lTotalWid
                    lngType(i) = RS.Fields(i).Type
                Next
                If bClr = True Then
                    LV.ColumnHeaders.Clear
                End If
                If LV.ColumnHeaders.Count = 0 Then
                    For i = 0 To iCt
                        LV.ColumnHeaders.Add , , RS.Fields(i).Name, LV.Width * sngPct(i)
                    Next
                Else
                    For i = 0 To iCt
                        LV.ColumnHeaders(i + 1).Width = LV.Width * sngPct(i)
                    Next
                End If
                RS.MoveFirst
                While Not RS.EOF
                    If lngType(0) = adBoolean Then
                        If RS.Fields(0).Value = vbFalse Then
                            Set li = LV.ListItems.Add(, , "NO")
                        Else
                            Set li = LV.ListItems.Add(, , "YES")
                        End If
                    Else
                        Set li = LV.ListItems.Add(, , RS.Fields(0).Value)
                    End If
                    If iCt > 0 Then
                        For j = 1 To iCt
                            If lngType(j) = adBoolean Then
                                If RS.Fields(j).Value = vbFalse Then
                                    li.ListSubItems.Add , , "NO"
                                Else
                                    li.ListSubItems.Add , , "YES"
                                End If
                            Else
                                li.ListSubItems.Add , , RS.Fields(j).Value
                            End If
                        Next
                    End If
                    RS.MoveNext
                Wend
                LV.Sorted = True
                LV.SortKey = 0
            End If
        End If
        exitSub:
        Exit Sub
        errHand:
        MsgBox "Error In RSToListview: " & Err.Description & " ", vbCritical
    End Sub
      

  3.   

    Private itxm As ListItem
    Private Sub Form_Load()
        lvEmployees.ColumnHeaders.Add , , "ID", 300, 0 
        Set clmX = lvEmployees.ColumnHeaders.Add(, , "姓名", 800, 0)  '第二个标题栏是“序号
        Set clmX = lvEmployees.ColumnHeaders.Add(, , "所属单位  ", 1400, 0)
        Set clmX = lvEmployees.ColumnHeaders.Add(, , "所属部门", 2000, 0)
    End SubPrivate Sub dcbUnit_Click()
        lvEmployees.ListItems.Clear
        Dim rs As New ADODB.Recordset
        Dim strsql As String
        strsql = "select e.id,e.name,u.Unit_Name,c.Class_Name from (employee e inner join unit u on e.unit= u.unit_ID) inner join class c on e.class=c.Class_Id where e.unit=10 
        rs.Open strsql, Adocnn, adOpenStatic, adLockReadOnly
            While Not rs.EOF
                Set itmX = lvEmployees.ListItems.Add(, , rs!ID)
                itmX.SubItems(1) = rs!Name
                itmX.SubItems(2) = rs!Unit_Name
                itmX.SubItems(3) = rs!Class_Name
            rs.MoveNext
            Wend
        Set rs = Nothing
    End Sub
      

  4.   

    :(不明白我是接照那样子加的,我用ADODC加,他说我没有WITH过程,我再用其它的方法,还说什么“超出了边界!”
      

  5.   

    没有with是说你用了.xxxxx但是没有在上面加with xxxxx,我建议你找本书看看,机械工业出版社的VB程序设计不错