⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 47.txt

📁 介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个API集供参考.
💻 TXT
📖 第 1 页 / 共 3 页
字号:
Exit Sub
End If
MsgBox ("输入错误,请输入你出生的年月日!")
,将选取不合法的数据,以便重新输入,并使控制焦点不动
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub

  上面虽是应用程序处理错误的一个小例子,可是这种在应用级处理错误的思想是十分重要的。

五、寻寻觅觅
  在数据库管理系统中,输入和查询就象两个孪生姐妹不可或缺,下面将介绍如何创建查询窗口。查询窗口的设计分为两部分:查询结果和查询条件。查询结果是指用户所需要的数据,它包括根据查询条件查询出来的记录,但并非表中每个字段里的数据都需要提供给用户。比如在我们这个例子中,登记表中的登记号的值是用户不感兴趣的,所以在查询结果中,我们不希望显示RegID字段的值。查询条件是用户提出的查询要求。比如在我们这个系统中,可以有姓名条件,当用户想知道某个人的具体情况,他可以输入此人的姓名,就查询出此人各方面的情况;也可以有年龄条件,当用户输入某个年龄段,就会查询出处于这个年龄段的所有人的信息。到底采用哪些查询条件,这需要开发者根据用户和系统的要求进行设计,其具体实现过程大都大同小异。为了节省篇幅,我们就仅以年龄为条件进行查询。查询窗口运行情况如图9。
在这个程序中我们使用了一个控件DBGrid,这个控件用来显示查询结果,选中VB的“工程”菜单下的“部件……”项,在控件标签中,选中“Microsoft Data Bound Grid Control 5.0”即可,在工具箱中就会出现DBGrid控件的小图标。其使用和其它控件一样。
  为了和数据库连接,DATA控件是不可少的,回忆一下,该怎样设置它的属性,OK!同输入窗口一样,在CONNECT属性中,选中“ACCESS”项。在DatabaseName属性中,输入“C:\TEMP\登记.mdb”。在RecordSource属性中,选中......嘿,嘿,这里稍微有点不同,如果按输入窗口那样的设置,查询结果中就会包含登记号字段了。在此属性中我们应该输入SQL语句:
  select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from Register。别着急,尽管这条语句有点长,实际上却比较简单。这条语句的语法是:
  SELECT 字段名,字段名,……FROM 表名 WHERE 条件;
  对照语法,我们可以看出输入的SQL语句的含义:从表Register中查询姓名,性别,籍费,……字段的值。只要在字段列表中不选中登记号字段,在查询结果中,就不会显示登记号的值了。如果你够细心的话就会注意到我们所写的SQL语句中在字段列表中并不仅仅输入字段名,在其后面还增加了as……项,如“name as 姓名”,这是为name字段取一个别名“姓名”,以便在DBGrid控件中显示字段名时,就会显示“姓名”而不是“name”。
  完成了DATA控件属性的设置就可以将DBGrid控件捆绑到DATA控件上,其方法同输入窗口。对了,将“DataSource”属性设置为“DATA1”即可。现在不妨运行一下程序,真令人兴奋,DBGrid显示出表中所有的信息。可是怎样显示符合条件的数据呢?再看一看上面的SQL语法,WHERE段后可以输入查询条件,比如:需要年龄在20到30岁之间的人员信息,其语句为:Select name,... From register where age>20 and age<30;
  我们只要根据用户输入的条件构成新的SQL语句,并利用DATA控件的Refrensh方法刷新数据库,就可以完成条件查询了。
  整个程序十分简单,当用户在文本框中输入年龄段后,点按“查询”命令,就会显示符合条件的查询结果。程序代码如下:

Option Explicit
Const allinfo = "select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from 登记" '定义不带条件的SQL查询语句

Private Sub Command1_Click()
Dim t1, m, n As String
'构造SQL语句的WHERE条件段
If IsNumeric(Text1.Text) Then
m = " age >" + Text1.Text
End If
If IsNumeric(Text2.Text) Then
n = " age < " + Text2.Text
End If
If m = "" And n = "" Then
t1 = ""
Else
If m = "" Then
t1 = n
Else
If n = "" Then
t1 = m
Else
t1 = m + " and " + n
End If
End If
End If
If t1 <> "" Then
t1 = " where " + t1
End If
Data1.RecordSource = allinfo + t1
'将RecordSource属性的值设置为新的SQL语句
Data1.Refresh
‘刷新数据库,获得符合当前条件的查询结果
End Sub

  在这个程序中,你还可以加上姓名查询、籍贯查询等,其设计过程都是通过构造SQL语句来实现的。另外,还需要注意的一点是既然是查询窗口,当然允许修改,将DBGrid控件的AllowUpdate属性值设为False。OK!运行程序吧,啊!万事大吉。看一看应用程序,再看一看你编写的代码,不可思议,这么短的代码居然完成了这么强大的功能。事实就是这样,数据库编程中最重要的是对概念的清楚,与之相比,技巧好象摆在了次要位置。让我们闭上眼睛,想一想我们需要了解那些东西吧:DATA控件,RECORDSET对象、控件的捆绑、简单的SQL查询语句。熟悉了这些东西,你就可以进行数据库编程了,如果你对开发数据库系统比较感兴趣,可以再加强一下在数据库设计和SQL语句方面的知识。但数据库编程真的总是这样简单吗?如果已经熟悉了上面的内容,建议你看一下下面这一节。

六、拨云见雾
  还记得我们在前面说过Visual Basic 提供了两种与 Jet 数据库引擎接口的方法吗?Data 控件和数据访问对象。我们已经见识了DATA控件,确实给人意想不到的方便,但Data 控件只给出有限的访问现存数据库的功能。而 DAO 模型则可以全面控制数据库的完整编程接口。这两种方法事实上并不是互斥的,实际上,它们常同时使用。
  DAO 模型是设计关系数据库系统结构的对象类集合。它们提供了完成管理这样一个系统所需的全部操作属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。DAO结构的主要对象如图10所示。
  Visual Basic 中的数据库编程就是创建DAO(数据访问对象)。这些对象对应于被访问物理数据库的不同部分,如 Database、TableDef、Field 和 Index 对象,用这些对象的属性和方法来实现对数据库的操作,能够在 Visual Basic 窗体中使用绑定和非绑定控件来显示操作结果并接收用户输入。这样就简化了代码,它赋予程序员很大的灵活性。因为可以使用同样的对象、属性和方法来处理各种不同的数据库格式。同时,如果从一种数据库格式变到另一种格式(例如,将本地的 Microsoft Access 数据库转换为网络上的 SQL Server 数据库),只需变动少量的代码就可以适应这种改变。甚至可以创建这样的应用程序,在单一的查询或报表中连接来自多个不同数据库的表。
  我们先介绍DAO对象,从上图中我们可以看到,DAO对象中最关键的是DBEngine对象,所有的数据库操作都要通过它来完成。

DBEngine对象
DBEngine对象相当于jet数据库引擎,不需要创建该对象。
CreateWorkspace方法:创建一个工作区对象
例如 :
Dim ws As Workspace
Set ws = DbEngine.CreateWorkspace                 (SpName,UserID,password",SpType)
其中
SpName 工作区名称String
UserID 用户名 String
Password 口令String
SpType 工作区类型 = dbUsejet jet工作区
= dbUseODBCODBC工作区

Workspace对象
  Workspace对象为用户定义一个会话,通过与之关联的用户名和口令建立一个安全级别。当不需要安全级别时可使用缺省的工作区DBEngine.Workspace。
方法:
OpenDatebase    打开一个数据库
Close    关闭当前工作区
BeginTrans    启动一个事务
CommitTrans    提交当前事务
RollBack    回滚当前事务
例如我们需要打开一个数据库。
我们调用Workspace的OpenDatabase方法打开一个数据库。
例如:
Dim db As DataBase
Set db=OpenDatabase(dbname,exc,readonly,source)
其中:
dbname    数据库文件名(对于单表数据库为路径)
exc = TRUE 表示打开数据库后,该数据库不能被其它应用程序访问。
    FALSE 表示共享地打开数据库
Readonly=TRUE 表示打开数据库后,只能对数据库进行读操作
=FALSE 表示打开数据库后,可对数据库进行读写操作
source数据源名,用于指定打开地数据库类型。

创建记录集
  我们使用DataBase对象的OpenRecordSet方法打开一个记录集。
例如:
Dim rs As RecordSet
Set rs=db.OpenRecordSet(source,type)
其中:
source 指定记录集的内容,它可以是一个表名,查询名或SQL语句
type 创建记录集的类型
=dbOpenTable表型记录集
=dbOpenDynaset动态型记录集
=dbOpenSnapshot快照型记录集

访问ODBC数据库
  Visual Basic 通过 DAO 和 Jet 引擎可以识别三类数据库:Visual Basic 数据库,外部数据库,ODBC 数据库。在开发大中型数据库系统中一般都采用ODBC 数据库,如 Microsoft SQL Server等。DAO(数据访问对象)的 ODBCDirect 模式允许直接访问 ODBC 数据。另外,远程数据对象 (RDO) 库和远程数据控件 (RDC)也 允许直接访问 ODBC 数据。
要访问ODBC数据库需要两步,首先需要在WINDOWS 95 或WINDOWS NT的控制面板中设置ODBC数据源名(DSN)。然后在OpenDatabase方法的Source参数中使用该数据源名。
例如:访问Microsoft SQL Server
Source="ODBC;DSN=MyDSN;UID=sa;PWD=xx;DataBase=pubs"
在程序中使用DAO
  DAO的强大功能确实让人兴奋,只是较之DATA控件要复杂得多。在复杂的数据库处理中,这两种方法常常同时使用。要使用DAO,必须选中VB的“工程”菜单下的“部件……”项,在控件标签中选中"Microsoft DAO 3.5 Object Library"之后就可以在程序中定义DAO变量了。在这篇文章中我们所举的数据库例子比较简单,有兴趣的朋友不妨采用数据访问对象(DAO)来实现这个程序。

七、高屋建瓴
  到了这里,似乎VB数据库编程的内容也差不多完整了,但是你完全可以再往前走一步。在目前的数据库开发过程中,客户/服务器体系结构占这个领域的主体地位,利用VB进行客户/服务器应用程序的开发是完全可行的。同时,在程序开发过程中,还可以利用面向对象技术,提高你的程序的可重用性和可维护性。总之,数据库应用程序的开发始终是技术上和理论上的热点。使用最高级的方法,最先进的技术,你会变得越来越COOL!
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -