VB+数据库学习教程

更新时间:2024-01-24 13:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VB 数据库教程

vb数据库操作是初学者普遍感到头疼的地方,因为现有的vb教材和资料中的数据库操作这部分,多是泛泛而谈或是一带而过。因此就想组织一个包括添加、修改、删除这些基本功能的数据库操作实例供大家参考。

久已未用vb6,机器里已经装上了VS 2008,再改回vb6,感觉实在是怪怪的。还好有朋友帮忙,感谢“小二黑”网友供稿!

也许有朋友觉得vb6版本已经很低了,做这个事还有意义吗?其实对微软来说,vb5是vb,vb6是vb,VS.net中的vb.net也是vb;而对于许多初学者来说,vb只是vb6,为什么这么说呢?因为对于许多不了解编程的朋友来说,似乎vb就是编程的代名词,学编程的第一反应就是学vb,而民间的电脑培训学校开设的多数都是vb6课程,那么他们学到的都是vb6;同时计算机等级考试也可以用vb6来过级,有相当部分的朋友是为了考证而学编程的,你相信他会放着简单易学的vb6不学,而去研究庞大的.NET吗?

因此我觉得这个事还是值得去做的,所以就有了下面这几篇文章。 祝朋友们学习愉快!

第一部分:vb数据库操作实例

vb神童教程(续)--编写一个小型的信息管理系统 vb神童教程(续)--准备数据库

vb神童教程(续)--设计系统的界面及对象的属性 vb神童教程(续)--为对象添加事件代码 第二部分:补充内容

vb神童教程(续)--ODBC数据源简介 vb神童教程(续)--配置Access数据源 vb神童教程(续)---配置SQL Server数据源 vb神童教程(续)--VB的ADO对象

vb神童教程(续)--vb adodb Connection对象简介 vb神童教程(续)--vb连接Access数据库实例

vb神童教程(续)--使用ADO Data控件连接Access的简单实例

vb神童教程(续)--编写一个小型的信息管理系统

受委托为编程入门网做一个简单的vb操作数据库的实例,来演示一下如何用vb向数据库中添加、修改、删除记录这些操作。我觉得自己是比较菜的,几年来别人都在进步,只有我还在原地踏步。不过没有办法,我们这一圈人里现在只有我机器上还有vb6,勉为其难,只有尝试一下了。如果我写的这点幼稚的东西能为想要了解vb数据库操作的朋友提供哪怕是一丁点儿的参考和帮助,将是我最为高兴的事情,同时也希望高手不要见笑。

我做的这个实例名为“编程入门网网址管理系统”,算是一个小型的信息管理系统吧。该系统后台使用的是Access数据库,程序中使用ADO代码链接的形式连接Access。该系统具有向数据库中添加、修改、删除记录的功能,进行某项操作后能够实时刷新显示数据。并在程序中加了相应的代码对输入的数据进行合法性校验,以避免输入错误的数据造成程序

运行不正常,程序运行时各个操作及退出系统时均有友好的提示框请用户确认。所有代码均在Windows 2003+Vusual Basic 6.0环境下调试通过。

系统运行时如下图:

vb神童教程(续)--准备数据库

我用的是Access 2003,因为需要讲解的仅仅是数据的添加、修改及删除,因此单数据库、单表就够了。如果以后您要编写更复杂一些的信息管理系统而涉及到多表操作,则您还需要补充一些关系数据库方面的知识,比如实体、一对一联系、一对多联系等等;此外,对sql语言也需要有所了解。具体您可以参考:数据库基础知识ABC。

首先,在“我的电脑”的e盘新建一个名为vb文件夹,先打开Access,新建一个名为Access_db的数据库(Access数据库文件的扩展名是.mdb),保存到刚才建立的文件夹中,则以后在程序中调用数据源的位置为E:\\vb\\Access_db.mdb。

然后在Access_db.mdb中建立一个名为wzdz的表(wzdz是“网站地址”的首字母缩写), 然后在wzdz表中添加网站名称、网站地址及网站描述三个字段,三个字段的属性是相同的,如下:

▲数据类型:文本。 ▲字段大小:50 ▲有效性规则:无。 ▲必填字段:否 ▲允许空字符串:否 ▲索引:无

“编号”这个字段使用的是Access的自动编号,并将其作为主键。也就是说,您在表中设置以上三个字段即可,设置完毕保存表时,按Access的提示添加主键,Access会自动为您搞定。具体操作您可以参考:vb神童教程(续)--vb连接Access数据库实例

这样在建立了数据库及表结构之后,即使是调用没有记录的空库,系统也可以无差错运行,可以在运行时通过“添加记录”按钮向数据库中添加记录。不过由于数据库是空的,系统第一次运行时数据显示控件没有数据可显示,显得空荡荡的,不太美观哦。为了方便起见,我们在Access中给wzdz表中预先添加两条初始记录: 编网网站地址 网站描述 号 1 站名称 编程入门网 2 健康生活网

添加的方法很简单:在Access的设计器中直接双击wzdz表名,在出来的窗口中添加即

www.health163.org 您的健康指南 http://bianceng.cn 各种编程文档、电脑教程及软件应用技巧,您的电脑技术加油站! 可。添加时注意:因为我们使用的是Access的自动编号做主键,所以在添加时不用理“编号”这个字段,直接添加后三个字段即可。

下一步的工作,是设计系统的界面及设置各个对象的属性。

vb神童教程(续)--设计系统的界面及对象的属性

本系统是一个很简单的数据库操作实例,能够对数据库的添加、修改及删除记录这几个基本的操作。系统使用数据显示控件MSHFlexGrid显示数据库中的记录,使用数据链接控件Adodc链接数据库作为MSHFlexGrid的数据源,使用文本框来接收系统运行时用户输入的数据。

步骤如下:

一、启动vb6,新建一个标准exe工程,并将工程中的form1的caption属性设置为“编程入门网网址管理系统”,width属性值设为7950,height属性值设为4620。 二、向窗体中添加一个Adodc控件。如果在工具箱中找不到Adodc控件,可以右击工具箱,选择“部件...”菜单项,然后在“部件”窗口的“控件”选项卡中选中“Microsoft ADO Data Control6.0(OLEDB)”。

在VB的属性窗口我们对Adodc控件的三个个属性值进行编辑,其余属性值使用默认的即可:

1、ConnectionString

属性值设为:Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=E:\\vb\\Access_db.mdb;Persist Security Info=False

这个属性设置了连接Access_db.mdb这个数据库。 2、RecordSourc属性值设为:select * from wzdz

这个属性值中的sql语句的作用是查询出wzdz表中的所有记录。 3、Visible属性值设为False,作用是使其在运行时不可见。

三、向窗体添加一个MSHFlexGrid控件,如果工具箱中没有MSHFlexGrid控件,可以右击工具箱,选择“部件...”菜单项,然后在“部件”窗口的“控件”选项卡中选中“Microsoft Hierarchical FlexGrid Control 6.0 ”。然后在vb的属性窗口中将MSHFlexGrid控件的名称修改为MS1,如下图:

然后对MSHFlexGrid控件进行如下设置:

1、DataSource属性:在vb的属性窗口中将其值设为Adodc1,即使用Adodc控件作为其数据源。

2、BackColorBkg属性:在vb的属性窗口中将其值设为&H00FFE0E0&,这是设置的MSHFlexGrid控件的底色。

3、BackColorFixed属性:在vb的属性窗口中将其值设为&H00C0FFFF&,这是设置的MSHFlexGrid控件的显示标题的底色。

4、width属性:在vb的属性窗口中将其值设为7695.

5、Height属性:在vb的属性窗口中将其值设为2175.

6、右击MSHFlexGrid控件,在弹出的菜单中选“属性”,在弹出的“属性页”对话框的在“通用”选项卡中修改行为4,修改列为4,修改固定行为0,修改固定列为0。如果数据链接正常,在“属性页”对话框的“带区”选项卡中可以看到列标题和列名称已经设置了,这里注意应该将“带区”选项卡中的“列标头”选项勾选上,否则运行时无法显示列标题,如下图。“属性页”对话框的其它部分使用默认值即可。

四、向窗体中添加4个Label控件(标签),在vb的属性窗口为它们设置以下属性: 1、caption属性:分别设置为网站名称、网站地址、网站描述及编号。

2、Alignment属性:均设为“2-Center”。

3、AutoSize属性:均设为True。

五、向窗体中添加4个TextBox控件(文本框),并调整它们的位置成一排与4个标签相对应,即:网站名称→Text1,网站地址→Text2,网站描述→Text3,编号→Text4。 六、向窗体中添加4个CommandButton控件(命令按钮),将它们的caption属性分别设置为“添加记录”、“修改记录”、“删除记录”和“退出系统”,并调整它们的位置成一排,放在文本框的下方。

七、在两排文本框和命令按钮中间,添加一个Line控件,适当拖动其两端的控制点将长短调整至适当,并将其BorderColor属性性设为&H00C00000&,作用是把文本框和命令按钮隔开,这样在视觉上似乎能好看些。

八、所有控件设置完毕后,界面如下图所示:

下一步的工作,是为对象添加事件代码。

vb神童教程(续)--为对象添加事件代码

一、form1的load事件代码: Private Sub Form_Load()

Form1.MS1.ColWidth(0) = 600 Form1.MS1.ColWidth(1) = 1000 Form1.MS1.ColWidth(2) = 2300 Form1.MS1.ColWidth(3) = 4000 Form1.Text1.Text = \ Form1.Text2.Text = \

Form1.Text3.Text = \ Form1.Text4.Text = \

End Sub主要是在系统初始化时设置MSHFlexGrid控件的列宽,并将文本框置空。 二、“添加记录”按钮(command1)的click事件代码: Private Sub Command1_Click() Dim sc As Integer

If Text1.Text = \

'即网站名称、网站地址和网站描述的内容必须填全了才打开数据库连接写入数据 '由于系统数据库设计为“编号”字段采用的是Access的自动编号 '因此在添加记录时不接收编号的数据,由Access自动加编号 MsgBox (\请输入完整的网站信息\

Else

sc = MsgBox(\确实要添加这条记录吗?\提示信息\ If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1

Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim Str1 As String Dim Str2 As String

Dim Str3 As String

Str1 = \ Str2 = \ Str3 = \ conn.Open Str1 & Str2 & Str3 strSQL = \ rs.Open strSQL, conn, 3, 3 rs.AddNew

rs!网站名称 = Text1.Text rs!网站地址 = Text2.Text rs!网站描述 = Text3.Text rs.Update rs.Close conn.Close

MsgBox (\添加记录成功!\

Adodc1.Refresh '刷新数据源,MSHFlexGrid控件会实时刷新显示数据 End If

'以下四条语句的作用是在操作完成后将文本框置空 Text1.Text = \ Text2.Text = \Text3.Text = \

Text4.Text = \End If End Sub 三、“修改记录”按钮(command2)的click事件代码: Private Sub Command2_Click()

If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then '编号字段是Access的自动编号,为自然数

'因此对text4的内容进行校验,如果不是数值或为0则跳出sub过程 MsgBox \记录号是大于0的自然数,请输入正确的编号!\ Exit Sub

End If

If Text1.Text = \'对三个文本框的内容进行校验,不接收空值 MsgBox \请输入完整的网站信息!\ Exit Sub End If

Dim sc As Integer

sc = MsgBox(\确实修改这条记录吗?\提示信息\

If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1 Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim Str1 As String Dim Str2 As String

Dim Str3 As String

Str1 = \ Str2 = \

Str3 = \ conn.Open Str1 & Str2 & Str3

strSQL = \编号=\al(Text4.Text) & \ rs.Open strSQL, conn, 3, 3 If rs!编号 = Val(Text4.Text) Then

'由于系统数据库使用的是自动编号作为主键,'因此以编号字段的内容作为判断的依据。

'如果rs!编号 = Val(Text4.Text)说明数据库中有此记录,才会修改其它三个字段的内容,

'否则给出“不存在此记录”的提示信息并关闭数据连接 rs!网站名称 = Text1.Text rs!网站地址 = Text2.Text rs!网站描述 = Text3.Text rs.Update rs.Close

conn.Close

MsgBox (\修改记录成功!\

Adodc1.Refresh '刷新数据源,MSHFlexGrid控件会实时刷新显示数据 Else

MsgBox (\不存在此记录!\ Text1.Text = \ Text2.Text = \ Text3.Text = \ Text4.Text = \ rs.Close conn.Close Exit Sub

End If End If

'以下四条语句的作用是在操作完成后将文本框置空 Text1.Text = \Text2.Text = \Text3.Text = \Text4.Text = \

End Sub 四、“删除记录”按钮(command3)的click事件代码: Private Sub Command3_Click() If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then '编号字段是Access的自动编号,为自然数

'因此对text4的内容进行校验,如果不是数值或为0则跳出sub过程 MsgBox \编号是大于0的自然数,请输入正确的编号!\ Exit Sub End If

Dim sc As Integer

sc = MsgBox(\确实要删除这个记录吗?\删除确认!\If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1 Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim Str1 As String

Dim Str2 As String Dim Str3 As String

Str1 = \ Str2 = \ Str3 = \

conn.Open Str1 & Str2 & Str3

strSQL = \编号=\al(Text4.Text) & \ rs.Open strSQL, conn, 3, 3 If rs!编号 = Val(Text4.Text) Then

'由于系统数据库使用的是自动编号作为主键 '因此以编号字段的内容作为判断的依据

'如果rs!编号 = Val(Text4.Text)说明数据库中有此记录并进行删除操作 '否则给“不存在此记录”的提示信息并关闭数据连接 rs.Delete

rs.Close conn.Close

MsgBox (\删除记录成功!\

Adodc1.Refresh '刷新数据源,MSHFlexGrid控件会实时刷新显示数据 Else

MsgBox (\不存在此记录!\ Text4.Text = \ rs.Close conn.Close Exit Sub End If

End If

'以下四条语句的作用是在操作完成后将文本框置空 Text1.Text = \

Text2.Text = \

Text3.Text = \Text4.Text = \End Sub 五、“退出系统”按钮(command4)的click事件代码: Private Sub Command4_Click()

Dim sc As Integer

sc = MsgBox(\确实要退出系统吗?\提示信息\If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1 End End If

End Sub

六、添加完事件代码之后,我们这个实例至此完成,运行一下吧!

vb神童教程(续)--ODBC数据源简介

ODBC(开放式数据库连接)是一种应用程序的接口(API)。这种接口提供了独立于任何的数据管理系统编写应用程序的能力。OCBC通过ODBC驱动程序提供了对不同的数据库供应商的一组应用程序接口来给特殊的数据库管理系统(DBMS)。用户的应用程序使用这组API来调度ODBC驱动程序。然后驱动程序通过SQL语句同DBMS发生联系。 下面我们开始介绍ODBC数据源。在“我的电脑”中打开“控制面板”中的“管理工具”,在窗口中即可见ODBC数据源图标。

双击打开ODBC数据源管理器,如下图所示:

ODBC数据源管理器为配置、添加、删除各种不同的数据源名称提供了最为简洁的方法。它使得用户可以轻松地完成数据源的配置工作,用户也可以删除原有的DSN(数据源名称),

或对先前配置的数据源进行修改。ODBC数据源管理器的具体功能如下:

▲用户DSN:ODBC用户数据源存储了如何与指定数据提供者连接的信息。用户数据源只对当前的用户可见,而且只能应用在本机上。

▲系统DSN:ODBC系统数据源存储了如何与指定数据提供者连接的信息。系统数据源对当前机器上的所有用户可见。

▲文件DSN:ODBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。

▲驱动程序:ODBC驱动程序允许那些支持ODBC的程序通过ODBC数据源获取信息。如果安装新的驱动程序,要使用其安装程序。

▲跟踪:ODBC跟踪允许创建调用ODBC驱动程序的日志,以供技术人员查看;也可以辅助调试应用程序。Visual Studio跟踪启动Microsoft Visual Studio的ODBC跟踪。

▲连接池:连接池允许应用程序重新打开连接句柄,此操作将往返过程存入服务器。

vb神童教程(续)--配置Access数据源

(1)打开控制面板中的ODBC数据源管理器,在“用户DSN”(即“用户数据源”)中选择“MS Access Database”选项,可心删除或配置一个已有的用户数据,这里我们将要添加一个数据源。

(2)单击添加按钮,系统将准备在MS Access Database下添加一个用户数据源,为了安装数据源,会弹出创建新数据源窗口,如下图:

(3)在创建新数据源窗口中,选择\来安装数据源。 (4)单击“完成”按钮,进入ODBC Microsoft Access安装窗口,如下图:

▲在“数据源名”项中键入数据源的名称,这里我们键入“Access_db”作为数据源名。 ▲在“描述”项中键入对数据源的描述,此处内容可选,这里我们键入“This is Access database temp”。

▲在“数据库”项中可以选取、创建、修复或者压缩数据库。这里我们选择“选取”按钮来选取相应的Access数据库。如果用户没有自己建立的Access数据库,那么用户可以到安装Access的目录下面选取Access自带的数据库。注意:Access数据库文件的扩展名是.mdb。

▲最后,单击“确定”按钮。至此一个新的Access数据源已经添加完成,如下图:

说明:如果用户希望所创建的数据源名被本机中的多个用户所使用,请用户添加系统DSN。在实际情况中,开发一个单机单用户的系统没有什么意义,所以一般都需要对系统DSN进行配置。系统DSN的添加过程同用户DSN添加过程类似。

vb神童教程(续)---配置SQL Server数据源

配置SQL Server数据源的步骤:

(1) 打开控制面板中的ODBC数据源管理器,单击“添加”按钮来添加一个数据源。 (2)单击添加按钮后,系统将准备添加一个用户数据源。为了安装数据源,会弹出创建新数据源窗口,如下图所示。由于VB和SQL Server的系列性,所以即使用户没有安装SQL Server,在创建新数据源窗口中也列有SQL Server这一项。当然,这里的列表项只是起了一个标识作用,如果用户尚未安装SQL Server,请先安装后再进行以下的步骤。

(3)在上图选择“SQL Server”后,单击“完成”按钮,进入“创建新的数据源到SQL Server”窗口,如下图所示:

▲在“名称”项中键入新的数据源名,这里我们键入SQL Server1作为新数据源名称。

▲在“描述”项中键入对数据源的描述,此处可以不填。

▲在“服务器”项中键入想连接的SQL Server服务器。如果要连接的SQL Server是安装在本机上,那么就从下拉框中选择“Local”,local表示的是连接到本地的服务器。如果要连接的SQL Server是安装在其它的服务器上,那么就应从下拉框中选取相应的选项。如果从列表中选择服务器名称,则不需要更多的配置。如果输入一个不存在的服务器的名字作为SQL Client Configuration Utility中的一项,可在向导的下一个屏幕上为新名字创建一个服务器别名。

▲单击“完成”按钮完成新数据源的配置。单击“下一步”按钮进行下一步的配置工作。 ▲在“SQL Server”应该如何验证登录标识号的真伪?”下面有两个单选项供用户选择。 ▲如果选定“使用用户输入登录标识号和密码的SQL Server验证”,请指定连接到SQL Server时SQL Server驱动程序使用的登录标识号。这仅适用于确定服务器默认配置的连接,而不适用于使用已创建数据源进行的后续连接。

▲如果选定“使用用户输入登录标识号和密码的SQL Server验证“,请指定连接到SQL Server时SQL Server使用的密码。这只适用于确定服务器默认配置的连接,而不适用于使用新数据源进行的后续连接。

(5)单击“下一步”按钮将进行连接的验证。如果正确,则连接成功;否则,系统会指出具体的错误,用户应该重新验证输入的正确性。

vb神童教程(续)--VB的ADO对象

ADO简介

参考资料:

ADO简介:http://bianceng.cn/VBjc/sjcz/sj2.htm

ado对象模型:http://bianceng.cn/Programming/VB_NET/200705/1201.htm

ADO是另一种用于开发访问OLE DB数据源应用程序的API。有多种程序设计语言都支持ADO,如VB,VC++,VJ++等。ADO提供了较为高级并容易被理解的访问OLE DB数据源的机制,它结合了DAO和RDO的优点。并提供了OLE DB数据源的入口。OLE DB是一种数据库体系结构,它为企业网络提供了普遍的数据综合能力(从大型机到桌面上的数据,而不管数据的具体类型是什么),与ODBC相比,OLE DB在数据通道方面更具有普遍性和有效性,这是因为它允许同建立在COM基础上的更多的数据类型联系和由于ADO是为开发客户机/服务器程序而专门设计的。下图是典型的ADO应用程序的结构。

ADO的特征如下:

▲支持成批更新.即对更新的多个记录进行缓冲,并同步传输到服务器。 ▲支持所有类型的光标。包括只能前移型,关键值型以及动态和静态型。 ▲支持服务器端的存储过程。这些过程可以大大提高应用程序的通用性。 ▲支持返回多个记录集的查询。

▲支持查询目的。包括限制返回的记录的个数,激活返回记录的过滤和预先语句。 ADO是由以下对象组成的:Command,Connect,Error,Field,Parameter和RecordSet。下图给出了ADO对象的层次结构。除了Error和Field之外的所有ADO对象都是可以单独创建的,而Command,Error和Parameter对象是可选的。

ADO对象介绍

1.Connection对象

详见vb神童教程(续)--vb adodb Connection对象简介

Connection对象封装了到数据源的连接而且允许使用Execute()方法来执行SQL命令,Execute()命令返回一个RecordSet对象。可使用Connection对象配置一个数据库的链接、定义脱机等级、执行SQL命令并对SQL语句的执行进行控制和管理。下图显示了Connection

对象同其它对象的关系。

2.Command对象

Command对象定义了将对数据源执行的指定命令。使用Command对象查询数据库并将查询所得到的记录集返回给RecordSet对象,以便执行大量操作或处理数据库结构。Command对象的主要功能主要有:

▲使用数据管理命令创建RecordSet对象,完成成批更新和使用数据定义命令修改数据源结构。

▲打开到数据源的连接,指明一个命令,执行存储过程和创建语句。

▲与Parameter对象联合创建参数化的命令。应用程序可以往各参数集中添加参数,而不需要数据提供者预先填充参数集。

3.Error对象

Error对象封装了从数据源返回的错误。如果Error对象可用,可使用它来获得错误描述、错误代码、创建错误的对象、参考帮助文件和当前的SQL状态。Errors集合中包含了为响应涉及提供者的单个错误而创建的所有Error对象。任何涉及ADO对象的操作都可能产生一个或多个提供者错误。产生错误时,可以将一个或多个Error对象置于Connection对象的Errors集合中。其他ADO操作产生错误时,将会自动清空Errors集合,并且将新的Error对象置于Errors集合中。

4.Field对象

Field对象封装了RecordSet对象中的一列。可以这样说,一个RecordSet对象是由一组Field对象组成的。可以使用Field对象来访问列的名称、列值、类型、精度、范围和列的大小。Field对象只能从RecordSet对象中来访问。

5.Parameter对象

Parameter对象封装了一个命令参数,此参数可以是输入型、输出型或者输入/输出型。许多数据源提供者都支持参数化的命令。需要进行的操作在这些命令中只定义一次,但可以使用变量(或参数)来改变命令的某些细节。例如,SQL SELECT语句可以使用某个参数定义WHERE子句的匹配条件,而使用另一个参数来定义SORT BY子句的列的名称。 6.RecordSet对象

RecordSet对象是ADO的核心,可以单独地创建。RecordSet对象表示的是来自基本表或命令执行结果的记录全集。任何时候,RecordSet对象所指的当前记录均为集合内的单个

记录。在RecordSet对象中有一个默认的指针,用户程序可以通过这个默认指针的移动来访问记录集中的单个记录。RecordSet对象封装了一组可以访问列级数据的Field对象。

RecordSet对象的方法: 1.AddNew方法

AddNew方法为可更新的Recordset对象创建一个新记录.AddNew方法将添加一条新的空记录,并且定位在该记录上,用户可以在被绑定的数据感知控件中输入修改数据.新增加的记录的值为指定的默认值,如果没有指定值,则为Null.例如: 输入完新记录后,要使用I.1pdate方法才能将数据保存到数据库中,在使用Update方法前,数据库中的数据不会发生改变,只有执行Update方法或通过Data控件移动当前记录时,记录才从缓冲区存储到数据库文件中.使用Update方法后,新记录仍保持为当前记录.

Data1.Recordset.AddNew 2.Delete方法

Delete方法可将当前记录从记录集中删除. 3.Edit方法

要编辑修改数据库的记录,首先使要编辑的记录成为当前记录,然后使用Edit方法修改记录内容,使用Edit方法后,移动记录或者使用Update方法把数据存入到数据库中.

4.Move方法

可以使用各种:Move方法移动记录,使不同的记录成为当前记录.有5种方法: MoveFirst.移动到记录集的第一条记录. Move[,ash移动到记录集的最好一条记录. MoveNext:移动到记录集的下一条记录.

MovePrevious:移动到记录集的上一条记录.

Move:可以使用Move方法向前或向后移动若干条记录.语法为:

Recordset.MoveNumRecords.Start

其中NumRecords设置向前或向后移动记录的行数,正数表示向后移动NumRecords行,负数表示向前移动NumRecords行.Start参数为可选,表示基准位置,缺省时为当前记录的位置.可以把当前记录集的Bookmark作为基准位置.

5.Find和Seek方法

要查找一个符合条件的记录,在Table型的记录集中可以使用Seek方法,在其他类型的记录集中可以使用Find方法.

共有4种Find方法:FindFirst,Find[,ast,FindNext和:FindPrevious方法.使用Seek方法要用到索引,而且只能用于Table类型的记录集.

6.I_Ipdate和CancelIJpdate方法

Update方法保存对Recordset对象的当前记录所做的更改.使用IJpdate方法可以保存自从调用.AddNew方法,或自从现有记录的任何字段值发生更改(使用Edit方法)之后,对Recordset对象的当前记录所作的所有更改.调用LIpdate方法后当前记录仍为当前状态.

如果希望取消对当前记录所做的所有更改或者放弃新添加的记录,则必须调用CancelUpdate方法.调用CanceltJpdate时,更改缓存被重置为空,并使用原来的数据对被绑定的数据感知控件进行刷新.

它们的语法为: 7.Close方法

使用Close方法可以关闭:Recordset对象以便释放所有关联的系统资源.关闭对象并非是将它从内存中删除,可以更改它的属性设置并且在此之后再次打开.

vb神童教程(续)--vb adodb Connection对象简介

Connection对象介绍

Connection对象支持许多属性,可以利用这些属性来操作当前的连接状态或者获取一些基本的Connection对象的信息.有一些属性是只读的,而另一些属性是可读写的.

1.Attributes属性 Attributes属性设置或返回一个整型值,它用来指示对象的一项或多项特性.对于Connection对象,Attributes属性为读/写,并且其值可能为以下任意一个或多个XactAttributeEnum值的和(默认为零).

▲AdXactCommitRetaining:执行保留的提交,即通过自动调用CommitTrans启动新事务。并非所有提供者都支持该常量。

▲AdXactAbortRetaining:执行保留的中上,即通过自动调用RollbackTrans启动新事务。并非所有提供者都支持该常量。

2.CommandTimeout属性

CommandTimeout属性设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默许值为30,指示在终止尝试和产生错误之前执行命令期间需要等待的时间。使用Connection对象或Command上的CommandTimeout属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消Execute方法调用。如果在CommandTimeout属性中设置的时间间隔内没有完成命令执行,将产生错误,然后ADO将取消该命令。如果将该属性设置为零,ADO将无限期等待直到命令执行完毕。

3.ConnectionString属性

ConnectionString属性设置或返回字符串值,这个字符串值包含用来建立到数据源的连接的信息.使用ConnectionString属性,通过传递包含一系列由分号分隔的argument=value语句的详细连接字符串可指定数据源。ADO支持ConnectionString属性的四个参数,任何其他参数将直接传递到提供者而不经过ADO处理。

▲Provider参数:指定用来连接的提供者名称。

▲File Name参数:指定包含预先设置连接信息的特定提供者的文件名称。 ▲Remote Provider参数:指定打开客户端连接时使用的提供者名称。 ▲Remote Server参数:指定打开客户端连接时使用的服务器的路径名称。 例:使用Connection对象的ConnectionString属性的示例代码 Public Sub ConnectionString_Example() Dim connection1 As ADODB.Connection Dim connection2 As ADODB.Connection Dim connection3 As ADODB.connection Dim connection4 As ADODB.Connection '不使用数据源名(DSN)打开连接 Set connection1=New ADODB.Connection

connection1.ConnectionString=\\connection1.ConnectionTimeout=30 connection1.Open

'使用DSN和ODBC标记打开连接。

Set connection2=New ADODB.Connection

connection2.ConnectionString=\connection2.Open

'使用DSN和OLE DB标记打开连接。

Set connection3=New ADODB.Connection

connection3.ConnectionString=\connection3.Open

'使用DSN和单个参数而非连接字符串打开连接。 Set connection4=New ADODB.Connection connection4.Open \

End Sub

注意:如果没有复选“引用”对话框中的Data Access Object,程序会出错。在上面的程序段中,先定义了4个Connection对象的变量。这4个变量分别对应于4种不同的连接方式。语句Set connection1=New ADODB.Connection是创建一个新的Connection对象,然后再调用Connection对象的Open方法来打开数据库连接。

4.ConnectionTimeout属性

ConnectionTimeout属性设置或返回指示等待连接打开的时间的长整型值(单位为秒)。其默认值为15,指示在终止尝试和产生错误前建立连接期间所等待的时间。如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用Connection对象的ConnectionTimeout属性。如果打开连接前所经过的时间超过ConnectionTimeout属性上设置的时间,将产生错误并且ADO将取消该尝试。如果将该属性设置为零,ADO将无限等待直到连接打开。

5.DefaultDatabase属性

DefaultDatabase属性可设置或返回指定Connection对象上默认数据库的名称。 例:使用Connection对象的DefaultDababase属性的示例代码。 Public Sub DefaultDatabase_Example() Dim connection1 As ADODB.Connection Set connection1=New ADODB.Connection

connection1.ConnectionString=\\

cnn1.Open

cnn1.DefaultDatabase=\End Sub

6.IsolationLevel属性

IsolationLevel属性指出Connection对象如何处理对象。

7.Mode属性

Mode属性设置或返回以下某个ConnectModeEnum的值,指示用于更改在Connection中的数据的可用权限。

▲AdModeUnknown:默认值。表明权限尚未设置或无法确定。

▲AdModeRead:表明权限为只读。 ▲AdModeWrite:表明权限为只写。

▲AdModeReadWrite:表明权限为读/写。

▲AdModeShareDenyRead:防止其他用户使用读权限打开连接。 ▲AdModeShareDenyWrite:防止其他用户使用写权限打开连接。 ▲AdModeShareExclusive:防止其他用户打开连接。

▲AdModeShareDenyNone:防止其他用户使用任何权限打开连接。 8.Provider属性

Provider属性指出当前数据提供者的名字,或者是使用Open()方法时没有指定名字的情况下所使用的提供者名。但是,调用Open方法时如果在多处指定提供者可能会产生无法预料的后果。如果没有指定提供者,该属性将默认为MSDASQL(Microsoft OLE DB Provider for ODBC)。

例:使用Connection对象的Provider属性的示例代码。

Public Sub Provider_Example()

Dim connection1 As ADODB.Connection

Set connection1=New ADODB.Connection

connection1.Provider=\connection1.Open\End Sub 9.State属性

State属性对所有可应用对象都可用,它用来说明其对象状态是打开或关闭的。可以随时使用State属性来确定指定对象的当前状态。该属性是只读的,并返回下列常量之一的长整型值。

▲AdStateClosed:默认值,指示对象是关闭的。

▲AdStateOpen:指示对象是打开的。

▲AdStateConnecting:指示Recordset对象正在连接。 ▲AdStateExecuting:指示Recordset对象正在执行命令。 ▲AdStateFetching:指示Recordset对象的行正在被读取。 例:使用Connection对象的State属性的示例代码。 Public Sub State_Example()

Dim connection1 As ADODB.Connection Dim statestring AS String

Set connection1=New ADODB.Connection

connection1.ConnectionString=\connection1.Open

Select Case connection1.State case adStateClosed

statestring=\case adStateOpen

statestring=\End Select

'显示连接的状态。

MsgBox \End Sub

Connection对象的方法

Connection对象的方法用来管理事务、执行命令、打开和关闭连接。需注意的是,ADO对象所支持的方法是独立于当前所使用的数据源的。例如一个OLE DB数据源不必支持OLE DB规范的全部功能。

1.BeginTrans方法

BeginTrans方法开始一个连接到数据源的新事务,即启动一个新的事务。与之相应的还

有CommitTrans和RollbackTrans方法。CommitTrans保存所有的更改并结束当前事务,它也可以用来启动一个新的事务。RollbackTrans取消当前事务中所做的任何更改并结束事务,同CommitTrans类似,它也可以用来启动一个新的事务。它们的语法为:

Object.BeginTrans Object.CommitTrans

Object.RollbackTrans

需注意,并非所有提供者都支持事务。需验证提供者定义的属性Transaction DDL是否出现在Connection对象的Properties集合中,如果在则表示提供者支持事务。如果提供者不支持事务,调用其中的某个方法将返回错误。一旦调用了BeginTrans方法,在调用CommitTrans或RollbackTrans结束事务之前提供者将不再立即提交所做的任何更改。

例:使用Connection对象的BeginTrans、CommitTrans和RollbackTrans方法的示例代码。

Public Sub BegiTrans_Example() Dim cnn1 As ADODB.Connection Dim rstTitles As ADODB.Recordset Dim strCnn As String Dim strTitle As String Dim strMessage As String '打开连接。

strCnn=\Set cnn1=New ADODB.Connection cnn1.Open strCnn '打开Titles表

Set rstTitles=New ADODB.Recordset rstTitles.CursorType=adOpenDynamic rstTitles.LockType=adLockPessimistic rstTitles.Open \

rstTitles.MoveFirst cnn1.BeginTrans

'在记录集中循环并询问是否想要更改指定标题的类型. Do Until rstTitles.EOF

If Trim(rstTitles!Type)=\

strTitle=rstTitles!Title

strMessage=\ '更改指定雇员的标题

If MsgBox(strMessage,vbYesNo)=vbYes Then rsttitles!Type=\ rstTitles.Update End If Enf If

rstTitles.MoveNext

Loop

'询问用户是否想提交以上所做的全部更改

If MsgBox(\esNo)=vbYes Then

cnn1.CommitTrans Else

cnn1.RollbackTrans End If

'打印记录集中的当前数据。 rstTitiles.Requery rstTitles.MoveFirst

Do While Not rstTitles.EOF

Debug.Print rstTitles!Title&\ rstTitles.MoveNext

Loop

'恢复原始数据,因为这是一个演示

rstTitles.MoveFirst

Do Until rstTitles.EOF

If Trim(rstTitles!Type)=\ rstTitles!Type=\ rstTitles.Update End If

rstTitles.MoveNext Loop

rstTitles.Close cnn1.Close

End Sub此例更改了数据库中Titles表中所有心理学书籍的类型。在BeginTrans方法启动事务将所有对Titles表的更改隔离后,CommitTrans方法将保存更改。可使用Rollback方法撤消用Update方法保存的更改。

2.Open方法

Open方法打开一个数据源的连接,语法如下:

connection.Open ConnectionString,UserID,Password,OpenOptions 参数说明:

▲ConnectionString:这是一个可选的字符串,它包含了连接信息。 ▲UserID:可选的字符串,它包含了建立连接时所使用的用户名称。 ▲Password:可选的字符串,它包含了建立连接时所使用的密码。

▲OpenOptions:可选的字符串,它包含了建立连接时所使用的连接方式。

3.Close方法

Close方法关闭一个到数据源的连接。在关闭的同时,此连接所使用的任何资源都会被释放。它的语法如下:

Object.Close

例:使用Connection对象的Open和Close方法的示例代码。 Public Sub OpenClose_Example() Dim conn As ADODB.Connection

'Open the Connection object,omit the password conn.Open \ 'Use the Connection object here...

'Close the Connection

conn.Close

End Sub4.Execute方法

Execute方法用来执行查询或由数据源支持的其他命令,并且返回一个RecordSet对象,语法如下:

Set recordset=connection.Execute(CommandText,Recordsaffected,Options) 参数说明:

▲CommandText:这是一个包含要执行的SQL语句、表名、存储过程或特定提供者的文本的字符串。

▲RecordsAffected:这是一个可选的长整型变量,提供者向其返回操作所影响的记录数目。

▲Options:可选的长整型变量,指示提供者应如何为CommandText参数赋值。 例:使用Connection对象的Execute方法的示例代码。 Public Sub Execute_Example()

Dim cnn As ADODB.Connection

Dim MyRecordset As ADODB.Recordset Dim Mysql As String

Set cnn=New ADODB.Connection

Set MyRecordset=New ADODB.Recordset cnn.Open \ Mysql=\ MyRecordset=cnn.Execute Mysql cnn.Close

MyRecordset.Close

End Sub5.OpenSchema方法

OpenSchema方法从提供者中获取数据为纲要信息,语法如下: Set recordset=connection.OpenSchema(QueryType,Criterisa,SchemaID) 参数说明:

▲QueryType:QueryType参数指出所要运行的纲要查询类型。

▲Criteria:可选参数,指出每个QueryType选项的查询限制条件数组。

▲SchemaID:OLE DB规范没有定义提供者纲要查询的GUID。如果QueryType设置为adSchemaProviderSpecific,则需要该参数,否则不使用它。

例:使用Connection对象的OpenSchema方法的示例代码。 Public Sub OpenSchemaX()

Dim cnn1 As ADODB.Recordset

Dim rstSchema As ADODB.Recordset Dim strCnn As String

Set cnn1=New ADODB.Connection

strCnn=\ cnn1.Open strCnn

Set rstSchema=cnn1.OpenSchema(adSchemaTables)

Do Until rstSchema.EOF

Debug.Print \ rstSchema!TABLE_TYPE&VbCr

rstSchema.MoveNext

Loop

rstSchema.Close cnn1.Close End Sub

上例使用了OpenSchema方法显示Pubs数据库内每个表的名称和类型。

vb神童教程(续)--vb连接Access数据库实例

下面我们给出一个连接到Access数据库的实例,此例中用到的数据库为Access 2003。首先在e盘建立一个名为vb的文件夹,然后打开Access 2003,单击“文件”→“新建”,在右侧出现的任务窗格中单击“空数据库”,在出现的对话框中,我们在\文件名\项后输入给新数据库起的名称并选择保存位置,这里我们为新数据库命名为Access_db并保存到我们刚才建立的文件夹中,如下图,单击\创建\按钮后,系统就生成了一个新的Access空数据库。 在空数据库中,还没有任何用户所创建的表,接下来我们就要使用设计器(如下图)为Access_db数据库建立表。

首先我们为Access_db创建一个名为“wzdz”的表,该表由以下4个字段组成: (1)编号:此为Access自动添加的主键字段,我们直接拿来使用。我们可直接设置后三个字段,在输入完了wzdz表的各个字段之后,此时关闭表设计器,Access会提示是否要进行保存表,选择“是”,然后为表起名为“wzdz”。因为没有定义主键(primary Key),Access会提示为表加上一个主键,按提示将编号设置为主键即可。

(2)后三个字段分别为网站名称、网站地址和网站描述,三个字段的属性是相同的,如下:

▲数据类型:文本。

▲字段大小:50

▲有效性规则:无。 ▲必填字段:否

▲允许空字符串:否

▲索引:无

设置完以上字段后,再重新在设计视图中打开wzdz表(方法:在设计器中右击wzdz表名,选“设计视图”命令),应如下图所示:

有了数据库和表之后,如果想让VB应用程序访问数据库,还需进行数据源的配置。只有在配置完成了数据源之后,才能让VB应用程序同数据库进行正确的连接工作,在VB应用程序中才可以通过ADO对象来进行具体数据的操作,如果在建立了数据库之后没有对数据源进行配置或者对数据源的配置工作出现错误,则在此之前所做的一切工作都是白费的。 我们按上一章所述的步骤进行ODBC数据源的配置,建立一个名为Access_db的用户DSN,接下来我们使用VB去具体地连接到Access_db数据库。

首先打开VB,新建一个标准exe工程,在工程的form1中我们输入如下的代码: Private Sub Form_Load()

Dim cnn As ADODB.Connection Dim my_recordset As ADODB.Recordset Dim connect_string As String Dim statestring As String Set cnn=New ADODB.Connection Set my_recordset=New ADODB.Recordset '连接Access数据库

connect_string=\

cnn.Open connect_string

Select Case cnn.State Case adStateClose

statestring=\ Case adStateOpen

statestring=\ End Select

'显示连接的状态

MsgBox \连接成功!\ '对wzdz表进行查询操作

my_recordset.Open \ my_recordset.Close

End Sub本段连接数据库的代码是写在窗体的Form_Load()子过程中的,对数据库的连接工作是在程序一开始即窗体的加载过程中进行的。在Form_Load()中,首先定义了一个Connection对象cnn和一个RecordSet对象my_recordset,以及两个字符串类型的变量connect_string和statestring,接下来的两个Set语句是为了生成一个Connection对象cnn和一个RecordSet对象my_recordset。然后是连接Access数据库,先把连接字符串“DSN=Access_db;UID=;PSW=\赋给字符串变量connect_string。连接字符串中的具体各项内容是根据ODBC数据源的配置而定的,不同的配置方式和配置内容就会有不同的连接字符串。cnn的Open事件用来执行与数据库的连接工作。为了验证与数据库的连接是否正确,这里我们读取了cnn的State属性。State属性可用用来说明其对象状态是打开或关闭的。在使用了State属性后,通过系统函数MsgBox把与数据库的连接状态显示给用户。如果连接状态是打开的,对话框标题栏的文字是“adStateOpen\,如下图:

如果连接状态是关闭,则对话框标题栏显示“adStateClose”。 其后的语句my_recordset.Open \,cnn则示范了如何从数据库中查询所需要的数据。

注意:在程序中每当用一个Set语句来生成一个Connection或RecordSet对象时,最后使用完毕之后应操作使用Close方法对其进行关闭操作。

例程调试中可能出现的问题:

上述代码运行时可能会显示\用户定义类型未定义\,错误定位在“Dim cnn As ADODB.Connection”这一句上。

解决方法:单击“工程”→“引用”,勾选“Microsoft ActiveX Data Object 2.6”,再运行程序即无此问题.

vb神童教程(续)--使用ADO Data控件连接Access的简单实例

ADO Data控件使用Microsoft ActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接.尽管可以在应用程序中直接使用ActiveX数据对象,但ADO Data控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使

用户可以用最少的代码创建数据库应用程序。数据绑定控件是任何具有“数据源”属性的控件。在VB的工具箱中不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框及文本框控件等。此外,VB还包括了若干种数据绑定的ActiveX控件,例如DataGrid、DataCombo、Chart及DataList控件等。用户也可以创建自己的数据绑定的ActiveX控件,或使用从其他开发商购买的控件。数据提供者可以是任何符合OLEDB规范的数据源,使用VB的类模块也可以很方便地创建子集的数据提供者。

下面的程序示例中,将使用一个ADO Data控件及一个DataGrid控件,程序执行时如下图:

DataGrid控件显示并允许对Recordset对象中代表记录和字段的一系列行和列进行数据操作,它是一种数据绑定的ActiveX控件。DataGrid控件的每一个单元格都可以包含文本值,但不能链接或内嵌对象。可以在代码中指定当前单元格,或者用户可以使用鼠标或箭头键在运行时改变它。通过在单元格中键入或编程的方式,单元格可以交互地编辑。单元格能够被单独地选定或按照行来选定。

下面我们来完成此程序。首先新建一个标准exe工程,并把工程中form1的caption属性设置为“使用ADO Data控件连接Access的简单实例”,width属性值设为8490。在窗体中加入1个ADO Data控件。如果在工具箱中找不到ADO Data控件,可以右击工具箱,选择“部件...”菜单项,然后在“部件”窗口的“控件”选项卡中选中Microsoft ADO Data Control6.0(OLEDB)。然后再向form1上加入一个DataGrid控件,并将其width属性值设为8055。如果工具箱中不存在这个控件,可以右击工具箱,在“部件”窗口的“控件”选项卡中选中Microsoft DataGrid Control6.0(OLEDB)。完成后如下图所示:

下面我们对这些控件的一些属性进行设置。 设置Adodc1:

(1) ConnectionString属性

ConnectionString属性表示Adodc1的连接字符串,可以通过三种方法来设置连接字符串属性,如下图所示。这里我们选择“使用ODBC数据源名称”,并在下拉框中选择Access_db,单击确定按钮,就可以在ConnectionString属性中看到“DSN=Access_db”的字符串形式。

(3) RecordSource属性

RecordSource属性设置RecordSet源,这里我们将在属性页的命令文本下输入如下的SQL语句:

Select * From wzdz Order By 网站名称

单击确定按钮,就可以在RecordSource属性中看到“Select * From wzdz Order By 网站名称”的字符串形式,如下图:

设置DataGrid1的DataSource属性:DataSource属性为该控件指定数据源,本例中该属性被设置为名为“Adodc1”的ADO Data控件,这将返回“网站地址”表中的所有记录。

运行一下程序,可以看到程序已经成功连接到了Access_db.mdb数据库,并读取“wzdz”表的所有记录显示到DataGrid控件中。

更进一步的,如果将DataGrid控件的AllowAddNew、AllowDelete和AllowUpdate属性分别设置为true,则可在程序运行时通过其添加、删除和更新数据库中的记录。

VB数据库操作实例

2008年02月22日 05:49

VB数据库操作对很多初学者朋友感到比较吃力,目前教材中的实例对数据库操作都比较单一,很多朋友提议我做一个包括浏览、添加、修改、删除功能的数据库操作实例,下面这个实例就是一个这样的数据库操作实例。

《书库管理系统》是一个最简单的数据库操作实例,它包括浏览、添加、修改、删除功能的数据库操作,使用数据链接控件Adodc链接数据库、数据显示控件MSHFlexGrid显示数据库中的记录。

在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,我们必须点击菜单中的【工程】-【部件】,在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了。 其中Adodc控件的ConnectionString属性值是:

\家庭书架.mdb;Persist Security Info=False\,它设置链接了“家庭书架.mdb”这个Access数据库,RecordSourc属性值是:\图书登记表.ID,图书登记表.名称,图书登记表.书号,图书登记表.作者,图书登记表.出版社,图书登记表.出借状态,出借记录.借书人,出借记录.电话,出借记录.地址,图书登记表.备注,图书登记表.出借记录 from 图书登记表,出借记录 where 图书登记表.ID=出借记录.zhuID ORDER BY 图书登记表.ID\,因为在“家庭书架.mdb”数据库中包含\图书登记表\和\出借记录\二个数据表,这是多表链接的典型的SQL语句。Adodc的这二个

属性值在VB的属性窗口进行编辑,你可以将上述属性值直接输入到相应的属性中,设置Visible的值为False,目的是在运行中不显示这个控件,其他属性默认值即可。

MSHFlexGrid控件的名称我们修改为MS1,它的属性设置稍稍比较麻烦: 首先将它的DataSource属性在属性窗口设置为\;

然后在对象窗口右击控件,在下拉菜单中点击【属性】,在“通用”标签中修改行为3,修改列为11,修改固定行为0,修改固定列为0,如果数据链接没有问题,在属性的“带区”标签中可以看到列标题和列名称已经设置了,其他属性页的属性可以容许默认值,中点击【确定】即可。

另外在属性窗口设置MSHFlexGrid控件的BackColorBkg属性为&H00FFE0E0&,这个属性是控件底色的设置,然后设置BackColorFixed属性为&H00C0FFFF&,这个属性是控件数据显示标题的底色。其他默认值即可。 最后放置三个按钮,一个标签,三个Frame控件,在Frame1、Frame2、Frame3控件中分别放置9个标签(数组),8个文本框,一个下拉选择框,一个按钮,在Frame2、Frame3控件中分别放置一个标签,设置这个标签的Visible值为False,其他设置参考下图:

设置和调整控件如上图后,设置数据库,在程序目录新建一个Access数据库,修改数据库的名称为“家庭书架.mdb”,新建二个数据表,分别是:“图书登记表”和“出借记录”:

在“图书登记表”中添加字段:“ID”为自动编号、主键,“名称”为文本、大小50,“书号”为文本、大小30,“作者”为文本、大小40,“出版社”为文本、大小60,“出借状态”为文本、大小20,“出借记录”为数字、长整型,“备注”为文本、大小50;

在“出借记录”中添加字段:“ID”为自动编号、主键,“zhuID”为数字、长整型,“名称”为文本、大小50,“借书人”为文本、大小20,“电话”为文本、大小20,“地址”为文本、大小50。 数据库设置成功。

最后点击【视图】-【代码窗口】输入下面的代码: '模块级变量

Dim ZFC As String Dim ROSX As Integer

'------------------------------------- '添加记录事件

Private Sub Command1_Click() '添加记录

Dim FL As String, XID As Long FL = App.Path & \家庭书架.mdb\Set conn = OpenDatabase(FL)

strSQL = \图书登记表\Set rs = conn.OpenRecordset(strSQL) rs.AddNew

rs!名称 = Text1(0).Text rs!书号 = Text1(1).Text rs!作者 = Text1(2).Text rs!出版社 = Text1(3).Text rs!出借状态 = Combo1.Text rs!备注 = Text1(7).Text

If Combo1.Text = \出借\出借记录 = 1 rs.Update rs.Close

Set rs = Nothing

strSQL = \图书登记表 Order By ID Desc\Set rs = conn.OpenRecordset(strSQL) XID = rs!ID rs.Close

Set rs = Nothing

strSQL = \出借记录\Set rs = conn.OpenRecordset(strSQL) If Combo1.Text = \出借\rs.AddNew

rs!zhuID = XID

rs!名称 = Text1(0).Text rs!借书人 = Text1(4).Text rs!电话 = Text1(5).Text rs!地址 = Text1(6).Text rs.Update Else

rs.AddNew

rs!zhuID = XID rs!名称 = \

rs!借书人 = \没有出借\

rs!电话 = \无\rs!地址 = \无\rs.Update End If rs.Close

Set rs = Nothing conn.Close

MsgBox \记录添加成功!\Unload Me

书库管理.Show End Sub

'------------------------------------- '修改记录事件

Private Sub Command2_Click() '修改记录

If Val(Label4.Caption) = 0 Then MsgBox \没有选择要修改的记录!\Exit Sub End If

Dim FL As String

FL = App.Path & \家庭书架.mdb\Set conn = OpenDatabase(FL)

strSQL = \* From 图书登记表 Where ID=\& Val(Label4.Caption) & \Set rs = conn.OpenRecordset(strSQL) rs.Edit

rs!名称 = Text2(0).Text rs!书号 = Text2(1).Text rs!作者 = Text2(2).Text rs!出版社 = Text2(3).Text rs!出借状态 = Combo2.Text rs!备注 = Text2(7).Text

If Combo2.Text = \出借\出借记录 = 1 rs.Update rs.Close

Set rs = Nothing

strSQL = \出借记录 Where zhuID=\\

Set rs = conn.OpenRecordset(strSQL) If Combo2.Text = \出借\If Not rs.EOF Then rs.Edit

rs!名称 = Text2(0).Text rs!借书人 = Text2(4).Text rs!电话 = Text2(5).Text

rs!地址 = Text2(6).Text rs.Update Else

rs.AddNew

rs!zhuID = Val(Label4.Caption) rs!名称 = Text2(0).Text rs!借书人 = Text2(4).Text rs!电话 = Text2(5).Text rs!地址 = Text2(6).Text rs.Update End If Else

If Not rs.EOF Then rs.Edit

rs!名称 = Text2(0).Text rs!借书人 = \没有出借\rs!电话 = \无\rs!地址 = \无\rs.Update Else

rs.AddNew

rs!zhuID = Val(Label4.Caption) rs!名称 = Text2(0).Text rs!借书人 = \没有出借\rs!电话 = \无\rs!地址 = \无\rs.Update End If End If rs.Close

Set rs = Nothing conn.Close

MsgBox \记录修改成功!\Label4.Caption = \Unload Me

书库管理.Show End Sub

'------------------------------------- '添加记录连接

Private Sub Command3_Click() Frame1.Visible = True Frame2.Visible = False Frame3.Visible = False ZFC = \添加\

For i = 0 To 7

Text1(i).Text = \Next i

Combo1.Text = \

Command1.Visible = True

Label5.Caption = \现在正在添加图书资料\End Sub

'------------------------------------- '修改记录连接

Private Sub Command4_Click() Frame1.Visible = False Frame2.Visible = True Frame3.Visible = False ZFC = \修改\For i = 0 To 7

Text2(i).Text = \Next i

Combo2.Text = \Label4.Caption = \

Command2.Visible = True

Label5.Caption = \现在正在修改图书资料\End Sub

'------------------------------------- '删除记录连接

Private Sub Command5_Click() Frame1.Visible = False Frame2.Visible = False Frame3.Visible = True ZFC = \删除\For i = 0 To 7

Text3(i).Text = \Next i

Combo3.Text = \Label1.Caption = \

Command6.Visible = True

Label5.Caption = \现在正在删除图书资料\End Sub

'------------------------------------- '删除记录事件

Private Sub Command6_Click() '删除记录

Dim SS As Integer

SS = MsgBox(\确实要删除这个记录吗?\If SS = 1 Then

删除确认!\If Val(Label1.Caption) = 0 Then MsgBox \没有选择要修改的记录!\Exit Sub End If

Dim FL As String, XID As Long FL = App.Path & \家庭书架.mdb\Set conn = OpenDatabase(FL)

strSQL = \* From 图书登记表 Where ID=\& Val(Label1.Caption) & \Set rs = conn.OpenRecordset(strSQL) rs.Delete rs.Close

Set rs = Nothing

strSQL = \出借记录 Where zhuID=\\

Set rs = conn.OpenRecordset(strSQL) rs.Delete rs.Close

Set rs = Nothing conn.Close

MsgBox \记录删除成功!\Unload Me

书库管理.Show Else

MsgBox \取消了删除记录!\End If End Sub

'------------------------------------- '页面启动事件

Private Sub Form_Load() Dim strSQL As String Frame1.Visible = False Frame2.Visible = False Frame3.Visible = False

Label5.Caption = \现在正在浏览图书资料\MS1.BackColorBkg = &HFFE0E0 End Sub

'------------------------------------- '点击MSHFlexGrid控件中记录的事件 Private Sub MS1_Click()

Dim i As Integer, COLX As Integer COLX = MS1.Col ROSX = MS1.Row

If ZFC = \添加\For i = 0 To 7

Text1(i).Text = \Next i

Combo1.Text = \

ElseIf ZFC = \修改\

Text2(0).Text = MS1.TextMatrix(ROSX, 1) Text2(1).Text = MS1.TextMatrix(ROSX, 2) Text2(2).Text = MS1.TextMatrix(ROSX, 3) Text2(3).Text = MS1.TextMatrix(ROSX, 4) Combo2.Text = MS1.TextMatrix(ROSX, 5) Text2(4).Text = MS1.TextMatrix(ROSX, 6) Text2(5).Text = MS1.TextMatrix(ROSX, 7) Text2(6).Text = MS1.TextMatrix(ROSX, 8) Text2(7).Text = MS1.TextMatrix(ROSX, 9) Label4.Caption = MS1.TextMatrix(ROSX, 0) Label5.Caption = \已经选择记录准备修改\ElseIf ZFC = \删除\

Text3(0).Text = MS1.TextMatrix(ROSX, 1) Text3(1).Text = MS1.TextMatrix(ROSX, 2) Text3(2).Text = MS1.TextMatrix(ROSX, 3) Text3(3).Text = MS1.TextMatrix(ROSX, 4) Combo3.Text = MS1.TextMatrix(ROSX, 5) Text3(4).Text = MS1.TextMatrix(ROSX, 6) Text3(5).Text = MS1.TextMatrix(ROSX, 7) Text3(6).Text = MS1.TextMatrix(ROSX, 8) Text3(7).Text = MS1.TextMatrix(ROSX, 9) Label1.Caption = MS1.TextMatrix(ROSX, 0) Label5.Caption = \已经选择记录准备删除\ElseIf ZFC = \CL = MS1.Col

For i = 1 To MS1.Cols MS1.Col = i - 1

MS1.CellBackColor = vbWhite Next i

MS1.Col = CL End If

MS1.Col = C0LX

MS1.CellBackColor = &H119911 End Sub

'------------------------------------- '离开该行时将该行的颜色恢复为白色的事件 Private Sub MS1_LeaveCell() Dim i As Integer Dim CL As Integer

'离开该行时将该行的颜色恢复为白色

CL = MS1.Col

For i = 1 To MS1.Cols MS1.Col = i - 1

MS1.CellBackColor = vbWhite Next i

MS1.Col = CL End Sub

下面是出现运行的情况:

本文来源:https://www.bwwdw.com/article/ywuo.html

Top