-
vb教程之用Visual Basic开发数据库浏览器
Microsoft Access是Visual Basic最常用的数据库,但Visual Basic没有提供类似Foxpro for Windows的BROWS命令的函数来浏览Access数据库。本程序提供了一种类似BROWS命令界面浏览Access数据库的方法,感兴趣的读者可以把这个程序改写为带参数(数据库名、表名、字段名、字段宽度等)的子程序,实现类似Foxpro for windows的BROWS 命令的功能,在自己的应用程序中调用。
首先,在窗口中定义一个网格(gridl)、一个列表框(list1)、一个普通对话框(dlg)、一个数据察觉项(datal)、两个命令按钮(command1和command2),排好位置。
程序执行时,按“打开”按钮打开一个对话框,选定数据库文件后程序在列表框中显示数据库包含的表名,单击列表框中的表名即可浏览该表。本程序可自动根据字段长度和字体大小设置浏览区的大小,以保证浏览区不会超出窗口。如果窗口满足不了浏览区,程序自动给浏览区加水平或竖直滚动条。附程序清单:
1 Sub Command1_Click() ’鼠标器点“打开”键
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 ’打开对话框
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() ’鼠标器点“退出”键
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() ’鼠标器点列表框
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 ’将表中各字段名加到网格第一行
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 ’将数据读入网格各单元
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’计算网格总宽度
71 grid1.Width=gridl.Width+gridl.ColWidth(I)
72 Next I
73 If grid1.Width > scalewidth Then ’如果网格总宽度大于窗口宽度
74 grid1.Width=scalewidth
75 End If
76 grid1.Height=(gridl.Rows+2)*20*grid1.FontSize ’计算网格长度
77 If grid1.Height >3200 Then ’如网格长度出界
78 grid1.Height=3200
79 End If
80 browser.Width=grid1.Width+300 ’设置窗口宽度
81 grid1.Visible=True
82 End Sub
首先,在窗口中定义一个网格(gridl)、一个列表框(list1)、一个普通对话框(dlg)、一个数据察觉项(datal)、两个命令按钮(command1和command2),排好位置。
程序执行时,按“打开”按钮打开一个对话框,选定数据库文件后程序在列表框中显示数据库包含的表名,单击列表框中的表名即可浏览该表。本程序可自动根据字段长度和字体大小设置浏览区的大小,以保证浏览区不会超出窗口。如果窗口满足不了浏览区,程序自动给浏览区加水平或竖直滚动条。附程序清单:
1 Sub Command1_Click() ’鼠标器点“打开”键
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 ’打开对话框
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() ’鼠标器点“退出”键
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() ’鼠标器点列表框
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 ’将表中各字段名加到网格第一行
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 ’将数据读入网格各单元
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’计算网格总宽度
71 grid1.Width=gridl.Width+gridl.ColWidth(I)
72 Next I
73 If grid1.Width > scalewidth Then ’如果网格总宽度大于窗口宽度
74 grid1.Width=scalewidth
75 End If
76 grid1.Height=(gridl.Rows+2)*20*grid1.FontSize ’计算网格长度
77 If grid1.Height >3200 Then ’如网格长度出界
78 grid1.Height=3200
79 End If
80 browser.Width=grid1.Width+300 ’设置窗口宽度
81 grid1.Visible=True
82 End Sub
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比