21世纪高等学校计算机基础教育系列教材 第12章 Sual Basic 数据库程序设计
第12章 Visual Basic 数据库程序设计 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
第12章数据库功能 数据控件和文本框控件进行数据库操作 Visual basic提供了两种与Jet数据库引擎接口的方法:数据控件和数据访问对象。数据控件给 出了一些几乎不需要编程的访问现存数据的功能,允许用户将Ⅴ isual basic的窗体与数据库方便地 中的数据,而且不需要程序员写程序。这里的访问数据指的是简单的“显 TADOX等数据库 进行连接。Ⅴ isual basic的数据对象能够轻易地访问Aces、 dBase、 FoxPro、Pa 浏览”、“编 “更新”等基本操作,对于较复杂的“査询”功能则必须要有程序设计才能够实现。在对 数据库的访问中,程序员必须设置数据控件( Data controls)的属性,才能够实现简单的数据访 问 ◇ Connect属性: Connect属性用来指定数据库类型。它的设置值如下: Access(默认值)这种情况下只能访问用Aces97所创建的数据库 FoxPro dBase Excel ParADOx Te Lotus ◇ DataBasename属性:用来指定具体使用的数据库。如果连接的是一个 Microsoft access数据库 就把该属性设置为扩展名为MDB的数据库文件,如果连接的是一个 dBase、 FoxPro或 ParADOX 等数据库,则要将该属性设置成相应类型的数据库的文件( dBase、 FoxPro数据库的扩展名为 dbf, ParADOX数据库文件的扩展名为db) 令 Record Type属性:用来确定具体的记录集合类型,记录集合类型可以是数据库中的表或 存储查询。如果用户使用的是 Microsoft access的MDB数据库,则应该将该属性设置为表( Table )记录集合类型;如果用其他类型的一种数据库,则应该将该属性设置成动态表( Dynaset)记 录集合类型;如果只对记录进行读操作,而不需要去更新任何数据的话,可以选择快照(
第12章 数据库功能 数据控件和文本框控件进行数据库操作 Visual Basic提供了两种与Jet数据库引擎接口的方法:数据控件和数据访问对象。数据控件给 出了一些几乎不需要编程的访问现存数据的功能,允许用户将Visual Basic的窗体与数据库方便地 进行连接。Visual Basic 的数据对象能够轻易地访问Access、dBase、FoxPro、ParADOx等数据库 中的数据,而且不需要程序员写程序。这里的访问数据指的是简单的“显示”、“浏览”、“编 辑”、“更新”等基本操作,对于较复杂的“查询”功能则必须要有程序设计才能够实现。在对 数据库的访问中,程序员必须设置数据控件(Data controls)的属性,才能够实现简单的数据访 问。 Connect属性:Connect 属性用来指定数据库类型。它的设置值如下: Access (默认值)这种情况下只能访问用Access97所创建的数据库 FoxPro dBase Excel ParADOx Text Lotus DataBasename属性:用来指定具体使用的数据库。如果连接的是一个Microsoft Access数据库 ,就把该属性设置为扩展名为MDB的数据库文件,如果连接的是一个dBase、FoxPro或ParADOx 等数据库,则要将该属性设置成相应类型的数据库的文件(dBase 、FoxPro数据库的扩展名为 dbf,ParADOx数据库文件的扩展名为db)。 RecordType属性:用来确定具体的记录集合类型,记录集合类型可以是数据库中的表或一个 存储查询。如果用户使用的是Microsoft Access的MDB数据库,则应该将该属性设置为表(Table )记录集合类型;如果用其他类型的一种数据库,则应该将该属性设置成动态表(Dynaset)记 录集合类型;如果只对记录进行读操作,而不需要去更新任何数据的话,可以选择快照( SnapShot)记录集合类型
第12章数据库功能 RecordSource属性:用来确定具体可访问的数据,可以是数据库种的单个表,也可以是一个存 储查询或者是使用SQL查询语言的一个查询字符串 由 ResordSource确定的具体可访问的数据构成的记录集合( RecordSet)也是一个对象,它也 具有和其它对象一样的属性和方法。 RecordSet记录集有名为BOF和EOF的属性, RECORDSETBOF用来判断是否在首记录之前,若该属性的值为True,则表示当前位置在记录 集的第一个记录之前。 RECORDSETEOF则是判断是否在末记录之后。 EOF和BOF属性具有以下特征: 当记录集中没有记录时,这两个值均为“真”(True) 当这EOF或BOF的值为“真”时,只有移动指针到实际存在的记录上,他们才会变为“假” EOF或BO为“假”,而且记录集中唯一一个记录被删除掉时,他们将保持为“假”,直到有 新的记录加入 创建或打开至少含有一个记录的记录集时,第一个记录将被当成当前记录,此时均为 RecordCount属性:用于计算记录集中现存记录的数量。对于表类型的记录集,该属性就是表 中的记录总数;对于快照或者动态记录集来说,该属性的值就是用户所访问过的记录的个数。 如果在记录集(包括表、动态表和快照)中没有记录,该属性值就是0 EOFaction和 BOFaction属性:记录集的EOF或BOF属性为真时, EOFaction和 BOFaction属性的 设置值或返回值决定数据控件要采取的动作
RecordSource属性:用来确定具体可访问的数据,可以是数据库种的单个表,也可以是一个存 储查询或者是使用SQL查询语言的一个查询字符串。 由ResordSource 确定的具体可访问的数据构成的记录集合(RecordSet)也是一个对象,它也 具有和其它对象一样的属性和方法。RecordSet记录集有名为BOF和EOF的属性, RECORDSET.BOF用来判断是否在首记录之前,若该属性的值为True,则表示当前位置在记录 集的第一个记录之前。RECORDSET.EOF则是判断是否在末记录之后。 EOF和BOF属性具有以下特征: 当记录集中没有记录时,这两个值均为“真”(True) 当这EOF或BOF的值为“真”时,只有移动指针到实际存在的记录上,他们才会变为“假” (False)。 EOF或BOF为“假”,而且记录集中唯一一个记录被删除掉时,他们将保持为“假”,直到有 新的记录加入。 当创建或打开至少含有一个记录的记录集时,第一个记录将被当成当前记录,此时均为 “假”。 RecordCount属性:用于计算记录集中现存记录的数量。对于表类型的记录集,该属性就是表 中的记录总数;对于快照或者动态记录集来说,该属性的值就是用户所访问过的记录的个数。 如果在记录集(包括表、动态表和快照)中没有记录,该属性值就是0。 EOFaction和BOFaction属性:记录集的EOF或BOF属性为真时,EOFaction和BOFaction属性的 设置值或返回值决定数据控件要采取的动作。 第12章 数据库功能
ReAdOnly属性:用于控制能否对记录集进行写操作,如果该属性的值为 真,则该记录集时不允许用户写入数据。 Move方法:用Move方法可以代替数据控件对象的4个箭头的操作,去遍历整个记录集 中的记录。这里一共有5种Move方法 ① Move first方法:移动到记录集的第一个记录 ② Movelast方法:移动到记录集的最后一个记录 ③ MoveNext方法:移动到记录集中当前记录的下一个记录 ④ Move Previous方法:移动到记录集中当前记录的前一个记录 Move[n]方法:在记录集中向前或向后移动个记录,指定的常数。 Move[n方法中,如果使用的是仅向前类型的快照记录集,则n的值只能是正整数 MoVe方法的语法结构:数据集合Move方法 2.Find方法:用Fnd方法可以在动态表 ynaset)或者是快照( SnapShot类型的记录集对象 中查找与给定的条件相符合的一个记录,并使它成为当前记录。这里共有四种Find方法 ① Findfirst方法:找到满足条件的第一个记录 ② Findlast方法:找到满足条件的最后一个记录 ③ Findnext方法:找到满足条件的下一个记录 ④ Findprevious方法:找到满足条件的前一个记录 Find方法的语法结构:数据集合Find方法条件
ReADOnly属性:用于控制能否对记录集进行写操作,如果该属性的值为 真,则该记录集时不允许用户写入数据。 1. Move方法:用Move方法可以代替数据控件对象的4个箭头的操作,去遍历整个记录集 中的记录。这里一共有5种Move方法: ① MoveFirst方法:移动到记录集的第一个记录 ② MoveLast方法:移动到记录集的最后一个记录 ③ MoveNext方法:移动到记录集中当前记录的下一个记录 ④ MovePrevious方法:移动到记录集中当前记录的前一个记录 Move [n]方法:在记录集中向前或向后移动个记录,指定的常数。 Move [n]方法中,如果使用的是仅向前类型的快照记录集,则n的值只能是正整数。 Move方法的语法结构:数据集合.Move方法 2. Find方法:用Find方法可以在动态表(Dynaset)或者是快照(SnapShot)类型的记录集对象 中查找与给定的条件相符合的一个记录,并使它成为当前记录。这里共有四种Find方法: ① Findfirst方法:找到满足条件的第一个记录 ② Findlast方法:找到满足条件的最后一个记录 ③ Findnext方法:找到满足条件的下一个记录 ④ Findprevious方法:找到满足条件的前一个记录 Find方法的语法结构:数据集合.Find方法 条件
Sek方法:用Sek法可在表中查找于指定索引规则相符的第一个记录,并使之成为当前 记录。 Refresh方法:用 Refresh方法来激活在设计状态时没有为数据库控件的有关属性赋值或数据 源在运行时被改变。 3. Close方法:用 Close方法关闭指定的数据库、记录集并释放分配给它的资源 Close方法的语法结构:对象 Close 4.数据输入方法:这里包括有添加记录( Addnew)、删除记录( Delete)、更新记录 ( Update),它们的语法结构为:数据控件记录集方法名 增加记录的操作分为三步 ①调用 Addnew方法 ②给各字段赋值,给字段赋值格式为: RecordSet field“字段名”)=值 ③调用 Update方法,确定所作的添加,将缓冲区的数据写入数据库。 在用 Addnew方法添加新记录后,但是还没有用 Update方法更新纪录集,就移动到其他记录, 或者关闭记录集,那么这些输入的数据将在没有任何提示的情况下全部丢失。 删除记录的操作也分为三步: ①定位被删除的记录使之成为当前记录 ②调用 Delete方法 ③移动记录指针 更新记录就是要去修改现有记录,使用程序代码修改记录的方法可以分为以下四步 ①定位要修改的记录,使之成为当前记录 ②调用Edi方法 ③给个字段赋值 ④调用 Update方法,确定所作的修改
1. Seek方法:用Seek方法可在表中查找于指定索引规则相符的第一个记录,并使之成为当前 记录。 2. Refresh方法:用Refresh方法来激活在设计状态时没有为数据库控件的有关属性赋值或数据 源在运行时被改变。 3. Close方法:`用Close方法关闭指定的数据库、记录集并释放分配给它的资源。 Close方法的语法结构:对象.Close 4. 数据输入方法:这里包括有添加记录(Addnew)、删除记录(Delete)、更新记录 (Update),它们的语法结构为:数据控件.记录集.方法名 增加记录的操作分为三步: ① 调用Addnew方法 ② 给各字段赋值,给字段赋值格式为:RecordSet.field(“字段名”)=值 ③ 调用Update方法,确定所作的添加,将缓冲区的数据写入数据库。 在用Addnew方法添加新记录后,但是还没有用Update方法更新纪录集,就移动到其他记录, 或者关闭记录集,那么这些输入的数据将在没有任何提示的情况下全部丢失。 删除记录的操作也分为三步: ① 定位被删除的记录使之成为当前记录 ② 调用Delete方法 ③ 移动记录指针 更新记录就是要去修改现有记录,使用程序代码修改记录的方法可以分为以下四步: ① 定位要修改的记录,使之成为当前记录 ② 调用Edit方法 ③ 给个字段赋值 ④ 调用Update方法,确定所作的修改
Jibenziliao 窗体北京市真维斯服饰有限公司-员工 资料 Labell 标签员工基本资料: 文字颜色蓝色,9磅,宋体 Label2 标签入职资料 Labels 标签员工编号 Label 标签员工姓名 Labels Label6 标签民族 Label7 标签身份证号码 Labels 标签家庭住址 Label 标签文化程度 Labello 标签出生日期 文字颜色黑色,粗体 9磅,幼圆 LabellI 标签 Label 12 标签联系电话 Label13 标签入职店铺 Labella 标签入职职级 Labels 标签入职日期 Labelle 标签现所在店铺 Label 7 标签现所任职级
下面 是某 公司 人力 资源 部的 认识 数据 库管 理系 统的 员工 管理 程序, 其中 实现 了员 工的 增加、 修改、 删除、 查询 等功 能。 名 称 类 型 标 题 其 他 属 性 Jibenziliao 窗体 北京市真维斯服饰有限公司 -员工 资料 Label1 标签 员工基本资料: 文字颜色蓝色, 9磅,宋体 Label2 标签 入 职 资 料 Label3 标签 员工编号 文字颜色黑色,粗体 9磅,幼圆 Label4 标签 员工姓名 Label5 标签 性 别 Label6 标签 民 族 Label7 标签 身份证号码 Label8 标签 家庭住址 Label9 标签 文化程度 Label10 标签 出生日期 Label11 标签 年 龄 Label12 标签 联系电话 Label13 标签 入职店铺 Label14 标签 入职职级 Label15 标签 入职日期 Label16 标签 现所在店铺 Label17 标签 现所任职级
Labella8标签 员工资料红色,14磅,幼圆 Connect-access, recordsource=person Datal 数据库控件 Databasename=“ D: word vb教数据库 renshil mdb TextI 文本框 Datasource= Datal, Datafield=“员工编号” Text2 文本框 Datasource=Data, Datafield=“员工姓名” Text3 文本框 Datasource= Datal, Datafield=“性别 Text4 文本框 Datasource= Datal, Datafield=“民族” 文本框 Datasource= Datal, Datafield=“身份证号码” Text6 文本框 Datasource= Datal, Datafield=文化程度” Text7 文本框 Datasource== Datal, Datafield=“出生日期” Text8 文本框 Datasource= Datal, Datafield=“年龄 Text9 文本框 Datasource= Datal, Datafield=“联系电话” ext0文本框 Datasource= Datal, Datafield=入职店铺” TextIl 文本框 Datasource= Datal, Datafield=入职级别” Text12文本框 Datasource= Datal, Datafield=“入职日期” Text3文本框 Datasource= Datal, Datafield=“现所在店铺” ext14文本框 Datasource= Datal. Datafield=“现所任职级
Label18 标签 员 工 资 料 红色,14磅,幼圆 Data1 数据库控件 Connect=“access”, recordsource=“person” Databasename=“D:\word vb教材\数据库 \renshi1.mdb” Text1 文本框 - Datasource=Data1,Datafield=“员工编号” Text2 文本框 - Datasource=Data1,Datafield=“员工姓名” Text3 文本框 - Datasource=Data1,Datafield=“性别” Text4 文本框 - Datasource=Data1,Datafield=“民族” Text5 文本框 - Datasource=Data1,Datafield=“身份证号码” Text6 文本框 - Datasource=Data1,Datafield=“文化程度” Text7 文本框 - Datasource=Data1,Datafield=“出生日期” Text8 文本框 - Datasource=Data1,Datafield=“年龄” Text9 文本框 - Datasource=Data1,Datafield=“联系电话” Text10 文本框 - Datasource=Data1,Datafield=“入职店铺” Text11 文本框 - Datasource=Data1,Datafield=“入职级别” Text12 文本框 - Datasource=Data1,Datafield=“入职日期” Text13 文本框 - Datasource=Data1,Datafield=“现所在店铺” Text14 文本框 - Datasource=Data1,Datafield=“现所任职级
Text1 5 文本框 Datasource= Data l, Datafield=家庭地址” Frame 框架 用于装饰程序界面 Frame2 框架 Command 1按钮 Command2按钮 Command3按钮 Command4按钮末一个 Command5按钮查找 Command6按钮新增 Command7按钮 Command8按钮 修改 Command9按钮 放弃 Enabled=false Command按钮 退出
Command1 按钮 上一个 Command2 按钮 下一个 Command3 按钮 第一个 Command4 按钮 末一个 Command5 按钮 查找 Command6 按钮 新增 Command7 按钮 删除 Command8 按钮 修改 Command9 按钮 放弃 Enabled=false Command11 按钮 退出 Text15 文本框 - Datasource=Data1,Datafield=“家庭地址” Frame1 框架 - 用于装饰程序界面 Frame2 框架 -
北京市真维斯服饰有限公司员工资料 员工资料 员工基本资料 入职资料: 员工编号 文化程度高中 入取店铺 员工姓名库魏然 出生日期197720 入取职级员一 性别 年齡 入职日期 2002-7-11 民族女 联系电话12496889 现所在店铺 TB42 身份证号码10105702012 现所任职级店员 家庭住址朝阳区松输东里 新增 删除 修改 放弃 查找 上一个 第一个 末一个 退出
Dim bookmark as variant “第一个按”钮的事件代码 Private Sub Commandl Click If Not datal Recordset BOF Then Datal Recordset. Move Previous Else MsgBox"已到数据库头,无法再移动!", vb Critical,"数据库 Datal. recordset. move first End If Me. Refresh End Sub 按钮的事件代码 Private Sub Command2 Click If Not Datal Recordset EOF Then Datal recordset movenext Else MsgBox"已到数据库尾,无法再移动!", acRitical,"数据库" Datal Recordset Movelast End if Me. Refresh End sub
Dim mbookmark As Variant “第一个按”钮的事件代码 Private Sub Command1_Click() If Not Data1.Recordset.BOF Then Data1.Recordset.MovePrevious Else MsgBox "已到数据库头,无法再移动!", vbCritical, "数据库" Data1.Recordset.MoveFirst End If Me.Refresh End Sub “下一个”按钮的事件代码 Private Sub Command2_Click() If Not Data1.Recordset.EOF Then Data1.Recordset.Movenext Else MsgBox "已到数据库尾,无法再移动!", vbCritical, "数据库" Data1.Recordset.Movelast End If Me.Refresh End Sub