VB程序设计教程集 (2).ppt

上传人:小飞机 文档编号:6522689 上传时间:2023-11-08 格式:PPT 页数:54 大小:676KB
返回 下载 相关 举报
VB程序设计教程集 (2).ppt_第1页
第1页 / 共54页
VB程序设计教程集 (2).ppt_第2页
第2页 / 共54页
VB程序设计教程集 (2).ppt_第3页
第3页 / 共54页
VB程序设计教程集 (2).ppt_第4页
第4页 / 共54页
VB程序设计教程集 (2).ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《VB程序设计教程集 (2).ppt》由会员分享,可在线阅读,更多相关《VB程序设计教程集 (2).ppt(54页珍藏版)》请在三一办公上搜索。

1、12.1数据库管理器,12.2数据控件的使用,12.3 SQL语言,12.4 ADO数据控件,第12章Visual Basic 6.0与数据库,退出,12.1数据库管理器,图12-1可视数据库管理器,利用可视化数据管理器可创建多种类型的数据库。创建步骤如下:单击“文件”菜单下的“新建”菜单项,出现数据库类型选择菜单。单击数据库类型菜单中的Microsoft Access将出现版本子菜单,在版本菜单中选择要创建的数据库版本。,图12-2 创建数据库的菜单选项,2)选择要创建的数据库类型及版本后,出现新建数据库对话框,在此对话框中,输入要创建的数据库名“student.mdb”。3)此时,在可视化

2、数据库管理器窗口中出现“数据库窗口”和“SQL语句”窗口,如图12-3所示。“数据库窗口”以树型结构显示数据库中的所有对象,单击鼠标右键激活快捷菜单,执行“新建表”、“刷新列表“等菜单项。,图12-3 数据库窗口和SQL窗口,4)在“数据库窗口”中单击鼠标右键,出现快捷菜单,执行“新建表”菜单项便可为数据库添加一个新表。5)屏幕出现如图12-4所示的“表结构”对话框。在这个对话框中,可输入新表的名称,并添加字段,也可从表中删除字段,还可以添加或删除作为索引的字段。,图12-4“表结构”对话框,表12-1字段属性列表,图12-5 添加字段”对话框,6)添加字段完成后,单击“添加字段”对话框中的“

3、关闭”按钮。回到如图12-6所示的“表结构”对话框,单击“添加索引”按钮,出现“添加索引”对话框,如图12-7所示,选择索引字段为“学号”,输入索引字段名为“ID”,单击“确定”按钮。,图12-6 添加字段后的“表结构”对话框,图12-7 添加索引对话框,7)完成上述步骤后,单击“生成表”按钮,就会在“数据库窗口”中出现“学生情况”表,如图12-8所示。,图12-8 生成新表后的“数据库窗口”,8)当一张表建立后,可以再建立另一张表。如果要在已经存在的数据库文件内增加一张新表,只需要在数据管理器文件菜单中选择打开数据库命令,其余操作过程与建立数据表的操作相同。当表建好后,用鼠标左键双击出现在数

4、据库窗口中的”学生情况”表名,打开图12-9所示的表格输入窗,选择对应命令进行添加、编辑、增删记录等操作。,图12-9 表格输入窗,12.2数据控件的使用,12.2.1 数据控件常用属性,12.2.2数据绑定控件常用属性,返回,退出,12.2.4数据控件上的对象,12.2.6数据控件的事件,12.2.7数据库记录的增删改操作,12.2.3使用数据控件操作数据库中的数据,12.2.5数据控件的常用方法,12.2.1 数据控件常用属性,Connect属性,Connect属性指定数据控件所要连接的数据库类型。,Visual Basic 60提供了7种可访问的数据库类型,Visual Basic可识别

5、的数据库有:,1)Microsoft Access的MDB文件(缺省值);,2)Borland dBASE、Microsoft Foxpro的DBF文件;,3)Borland Paradox的DB文件;,4)Novell Btrieve的DDF文件;,5)Microsoft Excel的XLS文件;,6)Lotus的WKS文件;,7)Open DataBase Connectivity(ODBC)数据库,2.DatabaseName属性,DatabaseName属性指定具体使用数据库的名称,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名

6、,而具体文件名放在RecordSource属性中。如果在“属性”窗口中单击DatabasName属性右边的按钮,会出现一个公用对话框用于选择相应的数据库。例如,下面语句设置了可访问的数据库名称:如果连接一个Microsoft Access的数据库C:职员档案mdb,则Data1DatabaseName”C:职员档案mdb”;如果连接一个Foxpro数据库C:yang职员档案1dbf,因为Foxpro数据库只含有一个表,则Data1DatabaseName”C:yang”,RecordSource=”职员档案1dbf”。如果未写数据库文件的扩展名,则缺省情况下为使用以.mdb为扩展名的数据库文件

7、。,3)RecordSource属性,RecordSource属性确定具体可访问的数据,这些数据构成记录集对象Recordset。4)RecordsetType属性RecordsetType属性确定记录集类型。5)ReadOnly属性在对数据库只查看不修改时,通常将ReadOnly属性设置为True,而在运行时根据一定的条件,响应一定的指令后,才将它设置为False。6)Exclusive属性Exclusive属性值设置为True时,则在通过关闭数据库撤消这个设置前,其他任何人不能对数据库访问。这个属性的缺省值是False。,7)BOFAction、EOFAction属性当BOFAction值

8、为0,控件重定位到第一个记录;BOFAction值为1,移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件。当EOFAction值为0,控件重定位到最后一个记录;当EOFAction值为1,移过记录集结束位,定位到一个无效记录,触发数据控件对最后一个记录的无效事件;EOFAction值为2,向记录集加入新的空记录,可以对新纪录进行编辑,移动记录指针新纪录写入数据库。,12.2.2数据绑定控件常用属性,要使文本等控件与数据控件捆绑在一起,成为数据控件的绑定控件。并且能够受到数据库约束,必须在运行时对这些控件的两个属性进行设置:,1)DataSource属性,DataSour

9、ce属性用来将一个有效的数据控件与一个数据库连接。,2)DataFleld属性,DataFleld属性设置数据库有效的字段与绑定控件建立联系。,图12-10 绑定控件、数据控件和数据库三者的关系,12.2.3使用数据控件操作数据库中的数据,表12-2 窗体属性表,例91、设计一窗体,在窗体内通过文本框等绑定控件显示9.1节中建立的学生情况表内的记录。,不需编写任何代码,就可浏览表中的内容。单击运行按钮就可出现如图12-11所示4个文本框分别显示学号,姓名,性别,和出生年月的内容。,使用数据控件对象的4个箭头可遍历整个记录集中的记录。通过DBList控件和DBCombo控件浏览学生情况表内的记录

10、时,DBList控件和DBCombo控件不是Visual Basic工具箱内的默认控件,需要在开发环境中选择“工程”|“部件”菜单命令,并在随即出现的对话框中选择Microsoft Data Bound List Controls选项,将它们添加到工具箱中。,图12-11 学生情况表显示界面,例12-2:设计一个窗体,通过数据网格控件浏览学生情况表内的记录。参见图12-12所示。,图12-12 通过数据网格控件浏览学生情况表,使用DATA数据控件时可使用MsflexGrid网格控件或VB5.0提供的数据网格控件DBGrid。MsflexGrid控件与DBGrid控件都不是Visual Basi

11、c工具箱内的默认控件,需要在开发环境中选择“工程”主菜单中的“添加部件”命令,并在随即出现的对话框中选择Microsoft Flex Grid Control6.0或Microsoft Data Bound Control5.0,将其添加到工具箱中。,表12-3 窗体属性表,数据控件是依靠数据对象来获取对数据访问的,与其相关的数据对象有:1 Database对象Database对象是物理数据库的逻辑表示。数据控件通过DatabaseName属性连接到一个具体的数据库,并通过它的Database对象表现出来。除了数据控件获取Database对象之外,还可以在程序中定义Database对象,并通过

12、OpenDatabase()函数实现对物理数据库的连接;或者将数据控件的Database对象传递给被定义的Database对象。例如以下语句:Dim Ds1 As Database 定义数据对象Dim Ds2 As DatabaseSet Ds1=OpenDatabase(“e:VB|class.mdb)使Ds1获取物理数据库Set Ds2=Me.data1.Database 将数据控件的Database对象传递给Ds2,12.2.4数据控件上的对象,2 Recordset对象Recordset对象代表一组与数据库相关的逻辑记录集合。它所对应的数据来源可以是数据表,也可以是和SQL语言中查询语

13、句(SELECT)有关的查询结果。Recordset对象有三种类型:Table类型:记录集为表集,可以显示、添加、删除和修改,具有较好的更新性能。Dynaset类型:记录集为动态集,可以显示、添加、删除和修改,并具有较大的操作灵活性。Snapshot类型:记录集为快照集,只能显示,具有较好的显示速度。除了Data控件获取Recordset对象之外,还可以在程序中定义Recordset对象,并通过函数获得数据。Dim Ds As Database 定义数据对象Dim Rs As Recorderset 定义记录对象Set Ds=OpenDatabase(“e:VB|class.mdb)使Ds获取

14、物理数据库Set Rs=Me.data1.Database.OpenRecordse(“SElECT*FROM 学生情况”,dbOpenDynaset)以动态集方式打开从“学生情况”数据表取得的SQL查询,传给Rs对象Set Me.data1.Recorderset=.Rs,12.2.5数据控件的常用方法,1 Refresh方法,如果在设计状态没有为打开数据控件的有关属性全部赋值,或当RecordSource在运行时 被改变后,必须使用激活数据控件的Refresh方法激活这些变化。,2 UpdateCountrols方法,UpdateCountrols方法可以将数据从数据库中重新读到 被数据控

15、件绑定的空件内。使用UpdateCountrols方法终止用户对绑定内控件的修改。,3 UpdateRecord方法,当对绑定内的控件修改后,数据控件需要移动记录集的指针才能保存修改,如果使用UpdateRecord方法可强制数据控件将绑定控件内的数据写入到数据库中而不再触发Vaildate事件。在代码中用该方法修改。,12.2.6数据控件的事件,1 Reposition事件,Reposition事件发生在一条记录成为当前记录后。,只要改变记录集的指针使其从一条指针移到另一条记录。会产生Reposition事件,可以在该事件过程中建立程序,可反映出记录位置、记录总数等。,2 Validate事

16、件,当要移动记录指针前,修改与删除记录前或卸载含有数据控件的窗体时触发Validate事件。Validate事件检查被数据控绑定的控件内的数据是否发生变化。它通过save参数()True或False)判断是否有数据发生变化,Action参数判断哪一种操作触发了Validate事件。Action参数可为表12-4中的值:,表12-4 Validate事件的Action参数表,对记录的操作能够通过Recordset对象的方法实现。其常用方法有:1)AddNew方法加入一条新记录到记录集内存缓冲区。例如:Rs.AddNew2)Edit方法允许对当前记录进行修改。3)Delete方法用于删除当前记录。

17、4)Update方法把内存缓冲区的内容写进数据库文件,保存对数据库所作的改动。5)Close方法关闭记录集和数据库。该方法也能用在数据库对象上,将数据库关闭。Rs.Close 关闭记录集Ds.Close 关闭数据库,12.2.7数据库记录的增删改操作,5)Move方法使用Move方法可代替对数据库控件对象的4个箭头的操作遍历整个记录几种的记录。5种Move方法是:(1)MoveFirst方法移至第一条记录(2)MoveLast方法移至最后一条记录(3)MoveNext方法移至下一条记录(4)MovePrevious方法移至上一条记录(5)Moven方法向前或向后移动n条记录,n为指定的数值。,

18、例12-3:在窗体上用4个命令按钮代替例12-1数据控件对象的4个箭头的操作。窗体属性设置如下:在窗体上增加4个命令按钮,将数据控件的Visible属性设置为False.。通过对4个按钮的编程代替数据控件的4个箭头。窗体如图12-13所示。,图12-13用按钮代替数据控件,上一条和下一条按钮的代码需要考虑Recordset对象的边界,可用Bof和Eof属性检测记录集的首尾,如越界,则用指令定位到第一条或最后一条记录。程序代码如下:Private Sub Command1_Click()Data1.Recordset.MoveFirstEnd SubPrivate Sub Command2_Cl

19、ick()Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirstEnd SubPrivate Sub Command3_Click()Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd SubPrivate Sub Command4_Click()Data1.Recordset.MoveLastEnd Sub,例12-4:在例12-1的基础上增加5个按钮:新增、删除、修改、查找

20、和放弃。如图12-14所示。,表12-5 控件属性设置,图12-14 建立增删改查询功能,Dim editcheck As Boolean 全局变量Private Sub Command1_Click()On Error Resume Next commadn2.Enabled=Not Command2.Enabled Command3.Enabled=Not Command3.Enabled Command4.Enabled=Not Command4.Enabled Command5.Enabled=Not Command5.Enabled If Command1.Caption=添加 Th

21、en Command1.Caption=确认 Data1.Recordset.AddNew Text1.SetFocus Else Command1.Caption=添加 Data1.Recordset.Updata Data1.Recordset.MoveLast End IfEnd Sub,Private Sub Command2_Click()Dim mst,res As String mst=您是否真的要删除?On Error Resume Next res=MsgBox(mst,vbOKCancel+vbExclamation)Select Case res Case vbOK Da

22、ta1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End SelectEnd Sub,Private Sub Command3_Click()On Error Resume Next commadn1.Enabled=Not Command1.Enabled Command2.Enabled=Not Command2.Enabled Command4.Enabled=Not Command4.Enabled Command5.Enabled=Not

23、 Command5.Enabled If Command3.Caption=修改 Then Command3.Caption=“确认”:Data1.Recordset.Edit:Text1.SetFocus Else Command3.Caption=“修改”:Data1.Recordset.Updata End IfEnd SubPrivate Sub Command4_Click()On Error Resume Next commadn1.Caption=添加:Command3.Caption=修改 Command1.Enabled=True:Command2.Enabled=True

24、Command3.Enabled=True:Command4.Enabled=False Command5.Enabled=True Data1.UpdateControls Data1.Recordset.MoveLastEnd Sub,Private Sub Command5_Click()Dim mno As String mno=InputBox$(请输入学号,查找窗)Data1.Recordset.FindFirst 学号=&mno&If Data1.Recordset.NoMatch Then MsgBox 无此学号!,提示 End SubPrivate Sub Command6_

25、Click()student.Hide:Form1.ShowEnd SubPrivate Sub Data1_Reposition()Data1.Caption=Data1.Recordset.AbsolutePosition+1End Sub,Private Sub Data1_Validate(Action As Integer,Save As Integer)If editcheck=True Then If Text1.Text=And(Action=6 Or Text1.DataChanged)Then MsgBox 数据不完整,必须要有学号!Data1.UpdateControls

26、 End IfIf Action=1 And Action=4 Then Command1.Caption=添加:Command3.Caption=修改 Command1.Enabled=True:Command2.Enabled=True Command3.Enabled=True:Command4.Enabled=False End IfEnd IfEnd SubPrivate Sub Form_Load()editcheck=False Command1.Enabled=True:Command2.Enabled=True Command3.Enabled=True:Command4.E

27、nabled=False Command5.Enabled=TrueEnd Sub,12.3.1 SQL语言的组成,SQL(结构化查询语言,Structure Query Language)是操作数据库的工业标准语言,许多数据库和软件系统都支持SQL或提供SQL语言接口。这一节将向用户介绍SQL的常用语句。,1SQL命令,SQL的功能实际上包括查询、操作、定义和控制四个方面。其中最常用的是查询功能,其次为数据定义功能。,表12-7 SQL基本命令动词,12.3 SQL语言,2SQL的数据定义功能,SQL的数据定义功能是通过它的DDL语句实现的。,表12-8 SQL数据定义语句,3SQL的数据查

28、询功能,SQL语言的核心是查询语句,它的基本格式为:,SELECT列名表名,FROM基本表名或视图名,WHERE条件表达式,GROUP BY 列名l HAVING内部函数表达式,ORDER BY 列名2 ASC或DESC 31,12.3.2 SQL语句使用举例,在程序运行时,可以通过使用SQL语句设置数据控件的RecordSource属性,这样可以建立与数据控件相关联的数据集。在使用SQL语句的查询功能时并不影响数据库中的任何数据,只是在数据库中检索符合某种条件的数据记录。,例12-5:DataRecordSource“SELECT姓名,学号FROM 学生情况”作用是将“”表中“姓名”、“学号

29、”两列的所有记录都挑选出来。这样与数据控件相关联的数据集只是该SQL查询的结果。例12-6:DataRecordSource“SELECT*FROM”其中的“*表示查询该表中的所有列。例12-7:DataRecordSource;“SELECT 姓名FROM 学生情况WHERE 性别女”该查询语句挑选表中性别为“女”的记录的“姓名”字段。,例12-8:将例12-4中的查找功能改用SQL语句处理,显示性别为男的学生记录将例12-4中命令按钮Command5_click事件改为如下代码:Dim xingbie AS stringXingbie=InputBox$(“请输入性别”,”查找窗”)Dat

30、a1.Recordsource=”Select*From 学生情况 Where 性别=”&xingbie&”Data1.RefreshIf Data1.Recordset.EOF ThenMsgbox”无此性别的人!”,”提示”Data1.Recordsource=”学生情况”Data1.RefreshEnd If程序中“Select*”选择表中所有字段,“From 学生情况”指定数据来源,Where 性别=”&xingbie&”构成查询条件,用于过滤表中记录,Data1.Refresh方法激活这些变化。此时,若Data1.Recordset.EOF为True,表示记录过滤后无数据,重新打开原

31、来的学生情况表。,表12-9 class表,表12-10 lesson表,表12-11 student表,例12-9:数据库的多表连接操作和SQL语言的使用方法。,1、若数据库包含3个数据表student、lesson和class,结构分别如下表12-9、12-10和12-11。,(3)程序代码如下:Private Sub Form_Load()Dim sql As String Dim db As Database Set db=OpenDatabase(D:program filesvisual basic6.ostudent.mdb)On Error Resume Next sql=se

32、lect lesson.*,class.*into temp from lesson,class where lesson.课程号=class.课程号 db.Execute drop table temp;db.Execute sql Data1.RecordSource=select student.学号,student.姓名,temp.教师,temp.课程名,temp.成绩 from student,temp where student.学号=temp.学号 Data1.Refresh Data1.Visible=FalseEnd SubPrivate Sub Command1_Click

33、()EndEnd Sub,例12-10:设计一个窗体,用SQL语句从例12-9中数据库的3个数据表student、lesson和class表中选择数据构成记录集,并通过数据控件浏览记录集。记录集需包含字段:学号,姓名,学期,课程名,成绩,要求记录按学号的升序排列。显示运行界面参见图12-16。,图12-16 运行界面,(1)建立新文件。(2)建立窗体。窗体对象属性如下表。,表12-12 窗体属性表,(3)程序代码:Private sub Form1_load data1.recordsource=”select student.学号,student.姓名,class.学期,lesson.课程名

34、,class.成绩 from student,lesson,class where student.学号=class.学号 and class.课程号=lesson.课程号 order by student.学号”End subPrivate sub Command1_click()End End sub,12.4 ADO数据控件,ADO数据控件是ActiveX外部控件,它的用途以及外形都和Data控件相似,但它是通过Microsoft ActiveX数据对象(ADO)来建立对数据源的连接的,凡是符合OLEDB规范的数据源都能连接。ADO数据控件通过属性实现了对数据源的连接。创建连接时,可以采

35、用下列源之一:一个连接字符串,一个OLE DB文件(MDL),一个ODBC数据源名称(DSN)。当使用DSN时,无须更改控件的任何其他属性。,12.4.1使用ADO数据控件,1ConnectionStrng属性,ConnectionString属性包含了用于与数据源建立连接的相关信息。ConnectionString属性带有4个参数如表12-13所示。,表12-13 ConnectionString属性参数,2RecordSource属性,RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查

36、询语言的一个查询字符串。,3ConnectionTimeout属性,用于数据连接的超时设定,若在指定时间内连接不成功显示超时信息。,4MaxRecords属性,定义从一个查询中最多能返回的记录数。,例12-11下面通过使用ADO数据控件和DATAGRID数据网格控件连接Studentmdb实现例12-2的功能,来说明ADO数据控件的使用。运行界面如图12-17。,实现步骤:1)在窗体上放置ADO数据控件,控件名采用默认名“Adodcl”2)单击属性窗口中的ConnectionString属性右边的“”按钮,弹出属性页对话框,如图12-18所示。,图12-18 ConnectionString属

37、性页,图12-17 运行界面,在该对话框中允许通过三种不同的方式连接数据源。“使用Data Link文件”表示通过一个连接文件来完成。在Windows桌面上创建数据连接文件的过程为:(1)用鼠标右击桌面,在弹出的快捷菜单中选择“新建”子菜单的“Microsoft数据链接”命令;(2)桌面上产生一个数据链接文件图标,命名链接文件名;(3)用鼠标右击图标,执行快捷菜单中的“属性”命令;(4)在打开的属性对话框中通过提供者与链接选项卡链接指定的数据库。“使用ODBC数据资源名称”可以通过下拉菜单选择某个创建好的数据源名称(DSN)作为数据来源。“使用链接字符串”只需要单击“生成”按钮,通过选项设置自

38、动产生连接字符串的内容。,3)采用“使用链接字符串”方式连接数据源。,图12-19 数据链接属性窗,4)单击属性窗口中的RecordSource属性右边的“”按钮,弹出记录源属性页对话框,如图12-20。,在“命令类型”下拉列表中选痒“2adCmdTable”选项,在“表或存储过程名称”下拉列表中选择Studentmdb数据库中的“学生情况”表,关闭记录源属性页。此时,已完成了ADO数据控件的连接工作。由于ADO数据控件是一个ActiveX控件,也可以用鼠标右击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”菜单命令打开ADO数据控件属性页,如图12-21所示一次完成1)4)的全部设置

39、。5)最后,在窗体上拖放一个DataGrid控件。,图12-20 记录源属性页 图12-21 ADO数据控件属性页,12.4.2 ADO控件上新增绑定控件的使用,随着ADO对象模型的引入,Visual Basic 60除了保留以往的一些数据连接控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGride、DataCombo、DataLiSt、DataReport和MonthView等控件。,在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改进,又增加了DataMember与DataFormat属性使数据访问的队形更加完整。DataMem

40、ber属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。,12.4.3 使用数据窗体向导,Visual Basic 60提供了一个功能强大的数据窗体向导,通过几个交互过程,便能建立一个访问数据的窗口。数据窗体向导属于外接程序,在使用前必须执行“外接程序”菜单的“外接程序管理器”命令,按图12-22所示的选项装入“VB 6数据窗体向导”到“外接程序”菜单中。,图12-22 外接程序管理器,这里以Studentmdb数据库的学生情况表作为数据源来说明数据访问窗口建立的过程。实现步骤1)执行“外接程序”菜单中的“数据窗体向导”命令,进入图12-23所示的数据窗体向导介绍窗。

41、,2)单击“下一步”,进入数据窗体向导的数据库类型窗,可以选择任何版本的Access(Jet)数据库或任何ODBC兼容的数据库(用于远程访问)。本例中选择Access,单击“下一步”。3)在向导的数据库窗内选择具体的数据库文件。本例为“E:VB书Studentmdb”。4)在向导Form窗内设置应用窗体的工作特性。,图12-24 向导Form窗,图12-23 数据窗体向导介绍窗,5)在图12-25示的向导的记录源窗内选择所需要的数据。,图12-26向导控件选择窗,图12-25 向导的记录源窗,6)在图12-26所示的向导控件选择窗内选择数据访问窗需要提供哪些操作按钮。,7)在图12-27所示的向导已完成窗内可以将整个操作过程保存到一个向导配置文件(.rwp)中。,将鼠标移动选中工程管理器窗口中“工程1”,按鼠标右箭,选择“工程1属性”,在出现的窗口中选择启动对象为“bqk”,然后运行可得到图12-28数据窗体向导创造的访问窗。,图12-28 数据窗体向导创造的访问窗,图12-27 向导已完成窗,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号