一个名为data.mdb的access数据库里有2张表,表名分别为text和list,list表内容:
===================================== 
 name  em  fox  qq   url   file 
 a1        a3        a5    a6
 b1        b3        b5    b6
 c1        c3        c5    c6
 d1        d3        d5    d6
 e1        e3        e5 
 f1        f3
 g1                  g5    g6
======================================
问题一:
我想用listview控件显示list表中的name,fox,url,file这4个字段中的数据,其余的不显示
问题二:
另外如果有一行中file无数据,那这一整行都不显示到listview中高分送上,分不够,可以再加啊,谢谢各位大侠帮忙

解决方案 »

  1.   

    select [name],fox,url,file from list where file is null
      

  2.   

    可以select取出数据库的内容后,把每一行的数据放到一个结构等,然后再判断是否显示,不显示的,过滤对应数据就可以了
      

  3.   

    用SQL得到你想要的数据,然后把这些数据显示在ListView上
    SQL就是1楼的写法
      

  4.   

    '填充ListView
    'pRs为存储数据的记录集
    'Clear表示是否清空原有数据
    'FillHeader表示是否填充表头
    'Fields为记录集中待填充的列索引,如果Fields的第一项为-1则表示全部填充
    '另外该函数会自动在每一项的tag前添加"序号|",用"|"分隔序号与原先Tag
    '该序号用于当列表被重新排序时,可以根据选中项的Tag值迅速定位到lpRs的对应项目,保证重新排序后仍保持lpRs对列表的索引
    '比如你想填充第1,3,4,5列,清空原有数据并且重新设置标头,那就用Fill_ListView(Listview1,pRS,True,True,1,3,4,5)Public Function Fill_ListView(ListView1 As Variant, _
                                  pRs As ADODB.Recordset, _
                                  Clear As Boolean, _
                                  FillHeader As Boolean, _
                                  ParamArray Fields() As Variant)    Dim Headers As Variant    Dim Item    As Variant
        Dim i       As Long
        Dim j As Long
        Debug.Print pRs.RecordCount    If Clear = True Then ListView1.ListItems.Clear
        If FillHeader = True Then
            ListView1.ColumnHeaders.Clear     '清空数据和标题
            If Fields(0) = -1 Then
                For i = 1 To pRs.Fields.Count
                    ListView1.ColumnHeaders.Add , pRs.Fields(i - 1).Name, pRs.Fields(i - 1).Name ', Printer.TextWidth(pRs.Fields(i - 1).Name)
                Next
            Else
                For Each Headers In Fields          '填充标题
        
                    ListView1.ColumnHeaders.Add Headers, pRs.Fields(Headers).Name, pRs.Fields(Headers).Name, ListView1.Width / (UBound(Fields) + 1)
                Next
            End If    End If    If pRs.RecordCount > 0 Then
            pRs.MoveFirst
           j = 0
           If Fields(0) <> -1 Then
                While pRs.EOF = False
                
                    'Debug.Print pRs(0).UnderlyingValue
                    Set Item = ListView1.ListItems.Add(, , pRs(Fields(0)).Value & "")
                                Item.Tag = j & "|" & Item.Tag
                    For i = 1 To UBound(Fields)
                        Item.subitems(i) = pRs(Fields(i)) & ""
                    Next
                    j = j + 1
                    pRs.MoveNext
        
                Wend
            Else
                While pRs.EOF = False
                
                    'Debug.Print pRs(0).UnderlyingValue
                    Set Item = ListView1.ListItems.Add(, , pRs(0).Value & "")
                                Item.Tag = j & "|" & Item.Tag
                    For i = 1 To pRs.Fields.Count - 1
                        'Debug.Print Item.subitems.Count
                        Item.subitems(i) = pRs(i) & ""
                    Next
                    j = j + 1
                    pRs.MoveNext
        
                Wend
            End If    End If
            
    End Function
      

  5.   

    Dim SQL As String
    Dim addLVW As ListItemPrivate Sub Form_Load()
    SQL = "select * from list"
    Me.ListView1.ListItems.Clear
    Call OpenConn    rs.Open SQL, cn, 1, 1
        Do While Not rs.EOF
            Set addLVW = Me.ListView1.ListItems.Add(, , rs!name)
                addLVW.SubItems(1) = rs!fox
                addLVW.SubItems(2) = rs!url
                addLVW.SubItems(3) = IIf(IsNull(rs!file), "", rs!file) 
                rs.MoveNext
        Loop
    Call CloseConn
    End Sub