第10章-Visual-Basic的数据访问方法_第1页
第10章-Visual-Basic的数据访问方法_第2页
第10章-Visual-Basic的数据访问方法_第3页
第10章-Visual-Basic的数据访问方法_第4页
第10章-Visual-Basic的数据访问方法_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章VisualBasic数据访问方法主要内容10.1概述10.2Data控件10.3ADOData控件10.4查询数据10.1概述1.VisualBasic访问的数据库类型VisualBasic可以访问以下类型的数据库。(1)Jet数据库(2)ISAM数据库(3)ODBC数据库数据库由Jet数据库引擎直接生成和操作,具有灵活快速的特点。最早为Access所使用,现在已经支持其他数据库。索引顺序访问方法(ISAM)数据库有几种不同形式,如dBASE、ForPro和Paradox等。ODBC是Miscrosoft公司推出。VisualBasic可以访问任何支持ODBC标准的数据库,如MicrosoftSQLServer、Oracle、Sybase等。2.VisualBasic访问数据的接口数据访问过程涉及三个组成部分:(1)数据提供者(DataProvider)(2)数据服务提供者(DataServiceProvider)(3)数据使用者(DataConsumer)数据使用者和数据提供者之间的桥梁就是数据访问接口对象VB的三种数据访问接口ActivcX数据对象(ADO)远程数据对象(RDO)数据访问对象(DAO)。这接口分别代表了数据访问技术的不同发展阶段。3.记录集VB只能通过记录集(Recordset)对象进行记录的操作和浏览。记录集由行和列构成,可以由一个或几个表中的数据构成,实际上是一个操纵和使用表的视图。10.2Data控件Data控件是VisualBasic内嵌的、使用Microsoft的Jet数据库引擎来访问数据库的一种重要的工具它利用三种Recordset对象访问数据库TableDynaSetSnapShot10.2.1Data控件属性设置Data控件数据源的三个基本属性ConnectDatabaseNameRecordSource1.Connect属性Connect属性指定Data控件所要连接的数据库类型访问SQLServer数据库,必须由ODBC指定:ODBC:DATABASE=DefaultDataBase;DSN=DataSourceName;UID=UserID;PWD=Password;例如,连接Student_db数据库创建ODBC的操作步骤如下:打开控制面板中的“ODBC数据源管理器”对话框,选择“用户DSN”选项卡,单击“添加”按钮;在“创建新数据源”对话框的“选择您想为其安装数据源的驱动程序”列表框中选择“SQLServer”项,单击“完成”按钮,如图10.2所示打开“创建到SQLServer的新数据源”对话框,在“名称”文本框中输入“Student”为ODBC数据源名称,在“服务器”文本框中输入“(Local)”为本地SQLServe服务器,如图10.3所示。单击“下一步”按钮,在打开的对话框中,为“SQLServer应该如何验证登录ID的真伪”项选择“使用网络登录ID的WindowsNT验证”单选框。单击“下一步”按钮,在打开的对话框中,选择“更改数据默认数据库为”项的复选框,并在其下面的下拉列表框中选择“Student_db”,如图10.4所示。单击“下一步”按钮,在打开的对话框中选择“完成”按钮单击“ODBCMicrosoftSQLServer安装”对话框中的“测试数据库”按钮,出现“测试成功”信息后,按“确定”按钮结束该配置。在Data控件的Connect属性框中添加以下字符串:ODBC:DATABASE=student_db;DSN=student;UID=;PWD=;2.DatabaseName属性DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。DatabaseName属性通常用于指定Access文件路径,在访问SQLServer时不会用到。3.RecordSource属性RecordSource属性用于确定Data控件具体可访问的数据,这些数据构成记录集对象,可以是:数据库中的单个表名(出现在RecordSource属性的下拉列表中),查询使用SQL查询语言的一个查询字符串。例如,Data控件要操作Student_db数据库中的学生信息表St_Info,设置为RecordSource=“St_Info”;SQL查询语言:RecordSource=“SELECT*FROMSt_InfoWHERECl_Name=‘材料科学0601’”, 选择St_Info表中材料科学0601班的所有学生的数据4.RecordsetType属性RecordsetType属性确定记录集的类型:Table为表类型,指定记录集是当前数据库真实的数据表;DynaSet为动态集,指定记录集可以是一个或多个表的记录的引用,是可更新的数据集;SnapShot为快照类型,指定记录集的数据是静态的,反映的是产生快照的一瞬间数据库的状态,具有只读特征5.EOFAction和BOFAction属性 当Recordset对象的属性BOF或EOF的值为True时,表明当前位置处于Recordset对象的第一个记录之前或最后一个记录之后,在操作数据库时,经常要使用这两个属性来判断是否已到达数据库的首记录或末记录。6.Exclusive属性

Exclusive属性决定Data控件所连接的数据库在运行时是为单用户打开还是为多用户打开。若该属性值为True,则表明不允许其他用户打开该数据库。7.ReadOnly属性

ReadOnly属性设置Data控件访问的数据库是否以只读方式打开。该属性的默认取值为False,表明用户可以通过数据绑定控件编辑数据库中的记录。设置为True时,表示可以显示数据,但无法写入或修改数据。10.2.2数据绑定控件

Data控件没有提供显示记录集中数据的功能,通过具有数据感知功能的控件来配合Data控件识别记录集中的数据内容,这些控件被称为数据绑定控件。可绑定到Data控件上的控件有TextBoxLabelCheckBoxComboBox

、ListBoxPictureBox

ImageDBList、DBComboMsFlexGrid

其中,DBList、DBCombo、MsFlexGrid是和数据相连的控件,能自动从与之绑定的Data控件的字段中移居,并有选择地更新其他Data控件中相关表的字段。与Data控件的绑定设置通过两个属性实现:DataSource属性用于设置与该控件绑定的Data控件的名称 例如,Data1DataField属性用于设置在显示的数据库中表的字段名称 例如,将文本框txtStName与数据库Student_db中的表St_Info的学生姓名St_Name字段连接起来,字段St_Name就被绑定到txtStName控件上。例10-1:设计一个窗体,显示Student_db数据库中学生信息表St_Info中的数据。操作步骤:(1)界面设计。(2)属性设计①Data控件与SQLServer数据库的连接。②TextBox控件与St_Info表中字段的绑定。(3)运行工程。箭头按钮可遍历整个记录例10-2:用数据网格控件MsFlexGrid显示Student_db数据库中St_Info表的数据。(1)界面设计。(2)属性设计。10.2.3Data控件的事件1.Reposition事件

Reposition事件发生在一条记录成为当前记录后。当用户改变记录集的指针使其从一条记录移动到另一条记录,或使记录集的第一条记录成为当前记录时,都会发生Reposition事件。例10-3:Reposition事件示例。 在例10-1中Data控件的datStInfo_Reposition事件中加入如下代码:PrivateSubdatStInfo_Reposition()

datStInfo.Caption="当前记录:"&datStInfo.Recordset.AbsolutePosition+1EndSub例10-4:使用Reposition事件更新Student_db数据库的学生成绩表S_C_Info。(1)界面设计。(2)属性设计。窗体frmStScore及控件属性按表10.4进行设置。(3)代码设计。在Data1_Reposition中添加以下代码:PrivateSubData1_Reposition()Data2.RecordSource="SELECT*FROMS_C_InfoWHERESt_ID='"_&Data1.Recordset("St_ID")&"'"Data2.Refresh '按刚设置的记录源刷新Data2的RecordsetEndSub2.Validate事件Validate事件是在移动到一条不同记录之前触发。一般用于来检查数据的有效性。例如,在例10-1中,不允许用户在数据浏览时修改St_ID字段的数据:PrivateSubdatStInfo_Validate(ActionAsInteger,SaveAsInteger)IfSaveandtxtStID.DataChangedThen

MsgBox"不能修改ID."

txtStID.DataChanged=FalseAction=0EndIfEndSub10.2.4Data控件的常用方法1.Refresh方法 如果Data控件的Connect等属性值发生改变,Refresh方法能打开或重新打开数据库并能重建控件的记录集。2.UpdateControls方法该方法可以从一个Data控件的记录集对象中取得当前记录,并且在与该Data控件绑定的控件中显示适当的数据。该方法可以将数据绑定控件的内容恢复为其原始值,等效于用户更改了数据之后决定取消更改。3.UpdateRecord方法

UpdateRecord方法用于将当前内容存入数据库中,该方法不触发Validate事件。它类似于Recordset对象执行Edit方法改变一个字段并随后执行Update方法。10.2.5Recordset对象的属性与方法1.AbsolutePostion属性

该属性返回当前记录指针值,如果是第一条记录,其值为0,该属性为只读属性,在例10-3中使用的就是该属性。2.BOF和EOF属性BOF属性指示当前记录位置位于记录集对象的第一个记录之前,是则返回TrueEOF属性指示当前记录位置位于记录集对象的最后一个记录之后,是则返回True。使用该两属性可确定记录指针是否超出记录集对象的限制,或者记录集对象是否包含记录。3.Bookmark属性Bookmark属性称为书签。每个记录都有惟一的书签。Bookmark属性可将Recordset对象的当前记录快速移动到设置为由有效书签所标识的记录上。注意: 在程序中不能使用AbsolutePosition属性重定位记录集的指针,但可以使用Bookmark属性。例如,在例10.1的frmStInfo窗体的代码通用声明区域中定义变量mBookmark,Form_Click事件中保存书签:DimmBookmarkAsVariantPrivateSubForm_Click()

mBookmark=datStInfo.Recordset.Bookmark

EndSub在该窗体的命令按钮cmdCancel中添加代码:PrivateSubcmdCancel_Click()

datStInfo.Recordset.Bookmark=mBookmarkEndSub4.RecordCount属性RecordCount属性记录Recordset对象中记录的当前数目,为只读属性。在多用户环境下,RecordCount属性值可能不准确,为了获得准确值,可使用MoveLast方法将记录指针移至最后一条记录上。5.NoMatch属性NoMatch属性用于判断在记录集中进行查找时,是否找到相匹配的记录。若Nomatch的值为True,则表示没有找到记录。6.Move方法Recordset对象有5种方法支持Data控件对象的4个箭头按钮操作:

MoveFirst、MoveLast、MoveNext、MovePrevious、Move[n]例10-5:将例10-1窗体frmStInfo上的Data控件datStInfo的4个箭头的操作用4个CommandButton控件取代。(1)界面设计。(2)属性设计将Data控件的Visible属性设置为False,隐藏该控件使其运行时不可见,窗体及CommandButton控件的属性值如表10.6所示,其他控件属性与表10.2所列相同。(3)代码设计。cmdFirst_Click事件使记录指针移动到第一条PrivateSubcmdFirst_Click()

datStInfo.Recordset.MoveFirstEndSubcmdLast_Click事件使记录指针移动到最后一条。PrivateSubcmdLast_Click()

datStInfo.Recordset.MoveLastEndSubcmdNext_Click使记录指针移动到下一条PrivateSubcmdNext_Click()

datStInfo.Recordset.MoveNextIfdatStInfo.Recordset.EOFThen

datStInfo.Recordset.MoveLastEndIfEndSubcmdPrev_Click使记录指针移动到上一条PrivateSubcmdPrev_Click()

datStInfo.Recordset.MovePreviousIfdatStInfo.Recordset.BOFThendatStInfo.Recordset.MoveFirstEndIfEndSub7.Find方法Find方法在Recordset中总是查找匹配的第一条记录。Find有4种查找方法:FindFirst、FindLast、FindPrevious和FindNext其语法格式如下:Recordset.Find<条件><条件>是一个指定字段与常量关系的字符串表达式例10-6:在例10-5的窗体frmRecMove上增加“查找”按钮,使用Find方法查找记录。10.2.6数据维护 数据维护包括对数据库中数据表记录的增加、删除、修改等操作1.添加记录AddNew方法可以在记录集中创建新记录。

Data控件名.Recordset.AddNew[FieldList,Values] Data控件名.Recordset.Update[FieldList,Values]例如,使用AddNew方法为Data控件Data1的记录集添加新记录,其步骤如下:(1)调用AddNew方法,添加一条空记录:Data1.Recordset.AddNew。(2)给各字段赋值,语句赋值格式为:Data1.Recordset.Field("<字段名>")=<值>或者,在数据绑定控件中直接输入内容。(3)调用Update方法,确定所做的添加操作,将缓冲区内的数据写入数据库:Data1.Recordset.Update(4)调用MoveLast方法显示新记录:Data1.Recordset.MoveLast。2.修改记录在Data控件的记录集中修改记录,必须先调用Edit方法。在编辑记录中的数据后,使用Update方法保存修改后的结果。例如,使用Edit方法修改Data1控件的当前记录:(1)调用Edit方法:Data1.Recordset.Edit。(2)给各字段赋值,或在绑定控件中直接修改。(3)调用Update方法,确定所做的修改:Data1.Recordset.Update。3.删除记录Data控件使用Delete方法删除当前记录,记录删除后不可恢复。例如,从Data1控件的记录集中删除当前记录:(1)定位被删除的记录使之成为当前记录(使用Move或Find方法)。(2)调用Delete方法删除当前记录:Data1.Recordset.Delete。(3)调用MoveNext方法移动记录指针确定删除例10-7:在例10-1窗体中放置“添加”、“删除”、“修改”、“取消”4个按钮,通过这4个按钮来控制记录的增加、删除和修改操作。本例按以下步骤设计。(1)界面设计。(2)属性设计。(3)代码设计。cmdAdd按钮实现两个功能:调用AddNew方法添加记录并输入各字段值调用Update方法并将缓冲区内的数据写入数据库。 根据cmdAdd.Caption的值为“添加”或“确认”来决定是调用AddNew方法还是Update方法,并控制其他三个按钮的可用性。cmdDelete按钮删除记录 由cmdDelete_Click事件调用delete方法实现。当前记录被删除后,必须移动记录指针,刷新屏幕显示。记录的修改首先调用Edit方法进入记录编辑状态再调用Update方法保存修改后的数据。

cmdEdit_Click事件根据cmdEdit.Caption的值来调用Edit方法或Update方法,并控制其他三个按钮的可用性。10.3ADOData控件10.3.1使用ADOData控件10.3.2ADOData控件的属性与方法10.3.3数据绑定控件DataList、DataCombo、DataGrid10.3.1使用ADOData控件ADOData控件不是VisualBasic6.0的标准控件,在使用前必须将其添加到工具箱。单击“工程\部件”菜单命令,在“部件”对话框中选择“MicrosoftADO6.0(OLEDB)”选项,ADOData控件就添加到工具箱(图标为)。例10-8:以ADOData控件数据源显示Student_db数据库的课程信息表C_Info的数据(1)界面设计。创建窗体(2)连接数据库使用ADOData控件连接Student_db数据库:①在窗体上建立ADOData控件adoCInfo。②显示adoCInfo控件的“属性页”对话框。③在“属性页”对话框的“通用”选项卡中,选择“使用连接字符串”选项,单击“生成”按钮④在弹出的“数据链接属性”对话框的“提供程序”选项卡的连接数据列表中选择“MicrosoftOLEDBProviderforSQLServer”项⑤单击“下一步”按钮,在“数据链接属性”对话框的“连接”选项卡中,选择“2.输入登录服务器的信息”的“使用WindowsNT集成安全设置”选项,并“在服务器上选择数据库”下拉列表框中选择Student_db项,如图10.16所示,单击“测试连接”按钮检测是否连接成功。⑥单击“确定”按钮在“属性页”对话框的“通用”选项卡的“使用连接字符串”文本框中已填充了以下字符串:Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=student_db⑦在“属性页”对话框的“记录源”选项卡中,选择“命令类型”下拉框的“2-adCmdTable”项再选择“表或存储过程名称”下拉列表框的C_Info数据表,如图10.17所示。(3)属性设计。按图10.13在窗体frmAdoC上放置Label和TextBox控件,其属性值设置如表10.8所示。(4)运行工程。10.3.2ADOData控件的属性与方法ADOData控件的基本属性有ConnectionString、CommandType、Recordset、RecordSource、MaxRecords、CommandTimeout等属性。1.ConnectionString属性ConnectionString属性用来建立当前应用程序到数据源的连接信息。ConnectionString属性涉及4个参数:Provider:指定用来连接的数据提供者名称。FileName:指定包含预先设置连接信息的特定提供者的文件名称(例如,持久数据源对象)。RemoteProvider:指定打开客户端连接时使用的提供者名称。(仅限于远程数据服务)。RemoteServer:指定打开客户端连接时使用的服务器的路径名称。(仅限于远程数据服务)。2.CommandType属性CommandType属性用于指定Command对象将对数据源执行的命令的类型,也就是设置RecordSource属性可选取的类型。有四种可选的类型adCmdUnknown:默认值,表明RecordSource属性为SQL语句,CommandText属性命令未知。adCmdTable:表明RecordSource属性为数据表名。adCmdText:表明RecordSource属性为SQL语句。adCmdStoredProc:表明RecordSource属性为存储过程3.RecordSource属性

RecordSource属性设置一个记录集的查询语句或命令。它可以在“属性页”对话框中设置,也可直接属性窗口中设置,其取值随着CommandType属性取值的不同而不同4.MaxRecords属性

MaxRecords属性设定从查询中返回Recordset的最大记录数,缺省为0时表明数据提供者返回所有所需的记录。使用MaxRecords属性可对提供者从数据源返回的记录数加以限制。5.UserName和Password属性 在“属性页”的“身份验证”对话框中,可以设置UserName和Password的属性,这在访问受保护的数据库时是必要的。6.CommandTimeout属性

CommandTimeout属性用于设置在建立一个连接时,系统等待的时间,以秒为单位。若在指定时间内连接不成功,则给出错误信息。例10-9:使用ADOData控件在Student_db数据库中添加、删除、修改St_Info表的记录。应用程序使用4个命令按钮控制记录的“添加”、“删除”、“修改”、“取消”操作。例10-7的窗体基础上(1)界面设计。(2)属性设计。(3)代码设计。记录的修改PrivateSubcmdEdit_Click()

mBookmark=adoEQ.Recordset.BookmarkIfMsgBox("保存修改结果吗?",vbYesNo)=vbYesThen

adoEQ.Recordset.UpdateElse

adoEQ.Recordset.CancelUpdate

adoEQ.Recordset.Bookmark=mBookmarkEndIfEndSub我们将图10.18中窗体的“性别”使用单选按钮,则其窗体布局如图10.19所示。初始化窗体PrivateSubForm_Activate()'以下IF语句是判断记录指针是否移动到记录集的开始和结束位置

IfadoStInfo.Recordset.EOFOradoStInfo.Recordset.BOFThenExitSubEndIfIfadoStInfo.Recordset.Fields("St_Sex")="男"ThenOption1(0).Value=TrueOption1(1).Value=FalseElseOption1(0).Value=FalseOption1(1).Value=TrueEndIfEndSub更新OptionButton按钮的取值PrivateSubtxtStID_Change()

Form_ActivateEndSub例10-10:要求一个学生至少从4门课程中任选2门课程学习,并将选择的结果添加到S_C_Info表中。将adoQry控件的CommandType

设置为1-adCmdText,其RecordSource属性使用SQL查询语句DimArrCID(3)AsStringDimArrSt()AsStringPrivateSubForm_Load()

adoQry.Refresh

adoQry.Recordset.MoveFirst

ReDim

ArrSt(adoQry.Recordset.RecordCount)Fori=0ToadoQry.Recordset.RecordCount-1

ArrSt(i)=adoQry.Recordset.Fields(0)List1.AddItemadoQry.Recordset.Fields(1)

adoQry.Recordset.MoveNextNexti

adoQry.RecordSource="SELECT*FROMC_Info"

adoQry.RefreshFori=0To3

ArrCID(i)=GetCID(Check1(i).Caption)NextEndSub函数FunctionGetCID(fnameAsString)AsString

adoQry.Recordset.MoveFirst

adoQry.Recordset.Find"C_Name='"&fname&"'"IfNotadoQry.Recordset.EOFThen

GetCID=adoQry.Recordset.Fields(0)ExitFunctionEndIf

GetCID=""EndFunction在Command1_Click事件中添加以下代码:PrivateSubCommand1_Click()

adoQry.RecordSource="SELECT*FROMS_C_InfoWHERESt_id=''"

adoQry.RefreshFori=0To3IfCheck1(i).Value=1Then

adoQry.Recordset.AddNew

adoQry.Recordset.Fields("St_ID")=ArrSt(List1.ListIndex)

adoQry.Recordset.Fields("C_No")=ArrCID(i)

adoQry.Recordset.MoveLastEndIfNextiEndSub10.3.3数据绑定控件DataList、DataCombo、DataGridADOData控件也可以与10.2.2节所述数据绑定控件进行绑定来显示记录集中的数据。另外,VisualBasic6.0还提供了一些新的成员来连接不同数据类型的数据,这些控件有DataList、DataCombo、DataGrid等,它们只能与ADOData控件绑定。要使用这些控件必须先通过“工程\部件”菜单命令,在“部件”对话框中选择“MicrosoftDataListControl6.0(OLEDB)”和“MicrosoftDataGridControl6.0(OLEDB)”选项,单击“确定”按钮,就可以在VisualBasic的控件工具箱内看见这些控件图标1.DataCombo和DataList控件DataList控件是一个数据绑定列表框,它可以自动地由一个附加数据源中的一个字段充填,并且可选择地更新另一个数据源中一个相关表的一个字段。DataCombo控件的功能与DataList控件相同,以下拉列表框形式提供给用户。DataCombo控件包含以下常用属性:(1)BoundColumn属性返回或设置一个Recordset对象的源字段的名称,该Recordset对象用来为另一个Recordset提供数据值。(2)BoundText属性返回或设置由BoundColumn属性指定的字段的值。(3)DataBindings属性返回DataBindings集合对象,该对象包含了有用的可绑定属性。(4)DataChanged属性返回或设置一个值,它指出被绑定的控件中的数据已被某进程改变,这个进程不是从当前记录中检索数据的进程。如果DataChanged=True,表示当前在控件中的数据与当前记录中的数据不同;如果DataChanged=False,表示如果当前控件中有数据的话,则与当前记录中的数据相同。(5)DataField属性返回或设置数据使用者将被绑定到的字段名。(6)DataSource属性返回或设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库。(7)RowSource属性设置一个指定ADOData控件的值,DataList控件和DataCombo控件的列表由这个ADOData控件填充。(8)ListField属性返回或设置Recordset对象中的字段名称,这个对象由RowSource属性指定,用于填充DataCombo控件或DataList控件的列表部分。(9)Locked属性返回或设置一个值,指示对象中的任何数据是否可以被修改。(10)SelectedItem属性返回一个值,包含DataCombo控件或DataList控件中选中的记录的书签。(11)Style属性返回或设置一个值,指定控件的行为或外观。其值为0-dbcDropdownCombo(缺省值),表示DataCombo控件为下拉式组合框;其值为1-dbcSimpleCombo,表示DataCombo控件为简单组合框;其值为2-dbcDropdownList,表示DataCombo控件为下拉列表框。例10-11:DataCombo控件使用的示例。(1)界面设计。在Form1窗体中创建一个ADOData控件Adodc1,如图10.21所示。(3)代码设计。PrivateSubDataCombo1_Click(AreaAsInteger)

txtStId=DataCombo1.BoundTextEndSub例10-12:DataCombo控件和DataList控件联合使用示例程序。(1)界面设计。在窗体frmDataCmbLst中包含了两个ADOData控件、一个DataCombo控件和一个DataList控件。DataCombo控件显示表St_Info中所有班级名称列Cl_Name的值。(3)代码设计。当用户点击DataCombo1时,将触发DataCombo1_Click事件。此时,应该通过DataCombo1.BoundText的值,刷新Adodc2,从而更新DataList1中的显示内容PrivateSubDataCombo1_Click(AreaAsInteger)DimstrQueryAsStringIfDataCombo1.Text=""ThenExitSubEndIf

strQuery="SELECT*FROMSt_InfoWHERECl_Name='"_&DataCombo1.BoundText&"'"Adodc2.RecordSource=strQueryAdodc2.RefreshEndSubForm_Load事件代码如下:PrivateSubForm_Load()DataCombo1.Text=Adodc1.Recordset.Fields("Cl_Name")DataCombo1_Click(0)EndSub2.DataGrid控件DataGrid控件包含以下常用属性:(1)DataSource属性返回或设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库。在VisualBasic中,设置DataGrid控件所显示的数据的最常用的方法是使用一个ADOData控件作为其DataSource,则重写DataSource或刷新该ADOData控件都将改变所显示的数据。(2)Columns数组属性返回一个Column对象的集合。Columns数组用于存放DataGrid控件中的当前行的数据,Columns(0)存放第1个字段值,Columns(1)存放第2个字段值……例如,DataGrid1控件的数据源为Adodcl,Form_Load事件触发时将以信息对话框方式显示第2个记录的第2个字段值:PrivateSubForm_Load()Adodc1.Recordset.MoveNext

MsgBoxDataGrid1.Columns(1)EndSub(3)AllowAddNew、AllowDelete、AllowUpdate这三个属性分别用于指定DataGrid控件是否可以增加、删除和更新数据。(4)ScrollBars属性用于设置DataGrid控件的滚动条的类型。ScrollBars属性值可以为1、2或3,分别对应水平、垂直或两种滚动条。DataGrid控件包含以下常用方法:(1)ClearFields方法用于清除DataGrid控件的所有字段,恢复缺省的网格布局(具有两个空白的列)。(2)Refresh方法用于刷新DataGrid控件中的数据。每次刷新后,当前记录是DataGrid控件中的第1个记录。例10-13:从DataGrid控件的表格中读取一行数据的具体内容。(1)界面设计。创建窗体frmDataGrid,使用DataGrid控件显示数据,再创建窗体frmShowData,用来演示如何从DataGrid控件的表格中读取一行数据的具体内容。

(3)代码设计。当用户单击frmShowData窗体上Command1控件(退出)时,触发其Command1_Click事件,将关闭该窗体,代码如下:PrivateSubCommand1_Click()UnloadMeEndSub要实现frmDataGrid窗体的Command2按钮的“读取数据”功能,需在Click事件中添加以下代码:PrivateSubCommand2_Click()'判断是否选择了表中的一行

IfAdodc1.Recordset.EOFOrAdodc1.Recordset.BOFThen

MsgBox"请选择要显示的行"ExitSubEndIf'读取数据

frmShowData.Text1=Adodc1.Recordset.Fields(0)frmShowData.Text2=Adodc1.Recordset.Fields(1)frmShowData.Text3=Adodc1.Recordset.Fields(2)frmShowData.Text4=Adodc1.Recordset.Fields(3)frmShowData.Text5=Adodc1.Recordset.Fields(4)'打开显示数据窗口

frmShowData.Show1EndSub为了使DataGrid1控件只显示表St_Info中的St_ID、St_Name、St_Sex、Cl_Name、TelePhone字段,在Form_Load事件中先对Adodc1控件的RecordSource属性重新设置使其只从数据库返回满足条件的记录集,代码如下:PrivateSubForm_Load()Adodc1.RecordSource="SELECTSt_ID,St_Name,St_Sex,Cl_Name,TelePhoneFROMSt_Info"Adodc1.RefreshEndSub若想使鼠标单击网格控件DataGrid1的某一行,就自动在frmShowData窗体中显示该行的数据,则只需在DataGrid1_Click事件添加以下代码:PrivateSubDataGrid1_Click()Command2_ClickEndSub10.4查询数据从数据库中获取数据称为查询数据,也就是从数据库中找出满足条件的记录集。查询数据通常使用SQL语言的SELECT语句来完成。例10-14:通过输入学生学号或所在班级,查找St_Info表中符合条件的学生记录。(1)界面设计。创建窗体frmAdoQuery,窗体上放置DataCombo控件来选择St_Info表中Cl_Name字段的值,TextBox控件作为输入学号字段St_Id的文本框,数据网络控件DataGrid用于显示查询Recordset。该窗体运行界面如图10.25所示。(3)代码设计。当鼠标单击dtcClass控件时,触发dtcClass_Click事件,代码如下:PrivateSubdtcClass_Click(AreaAsInteger)

adoGrid.RecordSource="Select*FromSt_InfoWhereCl_Name='"&Trim(dtcClass.Text)&"'"

adoGrid.RefreshEndSub当用户在“学号”文本框txtSt_ID中输入某个学生的学号时,因改变了txtSt_ID.Text属性值而触发txtSt_ID_Change事件,代码如下:PrivateSubtxtSt_ID_Change()

adoGrid.RecordSource="Select*FromSt_InfoWhereSt_ID='"&Trim(txtSt_ID.Text)&"'"

adoGrid.RefreshEndSub例10-15:查询所有学生的课程编号C_No为'9710011'的成绩。这里涉及两个表St_Info和S_C_Info,可通过SELECT命令从St_Info表中选择St_ID、St_Name、St_Sex,从S_C_Info

表选择

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论