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->