用Visual Basic開發(fā)數(shù)據(jù)庫瀏覽器
發(fā)表時(shí)間:2024-02-23 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Microsoft Access是Visual Basic最常用的數(shù)據(jù)庫,但Visual Basic沒有提供類似Foxpro for Windows的BROWS命令的函數(shù)來瀏覽Access數(shù)據(jù)庫。本程序提供了一種類似BROWS命令界面瀏覽Access數(shù)據(jù)庫的方法,感興趣的讀者可以把這個(gè)程序改寫為帶...
Microsoft Access是Visual Basic最常用的數(shù)據(jù)庫,但Visual Basic沒有提供類似Foxpro for Windows的BROWS命令的函數(shù)來瀏覽Access數(shù)據(jù)庫。本程序提供了一種類似BROWS命令界面瀏覽Access數(shù)據(jù)庫的方法,感興趣的讀者可以把這個(gè)程序改寫為帶參數(shù)(數(shù)據(jù)庫名、表名、字段名、字段寬度等)的子程序,實(shí)現(xiàn)類似Foxpro for windows的BROWS 命令的功能,在自己的應(yīng)用程序中調(diào)用。
首先,在窗口中定義一個(gè)網(wǎng)格(gridl)、一個(gè)列表框(list1)、一個(gè)普通對(duì)話框(dlg)、一個(gè)數(shù)據(jù)察覺項(xiàng)(datal)、兩個(gè)命令按鈕(command1和command2),排好位置。
程序執(zhí)行時(shí),按“打開”按鈕打開一個(gè)對(duì)話框,選定數(shù)據(jù)庫文件后程序在列表框中顯示數(shù)據(jù)庫包含的表名,單擊列表框中的表名即可瀏覽該表。本程序可自動(dòng)根據(jù)字段長度和字體大小設(shè)置瀏覽區(qū)的大小,以保證瀏覽區(qū)不會(huì)超出窗口。如果窗口滿足不了瀏覽區(qū),程序自動(dòng)給瀏覽區(qū)加水平或豎直滾動(dòng)條。附程序清單:
1 Sub Command1_Click() ’鼠標(biāo)器點(diǎn)“打開”鍵
2 Dim, I As Integer,cunt As Integer
3 grid1.Visible=False
4 dlg.Filename=""
5 dlg.Filter="Access(*.MDB) *.MDB"
6 dlg.FilterIndex=1
7 dlg.Action=1 ’打開對(duì)話框
8 If dlg.Filename=""Then ’如果未選定文件
9 GoTo canc
10 End If
11 datal.Connect=""
12 datal.DatabaseName=dlg.Filename
13 datal.RecordSource=""
14 datal.Refresh
15 browser.Caption="Access瀏覽器["+datal.DatabaseName+"]"
16 cunt=datal.Database.TableDefs.Count
17 listl.Clear
18 For I=0 To cunt-1 ’將表名加入到列表框
19 If Left(datal.Database.TableDefs(I).Name,4) <>"Msys"Then
20 listl.Additem datal.Database.TableDefs(I).Name
21 End If
22 Next I
23 label1.Visible=True
24 list1.Visible=True
25 list1.ListIndex=0
26 canc:
27 End Sub
28 Sub Command2_Click() ’鼠標(biāo)器點(diǎn)“退出”鍵
29 End
30 End Sub
31 Sub Form_Load()
32 browser.Caption="Access瀏覽器"
33 grid1.Height=3200
34 grid1.Visibli=False
35 list1.Visible=False
36 label1.Visible=False
37 End Sub
38 Sub Listl_Click() ’鼠標(biāo)器點(diǎn)列表框
39 Dim ct As Integer
40 data1.RecordSource=listl.Text
41 ct=data1.Database.TableDefs(list1.ListIndex).Fields.Count
42 grid1.Cols=ct
43 grid1.Row=0
44 For I=0 To ct-1 ’將表中各字段名加到網(wǎng)格第一行
45 grid1.Col=I
46 grid1.Text=data1.Database(data1.RecordSource),Fields(I).Name
47 Nexti
48 data1.Refresh
49 data1.Recordset.MoveLast
50 grid1.Rows=data1.Recordset.RecordCount+1
51 data1.Recordset.MoveFirst
52 grid1.Row=0
53 While Not data1.Recordset.EOF ’將數(shù)據(jù)讀入網(wǎng)格各單元
54 grid1.Row=grid1.Row+1
55 Fori=0 To ct-1
56 grid1.Col=I
57 If Not Is Null(datal.Recordset(I).Value)Then
58 grid1.Text=datal.Recordset(I).Value
59 Else
60 grid1.Text=""
61 End If
62 cellwidth=TextWidth(grid1.Text)+200
63 If cellwidth >grid1.ColWidth(I)Then
64 gridl.ColWidth(I)=cellwidth
65 End If
66 Next I
67 data1.Recordset.MoveNext
68 Wend
69 grid1.Width=0
70 Fori=0 To ct-1’計(jì)算網(wǎng)格總寬度
71 grid1.Width=gridl.Width+gridl.ColWidth(I)
72 Next I
73 If grid1.Width > scalewidth Then ’如果網(wǎng)格總寬度大于窗口寬度
74 grid1.Width=scalewidth
75 End If
76 grid1.Height=(gridl.Rows+2)*20*grid1.FontSize ’計(jì)算網(wǎng)格長度
77 If grid1.Height >3200 Then ’如網(wǎng)格長度出界
78 grid1.Height=3200
79 End If
80 browser.Width=grid1.Width+300 ’設(shè)置窗口寬度
81 grid1.Visible=True
82 End Sub