【 tulaoshi.com - 编程语言 】
MicrosoftAccess是VisualBasic最常用的数据库,但VisualBasic没有提供类似FoxproforWindows的BROWS命令的函数来浏览Access数据库。本程序提供了一种类似BROWS命令界面浏览Access数据库的方法,感兴趣的读者可以把这个程序改写为带参数(数据库名、表名、字段名、字段宽度等)的子程序,实现类似Foxproforwindows的BROWS命令的功能,在自己的应用程序中调用。
首先,在窗口中定义一个网格(gridl)、一个列表框(list1)、一个普通对话框(dlg)、一个数据察觉项(datal)、两个命令按钮(command1和command2),排好位置。
程序执行时,按“打开”按钮打开一个对话框,选定数据库文件后程序在列表框中显示数据库包含的表名,单击列表框中的表名即可浏览该表。本程序可自动根据字段长度和字体大小设置浏览区的大小,以保证浏览区不会超出窗口。如果窗口满足不了浏览区,程序自动给浏览区加水平或竖直滚动条。附程序清单:
1SubCommand1_Click()'鼠标器点“打开”键
2Dim,IAsInteger,cuntAsInteger
3grid1.Visible=False
4dlg.Filename=""
5dlg.Filter="Access(*.MDB)|*.MDB"
6dlg.FilterIndex=1
7dlg.Action=1'打开对话框
8Ifdlg.Filename=""Then'如果未选定文件
9GoTocanc
10EndIf
11datal.Connect=""
12datal.DatabaseName=dlg.Filename
13datal.RecordSource=""
14datal.Refresh
15browser.Caption="Access浏览器[" datal.DatabaseName "]"
16cunt=datal.Database.TableDefs.Count
17listl.Clear
18ForI=0Tocunt-1'将表名加入到列表框
19IfLeft(datal.Database.TableDefs(I).Name,4)"Msys"Then
20listl.Additemdatal.Database.TableDefs(I).Name
21EndIf
22NextI
23label1.Visible=True
24list1.Visible=True
25list1.ListIndex=0
26canc:
27EndSub
28SubCommand2_Click()'鼠标器点“退出”键
29End
30EndSub
31SubForm_Load()
32browser.Caption="Access浏览器"
33grid1.Height=3200
34grid1.Visibli=False
35list1.Visible=False
36label1.Visible=False
37EndSub
38SubListl_Click()'鼠标器点列表框
39DimctAsInteger
40data1.RecordSource=listl.Text
41ct=data1.Database.TableDefs(list1.ListIndex).Fields.Count
42grid1.Cols=ct
43grid1.Row=0
44ForI=0Toct-1'将表中各字段名加到网格第一行
45grid1.Col=I
46grid1.Text=data1.Database(data1.RecordSource),Fields(I).Name
47Nexti
48data1.Refresh
49data1.Recordset.MoveLast
50grid1.Rows=data1.Recordset.RecordCount 1
51data1.Recordset.MoveFirst
52grid1.Row=0
53WhileNotdata1.Recordset.EOF'将数据读入网格各单元
54grid1.Row=grid1.Row 1
55Fori=0Toct-1
56grid1.Col=I
57IfNotIsNull(datal.Recordset(I).Value)Then
58grid1.Text=datal.Recordset(I).Value
59Else
60grid1.Text=""
61EndIf
62cellwidth=TextWidth(grid1.Text) 200
63Ifcellwidthgrid1.ColWidth(I)Then
64gridl.ColWidth(I)=cellwidth
65EndIf
66NextI
67data1.Recordset.MoveNext
68Wend
69grid1.Width=0
70Fori=0Toct-1'计算网格总宽度
71grid1.Width=gridl.Width gridl.ColWidth(I)
72NextI
73Ifgrid1.WidthscalewidthThen'如果网格总宽度大于窗口宽度
74grid1.Width=scalewidth
75EndIf
76grid1.Height=(gridl.Rows 2)*20*grid1.FontSize'计算网格长度
77Ifgrid1.Height3200Then'如网格长度出界
78grid1.Height=3200
79EndIf
80browser.Width=grid1.Width 300'设置窗口宽度
81grid1.Visible=True
82EndSub->