当程序连上数据库时,如何将数据表中的所有字段名一一列举出来,添加到一个comboBox中,从而可以动态组合查询?谢谢!

解决方案 »

  1.   

    Sub ReadProperties()
        Dim TestDB As Database '需打开的数据库
        Dim Tbf    As DAO.TableDef
        Dim fld    As DAO.Field
        Dim P      As DAO.Property
        Dim TableName As String
        Dim FieldName As String
        On Error Resume Next
        TableName = "Content" '表名
        FieldName = "AgeType" '字段名
        '打开数据库
        Set TestDB = DBEngine(0).OpenDatabase("D:\a.mdb")
        '取表的说明
        List1.AddItem "表的属性"
        For Each Tbf In TestDB.TableDefs
          If Tbf.Name = TableName Then '判断表名
            For Each P In Tbf.Properties
              List1.AddItem P.Name & "  -  " & P.Value
            Next
          End If
        Next
        List1.AddItem ""
        '取字段的说明
        List1.AddItem "字段的属性"
        For Each Tbf In TestDB.TableDefs
            For Each fld In Tbf.Fields
              If fld.Name = FieldName And Tbf.Name = TableName Then '判断表中对应的字段
                For Each P In fld.Properties
                  List1.AddItem P.Name & "  -  " & P.Value
                Next
              End If
            Next
        Next
    End Sub
      

  2.   

    你看看添加标题那段代码
    Sub Explistv(ll As ListView, rr As ADODB.Recordset, bt As Boolean)
    '将ADO记录集直接输出到LISTVIEW
    Dim r As New ADODB.Recordset
    Dim i As Integer
    Dim itmx As ListItem
    Set r = rr
    ll.ListItems.Clear'添加标题
    If bt = True Then
    ll.ColumnHeaders.Clear
    For i = 0 To r.Fields.Count - 1
        ll.ColumnHeaders.Add , , Trim(r.Fields(i).Name)
    Next
    End If
    '添加内容
    Do While Not r.EOF
        Set itmx = ll.ListItems.Add(, , Trim(r.Fields(0).Value))
        For i = 1 To r.Fields.Count - 1
          '字符型
          If r.Fields(i).Type = adChar Or adLongVarChar Or adVarChar Then
            itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), " ", r.Fields(i).Value)
          End If
          '数字型
          If r.Fields(i).Type = adDouble Or adNumeric Then
            itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), 0, r.Fields(i).Value)
          End If
          '日期型
          If r.Fields(i).Type = adDate Then
            itmx.SubItems(i) = Format(r.Fields(i).Value, "yyyy-MM-dd")
          End If
        Next
    r.MoveNext
    Loop
    'r.Close
    End Sub