第十四讲VB数据库应用关系型数据库模型记录集是浏览数据库的工具VB中数据库内的表不允许直接访问,而只能通过记录集对象进行记录 的操作和浏览数据库管理器创建数据库创建数据库Data控件Data控件属性Data控件属性Data控件-例Data控 件-例数据网格控件-MsFlexGridData控件的事件照片输入方法2Data控件的事件Data控件的常用方法Rec ordSet对象的属性RecordSet对象的属性RecordSet对象的方法Move方法-例RecordSet对象的方法 Find方法-例RecordSet对象的方法数据库记录的增、删、改操作数据库记录的增、删、改操作数据库记录的增、删、改操 作数据库记录的操作-例数据库记录的操作-例数据库记录的操作-例数据库记录的操作-例记录完整性验证使用ADO数据控件A DO数据控件的常用属性ADO数据控件与数据库连接ADO数据控件与数据库连接ADO数据控件与数据库连接ADO控件上绑定控件的 使用DataGrid控件编辑显示在DataGrid内的记录集使用数据窗体向导使用数据窗体向导-例1使用数据窗体向导-例1 使用数据窗体向导-例1使用数据窗体向导-例2编辑记录-Edit方法调用Edit方法给各字段赋值调用Update 方法,确定所作修改说明:要放弃对数据的所有修改,可使用UpdateControls方法,也可使用Refresh方法,重读数据 库,刷新记录集数据控件本身具有修改当前记录的功能,直接修改被数据库所约束的绑定控件的内容后,单击数据控件上的任一箭头就可改变当 前记录,确定所作的修改PrivateSubCommand1_Click()Command2.Enabled= NotCommand2.EnabledCommand3.Enabled=NotCommand3.Enabl edCommand4.Enabled=NotCommand4.EnabledIfCommand 1.Caption="新增"ThenCommand1.Caption="确认" mbookmark=Data1.Recordset.BookmarkData1.Recordse t.AddNewText1.SetFocusElseCommand1. Caption="新增"Data1.Recordset.UpdateData1 .Recordset.MoveLastEndIfEndSubDimmbookmarkPrivateSu bCommand2_Click()OnErrorResumeNextData1.Recordset .DeleteData1.Recordset.MoveNextIfData1.Recordset.EOF ThenData1.Recordset.MoveLastEndSub删除功能错误捕捉语句,程序运行 发生错误时,忽略错误行,继续执行下一条语句PrivateSubCommand3_Click()Command1 .Enabled=NotCommand1.EnabledCommand2.Enabled=NotComm and2.EnabledCommand4.Enabled=NotCommand4.Enabled IfCommand3.Caption="修改"Thenmbookmark=Data1.Reco rdset.BookmarkCommand3.Caption="确认"Data 1.Recordset.EditText1.SetFocusElseC ommand3.Caption="修改"Data1.Recordset.UpdateEn dIfEndSub修改功能PrivateSubCommand4_Click()Command1.Capti on="新增"Command3.Caption="修改"Command1.Enabled=True Command2.Enabled=TrueCommand3.Enabled=TrueComm and4.Enabled=FalseData1.UpdateControlsData1.Recordset .Bookmark=mbookmarkEndSub放弃功能返回新增或修改操作时的记录位置PrivateSubDa ta1_Validate(ActionAsInteger,SaveAsInteger)IfText1.T ext=""And(Action=6OrText1.DataChanged)ThenDa ta1.UpdateControlsMsgBox"数据不完整,必须要有学号!"EndIf IfAction>=1AndAction<5ThenCommand1.Cap tion="新增":Command3.Caption="修改"Command1.Enabled =True:Command2.Enabled=TrueCommand3.Enabled=Tru e:Command4.Enabled=FalseEndIfEndSub使用Data1_V alidate事件过滤无效记录学号非空!与Data控件类似,可快速的访问数据库位于“MicrosoftADOData Control6.0(OLEDB)”中ADO控件ConnectionString属性包含了用于与数据源建立 连接的相关信息RecordSource属性确定具体可访问的数据,这些数据构成记录集对象RecordsetC onnectionTimeout属性用于数据连接的超时设置,在指定的时间内连接不成功显示超时信息ADO控件的方法和事件 与Data控件相同使用属性页窗口设置①②ConnectionString属性③④⑤RecordSource属性P rovider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;Data Source=C:\student.mdb设置完成后,ADO控件的ConnectionString属性为:RecordSou rce属性为:基本情况MSFlexGridMSHFlexGridDataGridMSChartDataComboDat aListADO控件和DataGrid控件绑定,实现数据库浏览功能,同时具有编辑功能DataGrid控件位于Micro softDataGridControl6.0(OLEDB)中将DataGrid控件绑定到ADO数据控件Adodc1上 设置DataGrid控件的DataSource属性为Adodc1使用DataGrid控件的属性AllowA ddNew:增AllowDelete:删AllowUpdate:改增加新记录通过数据窗体向导能建立一个访问数据的窗口 执行“外接程序/外接程序管理器”命令,将“VB6数据窗体向导”装入到“外接程序”菜单中利用数据窗体创建数据库访问对话框① “外接程序”/“数据窗体向导”②选择数据库类型数据库管理器的使用使用Data控件访问数据库使用ADO数据控件 内容提要现今大部分数据库都采用关系模型,不仅由于其自身的功能强大,而且由于它提供了结构化查询语言(SQL)的标准接口关系 数据库模型把数据用表的集合表示一个数据库可以由多个表组成,表与表之间可以用不同的方式相互关联一对多关系多对多关系 一对一关系一对多关系关系型数据库模型VB中,可以将一个或几个表中的数据构成记录集Recordset对象,记录集也由行和列构 成,与表类似.学号课程成绩050001数学77学号姓名 性别专业出生日期050001张红女英文1988-7-8050008牛丽女经管 1985-1-2。。。。。。。。。。。。。。。 (表一)数据库记录集学号 姓名专业课程成绩050001张红英文数学77050008牛丽经管数学 89。。。。。。。。。。。。。。Recordset对象数据库记录集Recordset对象VB 的数据库管理器(Visdata.exe)可用于管理数据库“外接程序”/“可视化数据管理器”命令打开可视数据管理器“文件”/ “新建”命令,新建一Access数据库student.mdb在数据库中新建“基本情况”表“基本情况表”表 结构表中添加记录双击“基本情况”表建立新表鼠标右键单击数据库窗口,弹出菜单,选择对应命令打开、删除 表,修改表结构和建立表间的关联等操作右键单击数据库窗口内的表名,弹出菜单,选择对应命令编辑记录:双击表名,打开表格 输入窗,编辑、增删记录数据库管理器使用小结不需编程访问数据库的功能能够利用三种记录集对象访问数据库中的数据编辑数据 功能改变某个字段的值,只要移动记录,便把所作的修改存入数据库Data控件Connect属性指定要连接 的数据库类型(Access,DBF,XLS,ODBC)DatabaseName属性指定使用的数据库文件名(包含路径 )RecordSource属性确定具体可访问的数据,这些数据构成记录集对象RecordSetRecordSour ce属性可以是数据库中的单个表名,也可以是使用SQL查询语言的一个查询字符串RecordType属性确定记录集类 型(Table,DynaSet,SnapShot)BOFAction和EOFAction属性返回或设置一个值指 示在BOFAction或EOFAction属性为True时Data控件进行什么操作BOFAction0 :重定位到第一个记录1:定位到一个无效记录EOFAction0:重定位到最后一个记录1:定位到一个无效记录 2:添加新的空记录数据控件只能连接数据库产生记录集,不能显示记录集中的数据,要显示记录集中的数据必须通过能与它绑定的控件 来实现。数据库记录集绑定控件姓名田钢性别男常用绑定控件绑定控件DataSource通过指定一个 有效的数据控件,将绑定控件连接到一个数据源上DataField设置数据库中有效的字段与绑定控件建立联系Data控 件、记录集与绑定控件记录集学号姓名性别专业年龄050001张红女英文 1988-7-8050010田钢男土木工程1987-9-3………………………………….数据库绑定 控件的属性基本情况Student.mdbAccessData1RecordSourceDatabaseNameCon nect在窗体上显示基本情况表的内容一个Data控件,6个绑定控件性别Data1Text3姓名Data1Text2 学号Data1Text1照片Data1PictureBox1出生日期专业DataFieldData1Data 1DataSourceText5Text4对象对象属性属性PrivateSubPicture1_DblClic k()Picture1.Picture=Clipboard.GetDataEndSub照片的输入方法可通过剪 贴板将照片复制到Picture1控件中程序运行时,双击Picture1,实现剪贴板到Picture1的复制移动Data1 的记录指针,Picture1中的照片存入数据库不需编程实现多条记录的数据显示位于MicroSoftFlexGridC ontrol6.0中设置DataSource属性为一个Data控件Student.mdbDatabaseName基本 情况AccessData1RecordSourceConnect属性对象1FixedRowsData1MsFl exGrid1Datasource属性对象Rows、Cols(网格的行或列数)FixedRows、FixedCol s(不可卷动的行或列数)Reposition事件改变记录集的指针,使其从一个记录移到另一条记录时,触发Reposi tion事件通常用该事件显示当前指针的位置PrivateSubData1_Reposition() Data1.Caption=Data1.Recordset.AbsolutePosition+1EndSub记录集的 当前指针记录集对象PrivateSubData1_Reposition()Data1.Caption=Da ta1.Recordset.AbsolutePosition+1Picture1.Picture=LoadPi cture("pic\"&Data1.Caption&".gif")EndSub在Data1的Reposition 事件中,使用LoadPicture函数,输入到Picture1控件中Validate事件Validate事件发生在 记录指针移动时,当新记录成为当前记录之前。一般用于对写入数据库的记录执行合法性检查PrivateSubData 1_Validate(ActionAsInteger,SaveAsInteger)IfText3.Dat aChangedThenMsgBox"该数据不能修改"Text3.DataCh anged=FalseEndIfEndSubRefresh方法激活对数据控件属性的改变,使 对数据库的操作有效PrivateSubForm_Load()DimmpathAsStringm path=App.PathIfRight(mpath,1)<>"\"Thenmpath=mpath +"\"Data1.DatabaseName=mpath+"student.mdb"Data1.Re cordSource="基本情况"Data1.RefreshEndSubUpdataControls方法 将数据从数据库中重新读到被数据控件绑定的控件内Data1.UpdateControls放弃对记录的修改当前执行 程序的路径AbsolutePosition属性返回当前记录指针值,第1条记录,其值为0,……BOF、EOF属性 判断记录指针是否在首记录之前或在末记录之后Bookmark属性返回当前记录的标签。可将当前记录快速移动到设置 为有效标签所标识的记录上PrivateSubForm_Click()mbookmark=Data1.Recor dset.BookmarkEndSubPrivateSubCommand1_Click()Data1.Reco rdset.Bookmark=mbookmarkEndSubDimmbookmarkNoMatch属性在 记录集中查找记录时,如找到匹配的记录,该属性为False,该属性常与Bookmark属性一起使用RecordCount属性 RecordSet对象中的记录个数BOFEOFRecordCountBookmarkMove方法代替D ata控件的4个箭头的功能,遍历整个记录集MoveFirstMoveLastMoveNextMovePrevious MoveFirst方法MoveLast方法Move[n]方法MoveNext方法MovePrevious 方法用四个命令按钮实现Data控件的四个箭头按钮的功能PrivateSubCommand1_Click()Dat a1.Recordset.MoveFirstEndSubPrivateSubCommand4_Click()D ata1.Recordset.MoveLastEndSubPrivateSubCommand3_Click() Data1.Recordset.MoveNextIfData1.Recordset.EOFThenData1.Re cordset.MoveLastEndSubPrivateSubCommand2_Click()Data1.R ecordset.MovePreviousIfData1.Recordset.BOFThenData1.Recor dset.MoveFirstEndSubFind方法可在指定的Dynaset或Snapshot类型的记录集对象中 查找与指定条件相符的一条记录,并使之成为当前记录FindFirst方法FindLast方法FindNext方法 FindPrevious方法Data1.Recordset.FindFirst"专业=''经管''"专业=''"& mno&"''mno是变量空格Data1.Recordset.FindNext"专业Like''电''" 模糊查询OptionCompareText''不区分大小写OptionCompareBinary''区分 大小写PrivateSubCommand5_Click()DimmnoAsStringmno= InputBox$("请输入学号","查找窗")Data1.Recordset.FindFirst"学号=''"& mno&"''"IfData1.Recordset.NoMatchThenMsgBox"无此学号!",, "提示"EndSub添加查找功能Seek方法在表类型的记录集中查找与指定索引相符的第一条记录,并使之成为当前记录。数据表对象.Seekcomparison,key1,key2……=、>=、>、<>、<、<=必须先设置索引!Data1.RecordsetType=0Data1.RecordSource="基本情况"Data1.RefreshData1.Recordset.Index="No"Data1.Recordset.Seek">","050010"查找表中学号>050010的第一条记录增加记录-AddNew方法调用AddNew方法,将一条新记录加入记录集内存缓冲区给各字段赋值Recordset.Fields(“字段名”)=值调用Update方法,确定所作的添加,将数据写入数据库说明:调用Update方法写入记录后,记录指针自动返回到添加记录前的位置为了使记录指针显示为新添加的记录,在调用Update方法后,使用MoveLast方法将记录指针移到新记录上删除记录-Delete方法定位被删除的记录,使之成为当前记录调用Delete方法移动记录指针说明:使用Delete方法,当前记录被删除,没有任何警告信息删除一条记录后,绑定控件仍然显示该记录的内容,必须通过移动记录指针刷新绑定控件(一般采用移动到下一个记录的处理方法) |
|