在使用以前版本的Visual Basic(或简称VB)开发应用程序时,程序开发人员通常需要同时打开两个应用程序——Visual Basic和一个数据库管理程序(例如Access)。现在,这些本来应该由数据库设计人员完成的任务已经成为Visual Basic集成环境的一个部分,而且,在设计完成上述任务时,VB6.0提供的一些数据工具在某些方面比数据库本身提供的工具还要好用得多。例如,我们在使用Microsoft SQL Server6.5提供的数据库工具进行数据库结构设计时,就会发现,要更改某个已经建成的数据库表结构是一件非常麻烦的事情。但利用VB6.0提供的数据视图(Data View)却象使用Access数据库一样方便。下面,我就根据自己的应用体会,谈谈VB6.0的新增数据库工具的特点及使用方法。本文所举的例子用到的语言是VB6.0简体中文企业版,用到的数据库是Microsoft SQL Server。
Data View(数据视图)窗口
Data View窗口是VB6.0工作区的第一个组成元素,就象属性(Properities)窗口和工具栏一样,它可以依附在VB6.0的工作区的边界上。Data View的功能与VB中的可视化数据管理器(VisData)有点相似。可以从工具栏或“视图”菜单打开Data View。
Data View窗口显示当前为数据库建立的所有连接,以及加入到数据库中的数据环境(Data Enviroment)连接。有了Data View,我们就可以创建并修改表和视图、数据库视图以及存储过程和触发器等。这样,我们在开发应用程序时,就不需要在VB和数据库管理程序之间来回切换,而是可以随时利用这个窗口建立应用程序所需的各种数据连接和数据环境,并对数据库表和查询等进行创建和修改。同时,还可以使用VB6.0所提供的其他工具,很方便地把浏览窗口中的数据字段拖到查询设计器(Query Designer)和数据报表设计器(Data Report Designer)窗口中,从而很容易地建立一个查询或报表。
下面举一个新建“Microsoft SQL Server”数据视图的例子。在执行下列步骤之前,需要在控制面板中的“32位ODBC数据源”中建立一个与SQL Server数据库连接的“系统数据源”(System Data Sources)。假设我们已经建立了一个有关资金管理系统库的链接“DSN_Funds”。
* 单击“视图”菜单,并选择“数据视图窗口”命令;
* 在“数据链接属性”(Data Link Properties)窗口的“提供方”(Provider)标签中选择“Microsoft OLE DB Provider for ODBC Drivers”,单击“继续”(Next>>)进入“连接”(Connection);
* 在“连接”标签中,使用“指定数据源”(Specify the sources of data)项,再选择“使用数据源名”(Use data source name),单击下拉选择框,并选择我们已经建立的系统数据源“DSN_Funds”;如果要检测连接情况,可以单击“测试连接”(Test Connection),如果出现测试连接成功的提示,说明连接正确。
* 按“确定”就完成了一个“数据视图窗口”的建立。这时,在数据视图窗口的“数据链接”下会出现“DSN_Funds”。
Data Environment Designer(数据环境设计器)
Data Environment是VB6.0提出的一个新概念,也是本文将要介绍的重点。它可以将许多单独使用的对象和控件组合成一个单独的环境,建成后的这个数据环境可用来访问任何数据库、查询或加入其中的存储过程。这样,我们就不用再担心程序中有多处地方用到了某个数据库的引用,只需作一处改动,应用程序中的其他有关地方也会作出相应变动。这就给我们开发应用程序带来极大的方便。从某种角度看,Data Environment的作用相当于一个通用的Data控件,它可以在任何情况下使用,可以连接到所有的数据库、表以及只含一个查询或表的对象上,而不仅仅局限于连接到某个查询或表上。
数据环境设计器为我们提供了一种可以很容易访问VB工程中数据的方式。在以前的版本中,在设计时使用 ActiveX UserConnection 设计器创建远程数据对象(Remote Data Objects)(RDO)。现在,我们可以在设计时使用数据环境设计器创建ADO对象。数据环境设计器除了支持UserConnection设计器的所有功能外,还支持:1) Connection、Command 和Multiple Connection(多连接,即在一个数据环境中访问多个数据源)对象;2) OLE DB数据源和 ODBC 数据源。3) 拖放功能,即从数据环境设计器中拖动字段和表到一个窗体或数据报表 ActiveX(Data Report ActiveX)设计器中,在窗体中自动地创建数据绑定控件。4)执行包含在数据环境中、作为编程的运行时方法的command。5)对绑定到窗体中控件的数据环境进行编程访问。6)关联 Command 对象创建一个关系层次结构的能力,或对 Command 对象分组创建一个分组层次结构的能力,以及创建合计的能力和手工绑定数据识别控件到一个 Command 对象中的 Field 对象的能力。7)数据环境扩展性对象模型,该模型允许您创建外接程序。这些外接程序可以通过编程操作 Visual Basic 工程中的任何 DataEnvironment 对象。
下面将介绍如何在VB工程中创建一个数据环境对象,以及如何在应用程序中使用数据环境中的对象。
假如我们要创建一个DataEnvironment(数据环境)用来访问Microsoft SQL Server中的资金数据库——DSN_Funds 。这个数据环境对象将作为VB工程的一部分被保存到文件中,文件的扩展名为.DSR,该扩展名代表设计工具。
在可以访问数据环境设计器之前,必须在 Visual Basic 中引用它。要引用数据环境设计器,请按照以下步骤执行:
* 在“工程”菜单中,单击“引用..."。
* 从“引用..."对话框中,选择“Microsoft Data Environment 1.0",然后单击“确定”。
要添加一个数据环境设计器对象到一个VB 工程,请按照以下步骤执行:
* 从“新建工程”对话框的“新建”选项卡中,选择“标准 EXE"工程,然后单击“打开”。
* 从“工程”菜单中,选择“更多ActiveX 设计器...”中的“Data Environment"。
一旦在VB 工程中添加了一个数据环境(DataEnvironment1),数据环境设计器就自动地包括一个新的连接(Connection1)。在设计时,数据环境打开连接并从该连接中获得元数据,包括数据库对象名、表结构和过程参数。我们使用下面的步骤来指定数据环境中新建Connection1对象的属性。
* 在VB "属性”窗口中,可以将缺省的“名称”更改为一个更有意义的名字。例如,数据源是SQL Server DSN_Funds 数据库,就可以将Connection1更改为“Cnt_DSN_Funds"。
* 用鼠标右键单击Connection1对象并选择“属性”,以访问“数据链接属性”对话框。
* 进入“数据链接属性”对话框,在“提供方”选项卡中选择 “Microsoft OLE DB Provider for ODBC Drivers”,在“连接”选项卡中指定数据源“DSN_Funds”。
* 单击“确定”。
还有一个更简便的方法来建立一个新的连接。即从“数据视图”窗口中将一个连接拖动到数据环境设计器,自动地创建 Connection 对象。对于在“数据视图”中已存在的 Connection 对象,用这种方式创建 Connection 对象是非常容易和高效的。
设定完Connection1的属性后,就可以在这个连接对象中创建命令(Command)对象了。Command 对象定义了从一个数据库连接中获取何种数据的详细信息。Command 对象既可以基于一个数据库对象(例如:一个表、视图、存储过程),也可以基于一个结构化查询语言(SQL)查询。
要创建一个Command对象,可以采用以下步骤或方法:
* 在数据环境设计器工具栏中单击“添加命令”。 或右键单击一个 Connection 对象或数据环境设计器,并从快捷方式菜单中选择“添加命令”。
* 一旦一个 Command 对象被添加,数据环境视图就显示新的 Command 对象。这个对象的缺省名字是“Command"和加在后面的一个数字,例如:Command1。
* 指定 Command1 对象的属性。即右键单击Connection1 对象并选择“属性”访问“Command 属性”对话框。在对话框中,有“通用”、“关联”、“分组”和“合计”选项卡,分别定义该数据库来源、连接属性及关系等,并组织 Recordset 中包含的数据。而“高级”选项卡则可以改变在运行时获取或操作数据的方式。
还有一种更为快捷的方法创建Command对象,就是从一个“数据视图”中拖动一个表、视图或存储过程到数据环境设计器自动地创建 Command 对象。由“数据视图”中列出的表、视图或存储过程来创建 Command 对象是一种简单和高效的方法。如果与被放下的 Command 对象相关联的 Connection 在数据环境中不存在,则自动创建一个 Connection 对象。
在运行时,数据环境对在数据环境设计器中定义的每一个 Command 和 Connection 对象创建 ADO Command 和 Connection 对象。如果 Command 对象被标记为 Recordset Returning(在“Command Properties"对话框的“高级”选项卡中),那么也创建一个 ADO Recordset 对象。ADO Command 对象是作为数据环境运行时对象的一个方法被添加的,而 ADO Connection 和 Recordset 对象是作为属性被添加的。
在数据环境中,ADO Recordset 对象的名字是以“rs"开头的,以便将它们和它们对应的 Command 对象区别开来。例如,一个名为 “用户” 的 Command 对象创建一个名为 “rs用户”的 Recordset 对象。在缺省情况下,Recordset 对象是关闭的。当 Recordset 对象的对应的 Command 方法执行时,Recordset 对象打开。
在运行时,应用程序可以通过两种方式使用数据环境:
1. 作为绑定到窗体控件中数据的一个直接数据源。
假设我们要将数据环境对象中一个“用户”Command对象的字段“用户名”绑定到窗体中的一个TextBox空间中去,则需要执行下列步骤:
* 先将一个TextBox控件放到 Visual Basic 窗体中;
* 在“属性”窗口中,单击Datasource(“数据源”)属性,并选择您想绑定到控件的 DataEnvironment 对象,如“DadaEnvironment1”;
* 单击 DataMember 属性,并选择数据环境中的 Command 对象 “rs用户”;
* 单击 DataField 属性,从绑定到控件的“rs用户”Command 对象中选择字段“用户名”。这样,就完成了绑定工作。
还有一种更快捷、简便的方法,就是将需要绑定的Command对象拖到窗体中,则窗体就会自动生成这个对象所有字段的标签(Label)名和数据操作和显示区(TextBox)。
2. 编程访问数据环境设计器中的对象。
假设要从一个 Visual Basic 窗体中编程访问数据环境中的对象“用户”记录,则照以下步骤执行(这个示例假定没有参数与 Command 对象相关联。):
* 在窗体中建一个 Command 按钮。
* 假设附加到这个按钮的代码是用于将“用户”表中的记录向后移动。则在按钮的 Click 事件中添加下面的代码:
DataEnvironment1. rs用户.MoveNext
从这上面例子可以看出,与一个 ADO Recordset 关联的所有方法都可以应用于rs用户,例如添加、更新、删除和遍历记录的方法。
从上面的例子及说明可以看出,VB中的数据环境就象一个大的数据控件一样,它可以在不同的窗体中引用和操作。这对于我们开发应用程序来说,无疑是提供了一个很好的数据工具。
Query Designer(数据查询设计)
Query Designer用来设计查询,并把设计出来的查询保存到数据库中。与编写普通的SQL代码相比,使用Query Designer的好处是查询经过数据库的编译以后运行速度将加快。这里,查询也可以带参数,用来在运行时填充数据。这种设计思想可以用来创建通用查询以读取一个单独的记录,而不必为每个可能的ID记录号单独准备一个独立的查询。
查询设计器不但包含可视地显示查询的图形窗格,也包含显示查询的 SQL 文本的 SQL 窗格。可以在图形化的或 SQL 窗格中工作,查询设计器将保持两种视图的同步,以使它们总是当前的。另外,查询设计器能识别 Microsoft(R) SQL Server(TM) 和 Oracle 数据库之间的差别,因此它能生成并识别数据库特有的 SQL 命令。如果向查询中添加一个以上的表,查询设计器会自动确定这些表如何关联,并且在查询中构造合适的联结命令。我们可以使用查询设计器的SQL SELECT命令返回数据,也可以创建更新、添加或删除数据库中记录的查询。还可以执行查询及处理网格中的记录集。
打开Query Designer的方法很简单,只要在数据视图(Data View)中的“数据链接”或“数据环境连接”下有一个链接或数据环境,就可以找到视图(View),然后用鼠标右键单击 “视图”,出现一个弹出式菜单,选择“新建视图(N)”即可。然后到数据视图中将查询涉及到的表(Tables)拖到Query Designer中,定义查询条件和显示字段即可建立一个新的查询。这种查询建立的方法与Access非常相似。
Data Report Designer(数据报表设计器)
Data Report Designer是VB6.0众多新增功能中最有用的一个功能。有了它,我们就可以在VB中创建简单的报表,而不是寻求第三方的软件支持了。另外,我们可以在程序中使用代码来调用刚创建的报表对象。
用过Access报表设计工具的人再使用VB6.0中的Data Report Designer,就会感觉它功能更加强大,而且使用方便。它支持页面、报表头、记录行以及其他一些常用的功能,如支持不同的图形和字体等。虽然这种报表设计器不能完全取代第三方报表设计工具,但对于一些常用的报表来说,有了它就可以很方便地在VB中设计了。
报表设计器必须有数据环境(Data Environment)的支持才能使用。因为报表设计中的数据来源与数据环境。
报表设计器主要有以下功能特点:
1. 对字段的拖放功能——把字段从 Microsoft 数据环境设计器拖到数据报表设计器。当进行这一操作时,Visual Basic 自动地在数据报表上创建一个文本框控件,并设置被放下字段的DataMember和DataField属性。也可以把一个Command对象从数据环境设计器拖到数据报表设计器。在这种情况下,对于每一个Command对象包含的字段,将在数据报表上创建一个文本框控件;每一文本框的DataMember和DataField属性将被设置为合适的值。
2. Toolbox控件——数据报表设计器以它自己的一套控件为特色。当数据报表设计器被添加到工程时,控件被自动创建在一个名为DataReport的新“工具箱”选项卡上。多数的控件在功能上与 Visual Basic 内部控件相同,并且包括Label、Shape、Image、TextBox和Line控件。第六个控件,即Function 控件,自动地生成如下四种信息中的一种:Sum、Average、Minimum或Maximum。
3. 报表打印及预览——通过使用 Show 方法预览报表。然后生成数据报表并显示在它自己的窗口内;通过调用 PrintReport 方法,以编程方式打印一个报表。当数据报表处于预览方式,用户也可以通过单击工具栏上的打印机图标打印报表。
4. 文件导出——使用 ExportReport 方法导出数据报表信息。导出格式包括 HTML 和文本。可以创建一个文件模板集合,以同 ExportReport 方法一起使用。这对于以多种格式(每种都报表类型剪裁)导出报表是很有用的。
5. 异步操作——DataReport 对象的 PrintReport 和 ExportReport 方法是异步操作。使用 ProcessingTimeort 事件可以监视这些操作的状态,并取消任何花费时间过长的操作。
要创建一个报表,可以采取以下步骤:
* 在“工程”菜单上,单击“添加 Data Report"。如果设计器不在“工程”菜单上,单击“工程”菜单中的“部件”。再单击“设计器”选项卡,选择“Data Report"。
* 设置 DataReport 对象的属性。在“属性”窗口上,单击“数据源”,假如选择“DSN_Funds"。然后单击“DataMember"并选择“用户”。
* 右键单击数据报表设计器,并单击“检索结构”。 则我们已经向报表设计器添加了一个新的分组。每一个分组都同数据环境中的 Command 对象有“一对一”对应关系;在这种情况下,新的分组与客户的 Command 对象相对应。
* 从数据环境设计器,把“所在部门"字段(在“用户"命令下)拖到分组标头(用户_Header)部分。分组标头部分可以包含“用户”命令的任何字段,然而,出于演示目的,此时只显示“用户”名。
* 删除名为“Label1"的 Label 控件(rptLabel)。如果不希望 Label 控件包括在 TextBox 控件中,可以在数据环境设计器的“选项..."对话框的“字段映射”选项卡上撤消对“Drag and Drop Fields Caption"选项的选择。
* 从数据环境设计器中,把“用户名"、“注册日期”、“口令”、“权限”字段拖到细节(Orders_Detail)部分。并删除所有Label控件。细节部分表示最内层的“重复”部分,因而与数据环境层次结构(OrdersCommand对象)中最底层的 Command 对象相对应。
* 重新调整数据环境设计器部分的大小。重新调整细节部分的高度,使它尽可能的矮是很重要的,因为高度将会与为每一个“部门”返回的细节(即“用户名”、 “注册日期”、“口令”、“权限”)相乘。细节部分的文本框下面或上面的任何多余位置将在最后的报表中导致不必要的空间。
* 保存工程。
Visual Basic6.0与以前版本的最大不同之处就是在数据库功能上有一个更大的提高。这也是微软公司为加强其在企业开发工具地位上的重要内容。应该说,在开发大中型企业应用软件上,Visual Basic6.0的确是最强的软件之一。相信大家在不断使用过程中会有更深的体会。
-
vb教程之VB6.0中的几个新增数据库工具
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
最新更新
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() 对比