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