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
63Ifcellwidth>grid1.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.Width>scalewidthThen'如果網格總寬度大於窗口寬度
74grid1.Width=scalewidth
75EndIf
76grid1.Height=(gridl.Rows 2)*20*grid1.FontSize'計算網格長度
77Ifgrid1.Height>3200Then'如網格長度出界
78grid1.Height=3200
79EndIf
80browser.Width=grid1.Width 300'設置窗口寬度
81grid1.Visible=True
82EndSub->