使用TreeView、ListView和ADO显示数据库文件






4.33/5 (7投票s)
如何使用ADO在TreeView和ListView中显示表、字段和记录

引言
我收到一封邮件提问:“如何使用ADO填充TreeView和ListView,数据来自*.mdb文件?”
我尝试在以下内容中给出答案,希望我能成功。
本文档将展示如何
- 连接数据库
- 用表名和字段名填充TreeView
- 用所选表的记录填充ListView
背景
演示项目包含一个窗体。我向窗体(frmDataView)添加了以下控件:
- 两个Label(lblDatabase)用于显示文件名,以及(lblTableName)用于显示表名
- 两个Button,一个(cmdLoadData)用于连接数据库文件,另一个(cmdClose)用于结束显示
- ImageList(ImageList1)用于加载一些图标
- TreeView(tvData)和ListView(lvData)。
使用代码
' Here is the code to get Tables name from the database file:
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim MyDataFile As String
Dim strCon As String
Dim tabName As String
Dim dbNode As Node
Dim tabNode As Node
' Don't use: On Error goto label, but use following:
On Error Resume Next
' set root node of TreeView.
Set dbNode = tvData.Nodes.Add(, , "RootDB", "Database", "DatabaseClose")
dbNode.Tag = "RootDB"
MyDataFile = App.Path & "\DataFile\" & "test.mdb"
strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & MyDataFile & ";"
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.Open strCon
Set rst = cn.OpenSchema(adSchemaTables)
rst.MoveFirst
Do Until rst.EOF
If rst("TABLE_TYPE").Value = "VIEW" Or rst("TABLE_TYPE").Value = "TABLE" Then
tabName = rst("TABLE_NAME").Value
Set tabNode = tvData.Nodes.Add("RootDB", tvwChild, "X" & tabName, _
tabName, "TableClose")
tabNode.Tag = "Tables"
End If
rst.MoveNext
Loop
rst.Close
' Here is the code to get Fields name from all Tables:
Dim rs As ADODB.Recordset
Dim fldName As String
Dim n As Integer
Dim c As Integer
Dim i As Integer
Dim j As Integer
Set rs = New ADODB.Recordset
c = tvData.Nodes("RootDB").Children
' first table
n = tvData.Nodes("RootDB").Child.FirstSibling.Index
For i = n To c + n
tabName = tvData.Nodes(i).Text
' get field name
Set rs = cn.Execute("SELECT * FROM [" & tabName & "]", 1, 1)
For j = 0 To rs.Fields.Count - 1
fldName = rs.Fields(j).Name
Set fldNameNode = tvData.Nodes.Add("X" & tabName, tvwChild, _
"X" & fldName, fldName, "imgField")
fldNameNode.Tag = "Fields"
Next j
rs.Close
Next i
您可以在窗体(frmDataView)中阅读完整的代码
- InitListView Sub:用于初始化ListView
- LoadListView Sub:用于用数据填充ListView
- cmdLoadData_Click Sub:用于连接数据库文件
- tvData_Collapse Sub:用于更改图标
- tvData_Expand Sub:用于更改图标
- tvData_NodeClick Sub:要查看如何填充ListView,当在TreeView中单击表名时显示记录,您还可以看到我们在TreeView中单击字段名时如何更改ListView的ColumnHeader中的图标
备注
当您创建一个新项目时,必须从组件对话框中将ListView、TreeView和ImageList控件添加到工具箱。
Microsoft Windows Common Controls 6.0
您必须添加引用:“Microsoft ActiveX Data Objects 2.x”。
最后的话
我希望这篇文章对您有所帮助,并能帮助您将表、字段和记录从数据库文件显示到TreeView和ListView。如果您有任何想法或发现任何问题,请告诉我。感谢CodeProject,感谢大家。
Mostafa Kaisoun
M_Kaisoun@hotmail.com
历史
-
2009年10月18日:初始发布