




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章VBA數(shù)據(jù)庫編程
2021/5/91本章內(nèi)容
記錄集概述
在Access中引用ADO對象
引用記錄字段
瀏覽記錄
編輯數(shù)據(jù)
用ADO技術(shù)實現(xiàn)復(fù)雜查詢在VBA程序中使用SQL命令
訪問當(dāng)前數(shù)據(jù)庫以外的數(shù)據(jù)庫
綜合實例—編制“研究生成績管理與統(tǒng)計”程序2021/5/927.1記錄集概述7.1.1ADO的9個對象7.1.2了解記錄集
2021/5/937.1.1ADO的9個對象ADO:ActiveXDataObjectsAccess內(nèi)嵌的VBA是用ADO技術(shù)開發(fā)數(shù)據(jù)庫應(yīng)用的主要工具ADO對象模型有9個對象:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error常用對象:Connection、Command、Recordset2021/5/947.1.1ADO的9個對象Connection對象:ADO對象模型中最高級的對象,實現(xiàn)應(yīng)用程序與數(shù)據(jù)源的連接。Command對象:主要作用是在VBA中通過SQL語句訪問、查詢數(shù)據(jù)庫中的數(shù)據(jù)。Recordset對象:存儲訪問表和查詢對象返回的記錄。使用該對象,可以瀏覽記錄、修改記錄、添加新的記錄或者刪除特定的記錄。
Recordset對象的功能最常用、最重要2021/5/957.1.1ADO的9個對象ADO的3個對象之間互有聯(lián)系:Command對象和Recordset對象依賴于Connection對象的連接;Command對象結(jié)合SQL命令可以取代Recordset對象,但遠(yuǎn)沒有Recordset對象靈活、實用;Recordset對象它只能實現(xiàn)數(shù)據(jù)表內(nèi)記錄集操作,無法完成表和數(shù)據(jù)庫的數(shù)據(jù)定義操作;數(shù)據(jù)定義操作一般需通過Command對象用SQL命令完成。本章用DoCmd對象代替Command對象。2021/5/967.1.2了解記錄集記錄集(Recordset):對表執(zhí)行查詢操作時,返回的一組特定記錄。用記錄集可執(zhí)行的操作:對表中的數(shù)據(jù)進(jìn)行查詢和統(tǒng)計,在表中添加、更新或刪除記錄。記錄集是一個對象,它包括記錄和字段,具有其特定的屬性和方法,利用這些屬性和方法就可以編程處理數(shù)據(jù)庫中的記錄。2021/5/977.2在Access中引用ADO對象
應(yīng)用程序中的ADO引用:聲明Connection對象→創(chuàng)建Recordset對象→編程完成各種數(shù)據(jù)訪問操作7.2.1聲明Connection對象7.2.2聲明與打開Recordset對象7.2.3關(guān)閉Recordset和Connection對象2021/5/987.2.1聲明Connection對象(1)聲明一個Connection對象(2)初始化Connection對象(決定Connection對
象與哪個數(shù)據(jù)庫相連接)例如:
Dim
cnGraduate
AsADODB.Connection
Set
cnGraduate=CurrentProject.Connection
與當(dāng)前數(shù)據(jù)庫連接
2021/5/997.2.2聲明與打開Recordset對象(1)聲明Recordset對象(2)創(chuàng)建Recordset對象實例(3)打開Recordset對象例如:
Dim
rsStudents
AsADODB.Recordset
Set
rsStudents=NewADODB.Recordset
rsStudents.Open"研究生",cnGraduate,,,adCmdTable
前面聲明的Connection對象
表名稱
打開的是表對象
參數(shù)占位符
2021/5/9107.2.3關(guān)閉Recordset和Connection對象
方法:執(zhí)行Recordset對象和Connection對象的Close方法→將對象設(shè)置為Nothing例如:rsStudents.ClosecnGraduate.CloseSet
rsStudents=NothingSet
cnGraduate=Nothing上述語句不是必須的。應(yīng)用程序終止運行時,系統(tǒng)會自動關(guān)閉并清除這兩個對象。2021/5/9117.3引用記錄字段任何對記錄集的訪問都是針對當(dāng)前記錄進(jìn)行的。打開記錄集時默認(rèn)的當(dāng)前記錄為第1條記錄。引用記錄的字段:直接在記錄集對象中引用字段名稱,如
Code=rsStudents!學(xué)號若記錄集字段名包含空格,或者字段名是一個保留字,則引用時必須將該字段名用方括號括起來。
使用記錄集對象的Fields(n)屬性。n是記錄中字段從左到右的排列序號,第一個字段的序號為0。如
Code=rsStudents.Fields(0)記錄集對象與字段名間的連接符
2021/5/9127.3引用記錄字段[例7-1]建立名為ADO的模塊,編寫如下過程。運行該過程后,輸出對話框顯示“導(dǎo)師”表中第一位教師的編號和姓名。2021/5/9137.3引用記錄字段記錄集更多的應(yīng)用是在窗體對象上:建立一個空白窗體→設(shè)計各個控件→編程引用記錄集當(dāng)前記錄的相關(guān)字段或?qū)⒆侄蔚闹低ㄟ^控件顯示注意:如果涉及數(shù)據(jù)訪問的事件過程不止一個,可在代碼窗口的通用段定義Connection對象和Recordset對象,然后在Form_Load事件過程中完成數(shù)據(jù)庫連接和數(shù)據(jù)表的打開。2021/5/9147.3引用記錄字段[例7-2]運行:分別單擊“導(dǎo)師編號”和“導(dǎo)師姓名”按鈕
窗體設(shè)計視圖(刪除導(dǎo)航按鈕)
2021/5/9157.3引用記錄字段例7-2窗體程序代碼
2021/5/9167.4瀏覽記錄Recordset記錄集對象提供了4種記錄指針的移動方法MoveFirst記錄指針移到第一條記錄MoveNext記錄指針移到當(dāng)前記錄的下一條記錄MovePrevious記錄指針移到當(dāng)前記錄的上一條記錄MoveLast記錄指針移到最后一條記錄Recordset記錄集的BOF和EOF屬性用于判斷記錄指針是否處于有記錄的正常位置記錄指針將指向最后一條記錄之后,EOF屬性為True記錄指針將指向第一條記錄之前,BOF屬性為TrueBOF和EOF屬性的值均為True,表示記錄集為空
2021/5/9177.4瀏覽記錄[例7-3]對例7-2進(jìn)行修改
增加如下事件過程代碼:
PrivateSubCommand3_Click()‘單擊“下一個記錄”按鈕
rsTeacher.MoveNext
EndSub2021/5/9187.4瀏覽記錄上面的過程隱含錯誤:移至最后一條記錄后無法再下移指針,將出現(xiàn)運行錯誤信息框。兩種糾正錯誤的方法:如果記錄集的EOF屬性為True,就回到第一條記錄如果記錄集的EOF屬性為True,就回到最后一條記錄
PrivateSubCommand3_Click()‘單擊“下一個記錄”按鈕
rsTeacher.MoveNextEndSub2021/5/9197.4瀏覽記錄PrivateSubCommand3_Click()
rsTeacher.MoveNextIfrsTeacher.EOFThenrsTeacher.MoveFirstEndIfEndSub
方法1:若記錄集的EOF屬性為True,則回到首記錄
方法2:若記錄集的EOF屬性為True,則回到末記錄PrivateSubCommand3_Click()
rsTeacher.MoveNextIfrsTeacher.EOFThenrsTeacher.MoveLastEndIfEndSub2021/5/9207.4瀏覽記錄方法2的程序還將運行出錯。因為Recordset對象有一個名為LockType的屬性,默認(rèn)值為adLockReadOnly,此時只能瀏覽記錄數(shù)據(jù),記錄的移動方式也只能是MoveNext和MoveFirst。要實現(xiàn)記錄指針的4種移動操作,完成記錄的添加、刪改或更新,必須在使用Open方法打開數(shù)據(jù)表之前,將該記錄集對象的LockType屬性設(shè)置成adLockPessimistic或adLockOptimistic,如
rsTeacher.LockType=adLockPessimisticrsTeacher.Open"導(dǎo)師",cnGraduate,,,adCmdTable2021/5/9217.4瀏覽記錄Recordset對象的LocyType屬性決定數(shù)據(jù)的鎖定方式:
adLockReadOnly:數(shù)據(jù)處于只讀狀態(tài)。adLockPessimistic(保守式鎖定):編輯數(shù)據(jù)時即鎖定數(shù)據(jù)源記錄,直到數(shù)據(jù)編輯完成才釋放。adLockOptimistic(開放式鎖定):編輯數(shù)據(jù)時不鎖定,用Update方法提交數(shù)據(jù)時才鎖定數(shù)據(jù)源記錄。adLockBatchOptimistic(開放式更新):應(yīng)用于批更新模式2021/5/9227.4瀏覽記錄如果數(shù)據(jù)表中沒有記錄,即BOF和EOF同時為True,就不能引用表中的數(shù)據(jù)。將單擊“導(dǎo)師姓名”按鈕的事件過程改寫如下PrivateSubCommand2_Click()IfrsTeacher.BOF=TrueAndrsTeacher.EOF=TrueThenText1.Value=""ElseText1.Value=rsTeacher!姓名
EndIfEndSub同理,修改單擊“導(dǎo)師編號”按鈕的事件過程同理,修改“下一個記錄”按鈕的事件過程代碼(空表情況下記錄指針不移動)2021/5/9237.5編輯數(shù)據(jù)7.5.1用ADO記錄集的AddNew方法添加記錄7.5.2用ADO記錄集的Update方法修改記錄
7.5.3用ADO記錄集的Delete方法刪除記錄
2021/5/9247.5.1用ADO記錄集的AddNew方法添加記錄添加新記錄的步驟:(1)用記錄集的AddNew方法產(chǎn)生一個空記錄(2)為空記錄的各個字段賦值(3)用記錄集的Update方法保存新記錄[例7-4]在例7-3的基礎(chǔ)上進(jìn)行修改
2021/5/9257.5.1用ADO記錄集的AddNew方法添加記錄添加的程序代碼:PrivateSubCommand4_Click()DimAgeAs
BytersTeacher.MoveFirstAge=rsTeacher!年齡'讀取第一條記錄的年齡字段值
rsTeacher.AddNew
'添加一條新記錄
rsTeacher!導(dǎo)師編號="107"rsTeacher!姓名="高原"rsTeacher!年齡=Age
rsTeacher.UpdateEndSub思考:什么情況下單擊“新記錄”按鈕,系統(tǒng)會提示出錯?2021/5/9267.5.2用ADO記錄集的Update方法修改記錄修改記錄的步驟:(1)將記錄指針移動到需要修改的記錄上(2)對記錄中的相關(guān)字段的值進(jìn)行修改(3)用Update方法保存更改修改后的結(jié)果不得違反數(shù)據(jù)完整性約束
[例7-5]在模塊ADO中添加過程Update_Age:將“導(dǎo)師”表中第5條記錄的年齡字段值修改為60歲。注意設(shè)置記錄集的LockType類型2021/5/9277.5.2用ADO記錄集的Update方法修改記錄SubUpdate_Age()
DimIAsByte
DimcnGraduateAsADODB.Connection
SetcnGraduate=CurrentProject.Connection
DimrsTeacherAsADODB.Recordset
SetrsTeacher=NewADODB.Recordset
rsTeacher.LockType=adLockPessimisticrsTeacher.Open"導(dǎo)師",cnGraduate,,,adCmdTable
'向下跳過4條記錄,將記錄指針指向第5條記錄
ForI=1To4rsTeacher.MoveNextNextIrsTeacher!年齡=60:rsTeacher.UpdateEndSub2021/5/9287.5.2用ADO記錄集的Update方法修改記錄[例7-6]在例7-4的基礎(chǔ)上進(jìn)行修改添加的程序代碼:
PrivateSubCommand5_Click()rsTeacher.MoveFirst
DoWhileNotrsTeacher.EOF
IfrsTeacher!性別="男"ThenrsTeacher!年齡=rsTeacher!年齡+1rsTeacher.UpdateEndIfrsTeacher.MoveNextLoopEndSub2021/5/9297.5.3用ADO記錄集的Delete方法刪除記錄刪除記錄要慎重,因為被刪記錄無法恢復(fù)刪除記錄的步驟:(1)移動到需要刪除的記錄上(2)用記錄集對象的Delete方法刪除當(dāng)前記錄(3)將某條記錄指定為當(dāng)前記錄刪除記錄后,Access不能自動使下一條記錄成為當(dāng)前記錄。根據(jù)不同情況,可用MoveNext或MoveLast方法定位記錄指針。
2021/5/9307.5.3用ADO記錄集的Delete方法刪除記錄[例7-7]對例7-6添加如下的單擊窗體事件過程:PrivateSubForm_Click()rsTeacher.MoveFirst
DoWhileNotrsTeacher.EOF
rsTeacher.MoveNext
LoopMsgBox"待刪除記錄不存在!"EndSub如果找到“高原”,進(jìn)行相關(guān)操作,然后退出過程轉(zhuǎn)下頁2021/5/9317.5.3用ADO記錄集的Delete方法刪除記錄
IfrsTeacher!姓名="高原"ThenFlag=MsgBox("是否要刪除高原?",vbYesNo,"刪除確認(rèn)")IfFlag=vbYesThen
'確定刪除
rsTeacher.DeleteMsgBox"記錄刪除完畢。"rsTeacher.MoveNext'刪除記錄后設(shè)定新的當(dāng)前記錄
IfrsTeacher.EOFThenrsTeacher.MoveLast
ExitSubElseIfFlag=vbNoThen
'不刪除記錄
MsgBox"放棄刪除操作!",,"刪除確認(rèn)"
ExitSubEndIfEndIf如果找到“高原”,進(jìn)行相關(guān)操作,然后退出過程2021/5/9327.6
用ADO技術(shù)實現(xiàn)復(fù)雜查詢
[例7-8]在ADO模塊中建立Sex過程:統(tǒng)計并在輸出對話框中顯示男、女研究生人數(shù)比。要求以人數(shù)多的一方為1、放在右側(cè)、保留小數(shù)兩位。
程序分析:先遍歷全部記錄,分別統(tǒng)計出男、女研究生人數(shù)。如果男生人數(shù)多于女生,則男生人數(shù)為1,女生人數(shù)改為女生人數(shù)除以男生人數(shù);反之亦然。
2021/5/9337.6
用ADO技術(shù)實現(xiàn)復(fù)雜查詢
SubSex()
(定義對象、完成與數(shù)據(jù)庫的連接、打開研究生表、定義變量)
Student.MoveFirst
DoWhile
NotStudent.EOF'統(tǒng)計男、女研究生人數(shù)
IfStudent!性別="男"ThenBoy=Boy+1IfStudent!性別="女"ThenGirl=Girl+1Student.MoveNextLoopIfGirl<=BoyThen
'以男生人數(shù)為1MsgBox"女:男="&Format(Girl/Boy,"0.00")&":1"Else
'以女生人數(shù)為1MsgBox"男:女="&Format(Boy/Girl,"0.00")&":1"EndIfEndSub2021/5/9347.6
用ADO技術(shù)實現(xiàn)復(fù)雜查詢
[例7-9]略[例7-10]2021/5/9357.6
用ADO技術(shù)實現(xiàn)復(fù)雜查詢
PrivateSubForm_Load()MSFlexGrid1.Rows=1MSFlexGrid1.Cols=8
'以下為MsFlexGrid添加列標(biāo)題
MSFlexGrid1.Row=0:MSFlexGrid1.Col=1'選定0行1列
MSFlexGrid1.Value="學(xué)號"MSFlexGrid1.Col=2:MSFlexGrid1.Value="姓名"MSFlexGrid1.Col=3:MSFlexGrid1.Value="性別"MSFlexGrid1.Col=4:MSFlexGrid1.Value="入學(xué)日期"MSFlexGrid1.Col=5:MSFlexGrid1.Value="入學(xué)分?jǐn)?shù)"MSFlexGrid1.Col=6:MSFlexGrid1.Value="研究方向"MSFlexGrid1.Col=7:MSFlexGrid1.Value="導(dǎo)師編號"EndSub2021/5/9367.6
用ADO技術(shù)實現(xiàn)復(fù)雜查詢
PrivateSubCommand1_Click()'單擊"生成"按鈕(定義變量、定義對象、完成與數(shù)據(jù)庫的連接、打開研究生表)
Student.MoveFirst
DoWhileNotStudent.EOFForI=2ToStudent!入學(xué)分?jǐn)?shù)-1
IfStudent!入學(xué)分?jǐn)?shù)ModI=0ThenExitFor
'不是質(zhì)數(shù)
NextI
IfI=Student!入學(xué)分?jǐn)?shù)Then
'如果入學(xué)分?jǐn)?shù)為質(zhì)數(shù)
S=""
ForI=0To6'將當(dāng)前記錄各個字段連成一行
S=S&Student.Fields(I)&Chr(9)
NextIMSFlexGrid1.AddItem“”&vbTab&S'跳過每行左側(cè)的標(biāo)題欄
EndIfStudent.MoveNextLoopEndSub2021/5/9377.7
在VBA程序中使用SQL命令
Access提供了DoCmd對象,該對象的RunSQL方法可以在VBA程序中用SQL命令直接對數(shù)據(jù)源進(jìn)行操作。RunSQL方法的格式為:DoCmd.RunSQL<SQL命令>也可以Dim<字符串變量>AsString<字符串變量>=<SQL命令>DoCmd.RunSQL<字符串變量>
<SQL命令>是一對由雙引號括起來的SQL命令2021/5/9387.7
在VBA程序中使用SQL命令
7.7.1定義數(shù)據(jù)7.7.2編輯數(shù)據(jù)7.7.3實現(xiàn)數(shù)據(jù)完整性約束
7.7.4執(zhí)行查詢操作
2021/5/9397.7.1定義數(shù)據(jù)1.創(chuàng)建數(shù)據(jù)表
CREATETABLE<表名>(字段名數(shù)據(jù)類型[NULL|NOTNULL]|字段名AS計算表達(dá)式[,...n])[例7-11]在SQL模塊中建立如下過程:
SubCreate_Table()
DoCmd.RunSQL"CREATETABLEStudent(姓名text(6),年齡byte,入學(xué)日期date)"EndSubSubCreate_Table()DimSqlAsString
Sql="CREATETABLEStudent(姓名text(6),年齡byte,入學(xué)日期date)"DoCmd.RunSQLSqlEndSub等價2021/5/9407.7.1定義數(shù)據(jù)2.在表中增加字段
[例7-12]為Student表增加一個貨幣型的字段“學(xué)費”
3.改變字段的類型
[例7-13]修改Student表中“年齡”字段的類型SubAdd_Field()DoCmd.RunSQL"ALTERTABLEStudentADD
學(xué)費CURRENCY"EndSubSubAlter_Fields_Type()DoCmd.RunSQL"ALTERTABLEStudentALTER
年齡SmallInt"EndSub如果字段的新類型與原類型不兼容將造成數(shù)據(jù)丟失
2021/5/9417.7.1定義數(shù)據(jù)4.改變字段的寬度
[例7-14]更改Student表中“姓名”字段的寬度
5.刪除一個字段
[例7-15]刪除Student表中的“年齡”字段
SubDelete_Field()DoCmd.RunSQL"ALTERTABLEStudentDROP
年齡"EndSubSubAlter_Fields_Width()DoCmd.RunSQL"ALTERTABLEStudentALTER
姓名text(10)"EndSub字段的寬度由大變小,有可能丟失數(shù)據(jù)
2021/5/9427.7.1定義數(shù)據(jù)6.刪除一個表
[例7-16]刪除Student表
7.修改數(shù)據(jù)表名字
[例7-17]將Student表的名字更改成“學(xué)生”SubRename_Table()
DoCmd.Rename"學(xué)生",acTable,"Student"EndSubSubDelete_Table()DoCmd.RunSQL"DROPTABLEStudent"EndSub2021/5/9437.7.2編輯數(shù)據(jù)1.向表中追加記錄
[例7-18]在Student表中添加一條記錄SubInsert_Table()DoCmd.RunSQL"INSERTINTOStudentVALUES('李大明',35,'2003-1-15')"EndSubVALUES后的數(shù)據(jù)與表中字段的順序要一一對應(yīng)
說明:(1)日期型常量可以放在一對單引號或一對#中。(2)如果數(shù)據(jù)是通過輸入對話框等途徑獲得,需在SQL命令中使用變量,然后用&運算符將變量連接到SQL命令中。對于字符串變量或日期型變量,要在這些變量的兩側(cè)加上一對單引號。2021/5/9447.7.2編輯數(shù)據(jù)[例7-19]通過變量為Student表添加一條記錄
SubInsert_Table_VBA()
DimS_nameAsString
DimAgeAsByte,S_dateAsDateS_name=InputBox("輸入學(xué)生姓名:")S_date=InputBox("入學(xué)日期:")Age=21DoCmd.RunSQL"INSERTINTOStudentVALUES('"&S_name&"',"&Age&",'"&S_date&"')"EndSub注意單引號和雙引號出現(xiàn)的位置
2021/5/9457.7.2編輯數(shù)據(jù)2.修改表中記錄
[例7-20]將“導(dǎo)師”表中“李向明”的年齡改成40
[例7-21]將“導(dǎo)師”表中所有男導(dǎo)師的年齡增加1歲SubUpdate_Table_1()DoCmd.RunSQL"UPDATE
導(dǎo)師SET年齡=40WHERE
姓名='李向明'"EndSub如果本例用ADO技術(shù)編程,代碼會怎樣?SubUpdate_Table_2()DoCmd.RunSQL"UPDATE導(dǎo)師SET年齡=年齡+1WHERE性別='男'"EndSub2021/5/9467.7.2編輯數(shù)據(jù)3.刪除特定記錄
[例7-22]將“導(dǎo)師”表中年齡在50歲以下的記錄全部刪除
SubDelete_Record()DoCmd.RunSQL"DELETEFROM導(dǎo)師WHERE年齡<50"EndSub思考:(1)如果要求將“導(dǎo)師”表中低于年齡平均值的導(dǎo)師記錄刪除,例7-22應(yīng)怎樣修改?(2)如果要刪除小于X歲的所有記錄,X的值通過鍵盤在程序運行時輸入,程序又該怎樣修改?2021/5/9477.7.3實現(xiàn)數(shù)據(jù)完整性約束
1.設(shè)置主鍵[例7-23]為“導(dǎo)師”表和“研究生”表設(shè)置主鍵(如果這兩個表已有主鍵和外鍵,請先予以刪除)[例7-24]在創(chuàng)建新表Teacher的同時設(shè)定code為主鍵
SubCreate_Primary()DoCmd.RunSQL"AlterTable導(dǎo)師AddPrimaryKey(導(dǎo)師編號)"DoCmd.RunSQL"AlterTable研究生AddPrimaryKey(學(xué)號)"EndSubSubCreate_Table_Primary()DoCmd.RunSQL"CREATETABLETeacher(codetext(3)PRIMARYKEY,nametext(6),birthdaydate,salarycurrency)"EndSub2021/5/9487.7.3實現(xiàn)數(shù)據(jù)完整性約束
2.設(shè)置外鍵[例7-25]將研究生表中的“導(dǎo)師編號”設(shè)為外鍵,對應(yīng)的參照表是“導(dǎo)師”表(建立“導(dǎo)師”表和“研究生”表間的關(guān)系)[例7-26]在創(chuàng)建新表Student1的同時指定其外鍵和參照表SubCreate_Foreign()DoCmd.RunSQL"AlterTable研究生AddForeignKey(導(dǎo)師編號)References導(dǎo)師)"EndSubSubCreate_Table_Foreign()DoCmd.RunSQL"CreateTableStudent1(codetext(4)PrimaryKey,nametext(6),sexbit,t_codetext(3),ForeignKey(t_code)ReferencesTeacher(code))"EndSubbit表示“是/否”型變量
2021/5/9497.7.4執(zhí)行查詢操作VBA程序中用SQL命令完成的數(shù)據(jù)查詢操作,無法直接將查詢結(jié)果所返回的記錄集按數(shù)據(jù)表形式顯示,解決方法:
方法1:將查詢形成的記錄集生成一個新表保存到數(shù)據(jù)庫中;然后用ADO記錄集對象打開這個表進(jìn)行各種操作;完成后刪除這個表。方法2:將返回的記錄集看成是保存在內(nèi)存中的一個臨時表,用ADO記錄集對象直接打開該臨時表進(jìn)行各種操作。2021/5/9507.7.4執(zhí)行查詢操作[例7-27]
SubQuery1()DoCmd.RunSQL"Select姓名,職稱,年齡IntotempFrom導(dǎo)師Where職稱in('教授','副教授')"(定義對象、連接數(shù)據(jù)庫、設(shè)置記錄集LockType屬性、打開temp表)
DoWhileNotrsTeacher.EOF
Debug.PrintrsTeacher!姓名,rsTeacher!職稱,rsTeacher!年齡
rsTeacher.MoveNext
LooprsTeacher.Close'關(guān)閉記錄集對象,終止對temp的引用
DoCmd.RunSQL"DropTabletemp"'刪除數(shù)據(jù)表tempEndSub刪除temp表之前必須先關(guān)閉對表的引用
職稱='教授'Or職稱='副教授'
2021/5/9517.7.4執(zhí)行查詢操作[例7-28]
Sub
Query2()DimSQLAsStringSQL="SELECTt.姓名as導(dǎo)師姓名,s.姓名as學(xué)生姓名FROM導(dǎo)師t,研究生sWHEREt.導(dǎo)師編號=s.導(dǎo)師編號andt.性別='男'"(定義對象、連接數(shù)據(jù)庫、設(shè)置記錄集LockType屬性、打開temp表)rsTeacher.OpenSQL,cnGraduate'打開查詢記錄集
DoWhileNotrsTeacher.EOFDebug.Print
rsTeacher!導(dǎo)師姓名,rsTeacher!學(xué)生姓名
rsTeacher.MoveNextLoopEndSubt、s分別作為“導(dǎo)師”表和“研究生”表的別名
[例7-29]不使用SQL命令實現(xiàn)上題的功能。略2021/5/9527.8訪問當(dāng)前數(shù)據(jù)庫以外的數(shù)據(jù)庫連接另一個數(shù)據(jù)庫:使用Connection對象的Open方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人出售房產(chǎn)合同范本
- 加裝空調(diào)工程合同范本
- 購房合同有購房合同范本
- 單位合伙建房合同范例
- 關(guān)于獨家合同范本
- 醫(yī)藥會議合同范本
- 單位給買車合同范本
- 化工項目整體承建合同范本
- 產(chǎn)品總經(jīng)銷合同范本
- 醫(yī)院加盟合同范本
- 接觸隔離標(biāo)準(zhǔn)操作流程
- 2024-2025學(xué)年山東省煙臺市高三上學(xué)期期末學(xué)業(yè)水平考試英語試題(解析版)
- 世界給予我的 課件-2024-2025學(xué)年高二下學(xué)期開學(xué)第一課主題班會
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 配套課件-前廳客房服務(wù)與管理
- 2025年度藥店營業(yè)員服務(wù)規(guī)范及合同約束協(xié)議3篇
- 工業(yè)和信息化部裝備工業(yè)發(fā)展中心2025年上半年應(yīng)屆畢業(yè)生招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年溫州市甌海旅游投資集團(tuán)有限公司下屬子公司招聘筆試參考題庫附帶答案詳解
- 《十萬個為什么》整本書閱讀-課件-四年級下冊語文(統(tǒng)編版)
- 法社會學(xué)教程(第三版)教學(xué)
- AQ6111-2023個體防護(hù)裝備安全管理規(guī)范
評論
0/150
提交評論