📄 99.htm
字号:
<p>用Visual Basic开发数据库浏览器 </p>
<p></p>
<p> Microsoft Access是Visual Basic最常用的数据库,但Visual Basic没有提供类似Foxpro for Windows的BROWS命令的函数来浏览Access数据库。本程序提供了一种类似BROWS命令界面浏览Access数据库的方法,感兴趣的读者可以把这个程序改写为带参数(数据库名、表名、字段名、字段宽度等)的子程序,实现类似Foxpro for windows的BROWS 命令的功能,在自己的应用程序中调用。</p>
<p>首先,在窗口中定义一个网格(gridl)、一个列表框(list1)、一个普通对话框(dlg)、一个数据察觉项(datal)、两个命令按钮(command1和command2),排好位置。</p>
<p>程序执行时,按“打开”按钮打开一个对话框,选定数据库文件后程序在列表框中显示数据库包含的表名,单击列表框中的表名即可浏览该表。本程序可自动根据字段长度和字体大小设置浏览区的大小,以保证浏览区不会超出窗口。如果窗口满足不了浏览区,程序自动给浏览区加水平或竖直滚动条。附程序清单:</p>
<p>1 Sub Command1_Click() ’鼠标器点“打开”键</p>
<p>2 Dim, I As Integer,cunt As Integer</p>
<p>3 grid1.Visible=False</p>
<p>4 dlg.Filename=""</p>
<p>5 dlg.Filter="Access(*.MDB)|*.MDB"</p>
<p>6 dlg.FilterIndex=1</p>
<p>7 dlg.Action=1 ’打开对话框</p>
<p>8 If dlg.Filename=""Then ’如果未选定文件</p>
<p>9 GoTo canc</p>
<p>10 End If</p>
<p>11 datal.Connect=""</p>
<p>12 datal.DatabaseName=dlg.Filename</p>
<p>13 datal.RecordSource=""</p>
<p>14 datal.Refresh</p>
<p>15 browser.Caption="Access浏览器["+datal.DatabaseName+"]"</p>
<p>16 cunt=datal.Database.TableDefs.Count</p>
<p>17 listl.Clear</p>
<p>18 For I=0 To cunt-1 ’将表名加入到列表框</p>
<p>19 If Left(datal.Database.TableDefs(I).Name,4) <>"Msys"Then</p>
<p>20 listl.Additem datal.Database.TableDefs(I).Name</p>
<p>21 End If</p>
<p>22 Next I</p>
<p>23 label1.Visible=True</p>
<p>24 list1.Visible=True</p>
<p>25 list1.ListIndex=0</p>
<p>26 canc:</p>
<p>27 End Sub</p>
<p>28 Sub Command2_Click() ’鼠标器点“退出”键</p>
<p>29 End</p>
<p>30 End Sub</p>
<p>31 Sub Form_Load()</p>
<p>32 browser.Caption="Access浏览器"</p>
<p>33 grid1.Height=3200</p>
<p>34 grid1.Visibli=False</p>
<p>35 list1.Visible=False</p>
<p>36 label1.Visible=False</p>
<p>37 End Sub</p>
<p>38 Sub Listl_Click() ’鼠标器点列表框</p>
<p>39 Dim ct As Integer</p>
<p>40 data1.RecordSource=listl.Text</p>
<p>41 ct=data1.Database.TableDefs(list1.ListIndex).Fields.Count</p>
<p>42 grid1.Cols=ct</p>
<p>43 grid1.Row=0</p>
<p>44 For I=0 To ct-1 ’将表中各字段名加到网格第一行</p>
<p>45 grid1.Col=I</p>
<p>46 grid1.Text=data1.Database(data1.RecordSource),Fields(I).Name</p>
<p>47 Nexti</p>
<p>48 data1.Refresh</p>
<p>49 data1.Recordset.MoveLast</p>
<p>50 grid1.Rows=data1.Recordset.RecordCount+1</p>
<p>51 data1.Recordset.MoveFirst</p>
<p>52 grid1.Row=0</p>
<p>53 While Not data1.Recordset.EOF ’将数据读入网格各单元</p>
<p>54 grid1.Row=grid1.Row+1</p>
<p>55 Fori=0 To ct-1</p>
<p>56 grid1.Col=I</p>
<p>57 If Not Is Null(datal.Recordset(I).Value)Then</p>
<p>58 grid1.Text=datal.Recordset(I).Value</p>
<p>59 Else</p>
<p>60 grid1.Text=""</p>
<p>61 End If</p>
<p>62 cellwidth=TextWidth(grid1.Text)+200</p>
<p>63 If cellwidth >grid1.ColWidth(I)Then</p>
<p>64 gridl.ColWidth(I)=cellwidth</p>
<p>65 End If</p>
<p>66 Next I</p>
<p>67 data1.Recordset.MoveNext</p>
<p>68 Wend</p>
<p>69 grid1.Width=0</p>
<p>70 Fori=0 To ct-1’计算网格总宽度</p>
<p>71 grid1.Width=gridl.Width+gridl.ColWidth(I)</p>
<p>72 Next I</p>
<p>73 If grid1.Width > scalewidth Then ’如果网格总宽度大于窗口宽度</p>
<p>74 grid1.Width=scalewidth</p>
<p>75 End If</p>
<p>76 grid1.Height=(gridl.Rows+2)*20*grid1.FontSize ’计算网格长度</p>
<p>77 If grid1.Height >3200 Then ’如网格长度出界</p>
<p>78 grid1.Height=3200</p>
<p>79 End If</p>
<p>80 browser.Width=grid1.Width+300 ’设置窗口宽度</p>
<p>81 grid1.Visible=True</p>
<p>82 End Sub</p>
<p>□青岛 翟志忠 </p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -