版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
12.1宏的概念和基本操作12.2宏組的創(chuàng)建與宏的嵌套12.3VisualBasic簡(jiǎn)介
12.1.1宏的概念
宏是Access2003中執(zhí)行選定任務(wù)的操作或操作集合。其中的每個(gè)操作實(shí)現(xiàn)的特定功能是由Access本身提供的。有了宏可以使多個(gè)任務(wù)同時(shí)完成,使單調(diào)的重復(fù)性操作自動(dòng)完成。宏是一種特殊的代碼,不具有編譯特性,沒(méi)有控制轉(zhuǎn)換,也不能對(duì)變量直接進(jìn)行操作。12.1宏的概念和基本操作宏也是一種操作命令,它和菜單操作命令是一樣的,只是它們對(duì)數(shù)據(jù)庫(kù)施加作用的時(shí)間有所不同,作用時(shí)的條件也有所不同。菜單命令一般用在數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程中,而宏命令則可以在數(shù)據(jù)庫(kù)中自動(dòng)執(zhí)行。
Access中共有53種基本宏操作,這些基本的宏操作還可以組合成很多其他的宏組操作。實(shí)際上很少單獨(dú)使用這些宏命令,常常是將這些宏命令排成一組,按順序執(zhí)行,以完成一種特定任務(wù)。這些宏命令可以通過(guò)窗體中控件的某個(gè)事件操作來(lái)實(shí)現(xiàn),或在數(shù)據(jù)庫(kù)的運(yùn)行過(guò)程中自動(dòng)實(shí)現(xiàn)。
Access定義了許多宏操作,這些宏操作可以完成以下功能。
(1)窗體和報(bào)表中的數(shù)據(jù)處理。例如,移動(dòng)窗口,改變窗口大小,打開(kāi)、關(guān)閉表單或報(bào)表,打印報(bào)表,執(zhí)行查詢(xún)等。
(2)數(shù)據(jù)的導(dǎo)入、導(dǎo)出。
(4)執(zhí)行任意的應(yīng)用處理模塊。
(5)為控制的屬性賦值。12.1.2宏的創(chuàng)建
和創(chuàng)建其他Access對(duì)象一樣,宏的創(chuàng)建過(guò)程也是在設(shè)計(jì)視圖中完成的。與創(chuàng)建其他對(duì)象不同的是,創(chuàng)建宏的基本操作都是由系統(tǒng)完成的,用戶(hù)只需對(duì)其中某些屬性進(jìn)行設(shè)置即可。
在Access中如果只是建立一個(gè)小型數(shù)據(jù)庫(kù),則通過(guò)使用Access豐富的宏功能完全可以實(shí)現(xiàn),而無(wú)需使用更復(fù)雜的VBA。
創(chuàng)建宏和宏組的區(qū)別在于:創(chuàng)建宏可以用來(lái)執(zhí)行某個(gè)特定的操作,創(chuàng)建宏組則用來(lái)執(zhí)行一系列操作。
宏是Access將要自動(dòng)執(zhí)行的任務(wù)列表。對(duì)于必須重復(fù)執(zhí)行的任務(wù),應(yīng)考慮創(chuàng)建宏,這些任務(wù)包括打開(kāi)和關(guān)閉窗體、打印報(bào)表以及在窗體上設(shè)置控件值。
1.利用設(shè)計(jì)視圖創(chuàng)建宏
宏設(shè)計(jì)視圖用于宏的創(chuàng)建和設(shè)計(jì),類(lèi)似于窗體的設(shè)計(jì)視圖。利用宏設(shè)計(jì)視圖創(chuàng)建宏的操作如下所述。
(1)打開(kāi)要?jiǎng)?chuàng)建宏的數(shù)據(jù)庫(kù)窗口。
(2)在“對(duì)象”列表中選擇“宏”對(duì)象,然后單擊數(shù)據(jù)庫(kù)工具欄上的【新建】按鈕,進(jìn)入宏設(shè)計(jì)視圖窗口,如圖12-1所示。圖12-1宏設(shè)計(jì)視圖窗口宏設(shè)計(jì)視圖的上半部分有兩列,左邊“操作”列為每個(gè)步驟添加操作,右邊“注釋”列為每個(gè)操作提供一個(gè)說(shuō)明,說(shuō)明數(shù)據(jù)被Access所忽略。在宏的設(shè)計(jì)試圖中還隱藏了“宏名”和“條件”兩列。單擊工具欄上的【宏名】按鈕和【條件】按鈕就可以顯示這兩列。
(3)單擊“操作”字段列的第一個(gè)單元格,再單擊右側(cè)向下箭頭符號(hào),打開(kāi)宏操作下拉列表,從該列表中選擇一個(gè)宏操作。
(4)在設(shè)計(jì)視圖的下半部分,可對(duì)所選宏操作的操作參數(shù)進(jìn)行設(shè)置,同時(shí)所選定的操作的解釋說(shuō)明出現(xiàn)在設(shè)計(jì)視圖的右下角,如圖12-2所示。圖12-2設(shè)置宏操作可以直接在宏的設(shè)計(jì)視圖的“操作”列中輸入操作名,也可以從宏操作下拉列表中選擇。當(dāng)添加一個(gè)操作后,應(yīng)當(dāng)在“注釋”列中加入說(shuō)明性的文字,以便于將來(lái)使用時(shí)理解。
(5)重復(fù)步驟(3)和步驟(4)的操作,直到輸入所有的宏操作。
在定義一個(gè)或多個(gè)宏操作后,可能需要對(duì)其中的某些操作順序進(jìn)行改變。單擊操作所在行端,該行將反色顯示,此時(shí)可將它拖動(dòng)到想要改變的位置。
2.拖動(dòng)數(shù)據(jù)庫(kù)對(duì)象添加宏
除了可以在宏的設(shè)計(jì)視圖中創(chuàng)建宏外,還可以利用拖動(dòng)數(shù)據(jù)庫(kù)對(duì)象的方法完成相應(yīng)的宏操作。如果要快速創(chuàng)建一個(gè)在指定數(shù)據(jù)庫(kù)對(duì)象上執(zhí)行操作的宏,可以從數(shù)據(jù)庫(kù)窗口中將對(duì)象直接拖放到宏設(shè)計(jì)視圖窗口的操作行。
(1)在數(shù)據(jù)庫(kù)窗口“對(duì)象”列表中選擇“宏”對(duì)象,單擊【新建】按鈕,打開(kāi)宏的設(shè)計(jì)視圖窗口。
(2)單擊【窗口】→【垂直平鋪】命令,使窗口都顯示在屏幕中,如圖12-3所示。
(3)在圖12-3右半邊的數(shù)據(jù)庫(kù)窗口中,選擇要拖動(dòng)的數(shù)據(jù)庫(kù)對(duì)象,并拖動(dòng)到圖12-4左半邊宏設(shè)計(jì)窗口的第一行內(nèi)。如果拖動(dòng)的是宏,則添加執(zhí)行此宏的操作;如果拖動(dòng)的是其他對(duì)象,則添加打開(kāi)相應(yīng)對(duì)象的操作。
(4)單擊宏設(shè)計(jì)視圖窗口中工具欄上的【宏名】按鈕,在宏的設(shè)計(jì)視圖窗口的最左側(cè)添加一個(gè)“宏名”列,在此處可以為創(chuàng)建的宏命名。圖12-3排列所有的窗口
圖12-4將對(duì)象拖動(dòng)到宏設(shè)計(jì)視圖窗口
3.保存和復(fù)制宏操作
在創(chuàng)建宏之后必須進(jìn)行保存,否則無(wú)法將其應(yīng)用到窗體或報(bào)表等數(shù)據(jù)庫(kù)對(duì)象。單擊工具欄上的【保存】按鈕,可以保存宏。雖然在運(yùn)行尚未保存的宏時(shí),Access會(huì)請(qǐng)求對(duì)宏進(jìn)行保存,此時(shí)也可以對(duì)宏進(jìn)行保存,但這樣又可能造成意想不到的錯(cuò)誤。
在Access中,用戶(hù)可以對(duì)整個(gè)宏進(jìn)行復(fù)制,也可以只對(duì)宏中的某個(gè)操作進(jìn)行復(fù)制。在復(fù)制某個(gè)操作時(shí),需要單擊“行選定器”選定要復(fù)制的操作,然后再單擊工具欄上的【復(fù)制】按鈕對(duì)選取的內(nèi)容進(jìn)行復(fù)制。12.1.3為宏操作設(shè)置條件
對(duì)宏操作進(jìn)行一定的條件設(shè)置是非常必要的,如果沒(méi)有為宏指定任何條件,則用戶(hù)每次進(jìn)入數(shù)據(jù)庫(kù)的時(shí)候,所指定的宏操作都要執(zhí)行。因此,必須對(duì)宏操作設(shè)置一定的條件以控制其運(yùn)行。
其操作原理是:條件是邏輯表達(dá)式。宏將根據(jù)條件結(jié)果的真或假而沿著不同的路徑執(zhí)行。如果這個(gè)條件為真,則Access將執(zhí)行此行中的操作,在緊跟此操作的“條件”欄內(nèi)輸入省略號(hào),就可以使Access在條件為真時(shí)執(zhí)行這些操作;如果這個(gè)條件為假,則Access會(huì)忽略這個(gè)操作以及緊跟著此操作在“條件”字段內(nèi)有省略號(hào)的操作,并且移到下一個(gè)包含其他條件或“條件”字段為空的操作。宏條件最多可達(dá)255個(gè)字符。如果條件比限定的長(zhǎng),則可轉(zhuǎn)而使用VBA程序。
下面以實(shí)例說(shuō)明創(chuàng)建條件操作宏的具體過(guò)程。
有一窗體“成績(jī)”,其上有一個(gè)“請(qǐng)輸入成績(jī)”文本框(名為score)和一個(gè)【確定】按鈕,如圖12-5所示。試編寫(xiě)宏操作“成績(jī)分類(lèi)”,使得在單擊【確定】按鈕時(shí)自動(dòng)執(zhí)行“成績(jī)分類(lèi)”?!俺煽?jī)分類(lèi)”將根據(jù)文本框中輸入的成績(jī)顯示不同的提示信息,如果成績(jī)大于等于0而小于60,提示信息為“不及格”;如果成績(jī)?cè)?0~90之間,提示信息為“及格”;如果在90~100之間,提示信息為“優(yōu)秀”;否則顯示提示信息“輸入的成績(jī)不正確,請(qǐng)重新輸入”。圖12-5成績(jī)窗體其操作步驟如下:
(1)在數(shù)據(jù)庫(kù)窗口中選擇“宏”對(duì)象,并單擊【新建】按鈕打開(kāi)宏設(shè)計(jì)器。
(2)執(zhí)行【視圖】→【條件】命令,或單擊【條件】按鈕,為宏添加條件列。
(3)在第一行的“條件”單元格中輸入“[score]>=0And[score]<60”,“操作”單元格中選擇“MsgBox”,并在“消息”文本框中輸入“不及格”。
提示:在輸入條件表達(dá)式時(shí),如果要引用當(dāng)前窗體或報(bào)表的值,則可以直接使用“[控件名]”,如“[score]”,也可以使用“[Forms]![窗體名]![控件名]”的形式,此時(shí)上述條件變?yōu)椤癧Forms]![成績(jī)]![score]>=0And[Forms]![成績(jī)]![score]<60”。
(4)在第二行的“條件”單元格中輸入“[score]>=60And[score]<90”,“操作”單元格中選擇“MsgBox”,并在“消息”文本框中輸入“及格”。
(5)在第三行的“條件”單元格中輸入“[score]>=90And[score]<=100”,“操作”單元格中選擇“MsgBox”,并在“消息”文本框中輸入“優(yōu)秀”。
(6)在第四行的“條件”單元格中輸入“[score]<0Or[score]>100”,“操作”單元格中選擇“MsgBox”,并在“消息”文本框中輸入“輸入的成績(jī)不正確,請(qǐng)重新輸入”。
(7)完成后的宏設(shè)計(jì)器如圖12-6所示。關(guān)閉宏設(shè)計(jì)器并以“成績(jī)分類(lèi)”的名稱(chēng)保存宏的設(shè)計(jì)。圖12-6條件宏設(shè)計(jì)
(8)打開(kāi)“成績(jī)”窗體的設(shè)計(jì)視圖,設(shè)置【確定】按鈕的單擊事件為“成績(jī)分類(lèi)”,如圖12-7所示。
在條件操作宏中,每行的“條件”只是對(duì)同一行的“操作”有約束力,而對(duì)其他的操作不起約束作用。因此,第一個(gè)操作條件不滿(mǎn)足時(shí),宏的其他幾個(gè)操作仍可能執(zhí)行。圖12-7設(shè)置【確定】按鈕的單擊事件12.1.4宏的運(yùn)行
創(chuàng)建了宏之后,可以在不同的位置上運(yùn)行宏。運(yùn)行宏通常有以下幾種方法。
(1)在數(shù)據(jù)庫(kù)窗口中選擇“宏”對(duì)象,雙擊相應(yīng)的宏名運(yùn)行該宏。
(2)在宏的設(shè)計(jì)視圖窗口中單擊工具欄的執(zhí)行按鈕,執(zhí)行正在設(shè)計(jì)的宏。
(3)在菜單欄中單擊【工具】→【宏】→【運(yùn)行宏】菜單命令,彈出“執(zhí)行宏”對(duì)話(huà)框,輸入要運(yùn)行的宏的名稱(chēng),如圖12-8所示。圖12-8“執(zhí)行宏”對(duì)話(huà)框
(4)在窗體、報(bào)表、控件和菜單中調(diào)用宏。
(5)將宏的名字設(shè)為AutoExec,則在每次啟動(dòng)該數(shù)據(jù)庫(kù)時(shí),將自動(dòng)執(zhí)行該宏。
(6)宏還可以嵌套執(zhí)行,即在一個(gè)宏中可以調(diào)用另一個(gè)宏。在宏中加入操作RunMacro,并將操作RunMacro的參數(shù)“宏名”設(shè)為“宏:打開(kāi)窗體”,如圖12-9所示。圖12-9宏的嵌套12.1.5常用的宏操作
Access在宏操作列表中提供了53種操作。在宏中添加了某個(gè)操作之后,可以在設(shè)計(jì)視圖中設(shè)置這個(gè)操作的參數(shù),通過(guò)參數(shù)向Access提供如何執(zhí)行操作的附加信息。Access常用的宏操作及其功能如表12-1所示。表12-1Access常用的宏操作及其功能續(xù)表12.1.6應(yīng)用示例
創(chuàng)建兩個(gè)按鈕:?jiǎn)螕粢粋€(gè)按鈕打開(kāi)6.1節(jié)中創(chuàng)建的“學(xué)生查詢(xún)”,單擊另一個(gè)按鈕打開(kāi)8.1節(jié)創(chuàng)建的“學(xué)生”窗體。
1.創(chuàng)建宏
(1)在“基礎(chǔ)篇-學(xué)生成績(jī)管理系統(tǒng)”數(shù)據(jù)庫(kù)窗口中,選擇“宏”對(duì)象,單擊【新建】按鈕,進(jìn)入宏設(shè)計(jì)視圖中,單擊第1行“操作”欄中的單元格,然后單擊向下箭頭符號(hào),在打開(kāi)的“操作”下拉列表中選擇“OpenForm”選項(xiàng),在“窗體名稱(chēng)”下拉列表框中選擇“學(xué)生”,如圖12-10所示。關(guān)閉宏設(shè)計(jì)器,為該宏命名為“打開(kāi)學(xué)生窗體宏”。
(2)采用步驟(1)中類(lèi)似的方法創(chuàng)建“打開(kāi)學(xué)生查詢(xún)宏”,如圖12-11所示,這里“操作”下拉列表選擇“OpenQuery”選項(xiàng),“查詢(xún)名稱(chēng)”下拉列表框中選擇“學(xué)生查詢(xún)”。
圖12-10打開(kāi)學(xué)生窗體宏
圖12-11打開(kāi)學(xué)生查詢(xún)宏
2.創(chuàng)建切換窗體
(1)打開(kāi)“基礎(chǔ)篇-學(xué)生成績(jī)管理系統(tǒng)”數(shù)據(jù)庫(kù),在“對(duì)象”列表中選擇“窗體”對(duì)象,雙擊“在設(shè)計(jì)視圖中創(chuàng)建窗體”選項(xiàng),新建一個(gè)空白窗體。
(2)在空白窗體中,單擊工具箱中的【命令】按鈕,添加一個(gè)命令至窗體,在命令按鈕“格式”選項(xiàng)卡的“標(biāo)題”中輸入“打開(kāi)學(xué)生窗體”,如圖12-12所示。同樣,再創(chuàng)建一個(gè)“打開(kāi)學(xué)生查詢(xún)”按鈕,如圖12-13所示。圖12-12創(chuàng)建【打開(kāi)學(xué)生窗體】按鈕圖12-13創(chuàng)建【打開(kāi)學(xué)生查詢(xún)】按鈕
(3)在【打開(kāi)學(xué)生窗體】按鈕的屬性中,選擇“事件”選項(xiàng)卡,在“單擊”項(xiàng)中選擇“打開(kāi)學(xué)生窗體宏”,如圖12-14所示。同樣,在【打開(kāi)學(xué)生查詢(xún)】按鈕的屬性中,選擇“事件”選項(xiàng)卡,在“單擊”項(xiàng)中選擇“打開(kāi)學(xué)生查詢(xún)宏”,如圖12-15所示。
(4)關(guān)閉屬性對(duì)話(huà)框,單擊工具欄上的【屬性】按鈕,調(diào)出“窗體”對(duì)話(huà)框,在對(duì)話(huà)框的“全部”選項(xiàng)卡中設(shè)置此窗體的“滾動(dòng)條”屬性為“兩者均無(wú)”,“彈出方式”屬性為“是”,“記錄選擇器”屬性為“否”,如圖12-16所示。
(5)保存并關(guān)閉該窗體,取名為“切換窗體”,如圖12-17所示。圖12-14【打開(kāi)學(xué)生窗體】按鈕的屬性圖12-15【打開(kāi)學(xué)生查詢(xún)】按鈕的屬性圖12-16對(duì)創(chuàng)建的窗體進(jìn)行設(shè)置
圖12-17保存窗體為“切換窗體”
(6)運(yùn)行結(jié)果如圖12-18所示,單擊【打開(kāi)學(xué)生窗體】按鈕時(shí)會(huì)打開(kāi)“學(xué)生”窗體,單擊【打開(kāi)學(xué)生查詢(xún)】按鈕時(shí)會(huì)打開(kāi)“學(xué)生查詢(xún)”。圖12-18運(yùn)行結(jié)果12.2.1宏組的創(chuàng)建
在創(chuàng)建宏時(shí),如果要將幾個(gè)相關(guān)的宏結(jié)合在一起完成某項(xiàng)特定的復(fù)雜操作,而不希望對(duì)單個(gè)宏進(jìn)行觸發(fā),那么用戶(hù)可以將它們組織起來(lái)構(gòu)成一個(gè)宏組。
宏組是在一個(gè)宏中包含若干個(gè)宏,這些宏都有各自的名稱(chēng)和相應(yīng)的宏操作,當(dāng)用戶(hù)熟悉了許多宏的功能之后,可根據(jù)實(shí)際需求對(duì)宏進(jìn)行不同操作的組合。12.2宏組的創(chuàng)建與宏的嵌套下面介紹在Access中創(chuàng)建宏組的方法。
(1)在數(shù)據(jù)庫(kù)窗口的“對(duì)象”列表中選擇“宏”對(duì)象,單擊【新建】按鈕,打開(kāi)宏的設(shè)計(jì)視圖窗口。
(2)單擊工具欄上的【宏名】按鈕,將在設(shè)計(jì)視圖窗口中上半部分的最左側(cè)添加一個(gè)“宏名”列,如圖12-19所示。
(3)在新添加的“宏名”列的第1個(gè)單元格中單擊,然后輸入宏組的名稱(chēng)“宏組1”,如圖12-20所示。圖12-19顯示“宏名”列
圖12-20輸入宏組的名稱(chēng)
(4)在“操作”列的第1個(gè)單元格中單擊,然后單擊向下箭頭符號(hào),在打開(kāi)的下拉列表中選擇“OpenTable”操作,在窗口的下方選擇操作參數(shù),如圖12-21所示。
在“表名稱(chēng)”中選擇“公共課成績(jī)”,在“數(shù)據(jù)模式”中選擇“編輯”。
(5)在“操作”列的第2個(gè)單元格中單擊,然后單擊向下箭頭符號(hào),在打開(kāi)的下拉列表中選擇“Close”操作,在窗口的下方選擇操作參數(shù),如圖12-22所示。圖12-21設(shè)置“OpenTable”操作參數(shù)
圖12-22設(shè)置“Close”操作參數(shù)在“對(duì)象類(lèi)型”中選擇“表”,在“對(duì)象名稱(chēng)”中選擇“公共課成績(jī)”。
(6)保存宏組,用剛才在第(2)步中輸入的“宏名”作為宏組的名字,同時(shí),該名字也是顯示在數(shù)據(jù)庫(kù)窗口“宏”對(duì)象中的宏和宏組列表中的名字,如圖12-23所示。
可以按照上述方法添加兩個(gè)或多個(gè)宏組,每個(gè)宏組中也可以包含多個(gè)宏操作。
宏組是多個(gè)宏的集中管理,要想使用宏組中的某個(gè)宏,不能直接使用宏的名字,而要使用語(yǔ)法“宏組名.宏名”。圖12-23保存宏組12.2.2宏的嵌套
在Access中,用戶(hù)可以方便地完成對(duì)一個(gè)已有宏的引用,這可以節(jié)省用戶(hù)的大量時(shí)間。如果要從某個(gè)宏中運(yùn)行另外一個(gè)宏,則可以使用RunMacro操作,然后將RunMacro的操作參數(shù)“宏名”設(shè)置為希望運(yùn)行的宏名稱(chēng)。
RunMacro操作的效果類(lèi)似于選擇【工具】→【宏】→【運(yùn)行宏】命令后再選擇宏名。唯一的不同之處在于選擇【工具】→【宏】→【運(yùn)行宏】命令只運(yùn)行一次宏,而采用RunMacro操作可以多次運(yùn)行宏。注意:RunMacro操作除了“宏名”參數(shù)外還有兩個(gè)參數(shù):重復(fù)次數(shù)用來(lái)指定重復(fù)運(yùn)行宏的最大次數(shù);重復(fù)表達(dá)式的計(jì)算結(jié)果為T(mén)rue(-1)或False(0)。每次RunMacro操作運(yùn)行時(shí)都會(huì)計(jì)算該表達(dá)式,當(dāng)結(jié)果為False(0)時(shí),停止被調(diào)用的宏。
宏的嵌套可以按照以下步驟進(jìn)行。
(1)打開(kāi)數(shù)據(jù)庫(kù),在“對(duì)象”列表中單擊“宏”對(duì)象,在右邊的列表框中選中要嵌套的宏或新建一個(gè)宏。
(2)在操作列中單擊單元格,在打開(kāi)的下拉列表中選擇“RunMacro”操作,然后將窗口下方的“操作參數(shù)”欄中的“宏名”文本框設(shè)置為要引用的宏,如圖12-24所示。圖12-24宏的嵌套根據(jù)需要設(shè)置“重復(fù)次數(shù)”和“重復(fù)表達(dá)式”。
利用宏的嵌套功能,用戶(hù)在創(chuàng)建新宏時(shí),便可以根據(jù)需要引用已創(chuàng)建宏中的操作,而不用再在新建的宏中逐一添加重復(fù)操作。
用戶(hù)還可以在VisualBasic程序中完成相同的操作,只要將RunMacro操作添加到VisualBasic程序中即可。
注意:每次調(diào)用的宏運(yùn)行結(jié)束后,Access都會(huì)返回到調(diào)用宏,繼續(xù)進(jìn)行該宏的下一個(gè)操作。用戶(hù)可以調(diào)用同一宏組中的宏,也可以調(diào)用另一宏組中的宏。如果在“宏名”文本框中輸入某個(gè)宏組的名稱(chēng),則Access將運(yùn)行該組中的第一個(gè)宏。12.3.1VBA編程的基本概念
VBA是MicrosoftOffice辦公軟件的內(nèi)置編程語(yǔ)言。VBA與VisualBasic一樣,都是以Basic語(yǔ)言作為語(yǔ)法基礎(chǔ)的高級(jí)語(yǔ)言,使用了對(duì)象、屬性、方法、事件等面向?qū)ο蟮木幊谈拍?。在Access中,如果遇到不能使用其他Access對(duì)象實(shí)現(xiàn)或使用其他Access對(duì)象實(shí)現(xiàn)起來(lái)很困難的情況,比如創(chuàng)建用戶(hù)自定義函數(shù)、復(fù)雜的流程控制、錯(cuò)誤處理,就需要使用VBA來(lái)編寫(xiě)代碼,完成這些復(fù)雜的任務(wù)。12.3VisualBasic簡(jiǎn)介
1.面向?qū)ο缶幊痰乃枷?/p>
VBA是一種面向?qū)ο蟮木幊谭椒ǎ邆淠K化、分層化的特點(diǎn),同時(shí)擁有一系列面向?qū)ο蟮幕咎卣?,用?hù)可以從中體會(huì)到面向?qū)ο缶幊痰姆N種好處。
1)面向?qū)ο蟮幕靖拍?/p>
面向?qū)ο缶幊讨杏幸韵聨讉€(gè)重要的概念:
(1)對(duì)象:面向?qū)ο缶幊痰幕靖拍?,指由描述該?duì)象屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。對(duì)象可以看成是一個(gè)獨(dú)立的單元。
(2)類(lèi):指對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的描述。
(3)實(shí)例:由某個(gè)特定的類(lèi)描述的一個(gè)具體的對(duì)象??梢哉f(shuō),類(lèi)是運(yùn)行時(shí)創(chuàng)建對(duì)象實(shí)例的模板,按照這個(gè)模板建立的一個(gè)個(gè)具體對(duì)象就成為類(lèi)的實(shí)例。
(4)屬性:是類(lèi)中用于描述對(duì)象特征的數(shù)據(jù),還是對(duì)客觀世界實(shí)體性質(zhì)的抽象。屬性由屬性名和屬性值組成。各個(gè)對(duì)象之所以能夠分開(kāi),是因?yàn)樗鼈兊膶傩灾挡煌耆嗤?。比如區(qū)分不同的圓,就是看它們的圓心和半徑,改變了這些屬性值,就改變了圓這個(gè)對(duì)象的基本特征。
(5)方法:對(duì)象所能執(zhí)行的操作。換言之,就是對(duì)象所能夠提供的服務(wù)。VBA中的方法(服務(wù))由過(guò)程或函數(shù)所組成。
(6)消息:要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類(lèi)中所定義的方法的規(guī)格說(shuō)明。VBA中定義的每個(gè)對(duì)象可以通過(guò)消息接受用戶(hù)的操作并做出識(shí)別和響應(yīng)。另外,系統(tǒng)本身也能提供激活對(duì)象所需要的消息。
2)面向?qū)ο蟮奶攸c(diǎn)
目前存在著多種類(lèi)型面向?qū)ο蟮木幊陶Z(yǔ)言,不同類(lèi)型的編程語(yǔ)言其具體事項(xiàng)各不相同,但它們的特點(diǎn)是一致的。
(1)抽象性:指對(duì)一個(gè)類(lèi)或?qū)ο笮枰紤]其與眾不同的特征,而無(wú)需考慮類(lèi)或?qū)ο蟮乃行畔?,以便于用?hù)集中精力來(lái)使用對(duì)象的主要特征,而忽略對(duì)象的內(nèi)部細(xì)節(jié)。適當(dāng)?shù)某橄罂梢允褂脩?hù)和程序員的工作得到簡(jiǎn)化。這是在面向?qū)ο蟮某绦蛟O(shè)計(jì)中普遍采用的一種策略。
(2)封裝性:指將對(duì)象等屬性和方法代碼都集中在一個(gè)模塊中,從而達(dá)到隱藏對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)和代碼細(xì)節(jié)的目的。對(duì)象好比一個(gè)黑盒子,對(duì)私有數(shù)據(jù)的訪(fǎng)問(wèn)或處理只能通過(guò)共有的方法來(lái)進(jìn)行。用戶(hù)可以自由使用一個(gè)對(duì)象,而不必理解類(lèi)的內(nèi)部實(shí)現(xiàn)方法。
(3)繼承性:指在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,子類(lèi)能夠自動(dòng)地共享基類(lèi)中定義的數(shù)據(jù)和方法的性質(zhì)。繼承性使得相似的對(duì)象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而消除了類(lèi)的冗余屬性和方法。
(4)多態(tài)性:指子類(lèi)對(duì)象可以像父類(lèi)對(duì)象一樣使用,同樣的消息可以發(fā)給父類(lèi)對(duì)象,也可以發(fā)給子類(lèi)對(duì)象。不同的對(duì)象按照它所屬的類(lèi)動(dòng)態(tài)選用方法來(lái)響應(yīng)。也就是說(shuō),在運(yùn)行時(shí),不同的對(duì)象能依據(jù)其類(lèi)型確定調(diào)用哪一個(gè)函數(shù)。
此外,面向?qū)ο筮€具有重載等特點(diǎn),有興趣的用戶(hù)可以參考專(zhuān)門(mén)描述面向?qū)ο蠓椒ǖ臅?shū)籍。
3)面向?qū)ο蟮膬?yōu)點(diǎn)
與傳統(tǒng)方法相比,面向?qū)ο蠓椒o(wú)疑具有更多的優(yōu)點(diǎn),這使它成為當(dāng)今程序設(shè)計(jì)的發(fā)展方向。
(1)面向?qū)ο蠓椒ㄅc人類(lèi)的習(xí)慣思維方法吻合。面向?qū)ο蠓椒ㄊ褂蔑@示世界的概念抽象地思考問(wèn)題,從而自然地解決問(wèn)題。該法用對(duì)象的觀點(diǎn)把事物的屬性和行為兩方面的特征封裝在一起,使人們能夠很自然地模擬客觀世界中的實(shí)體,并按照人類(lèi)思維的習(xí)慣方式建立起問(wèn)題領(lǐng)域的模型。
(2)面向?qū)ο蠓椒ǖ目勺x性好。采用面向?qū)ο蠓椒?,用?hù)只需要了解類(lèi)和對(duì)象的屬性和方法,而無(wú)需知道它內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)就可以放心地使用。
(3)面向?qū)ο蠓椒ǖ姆€(wěn)定性好。面向?qū)ο蠓椒ㄒ詫?duì)象為中心,用對(duì)象來(lái)模擬客觀世界中的實(shí)體。當(dāng)軟件的需求發(fā)生改變時(shí),往往不需要付出很大的代價(jià)就能夠做出修改。
(4)面向?qū)ο蠓椒ǖ目芍赜眯院?。用?hù)可以根據(jù)需要將已定義好的類(lèi)或?qū)ο筇砑拥杰浖?,或者從已有?lèi)派生出一個(gè)可以滿(mǎn)足當(dāng)前需要的類(lèi)。這個(gè)過(guò)程就像用集成電路來(lái)構(gòu)造計(jì)算機(jī)硬件一樣。
(5)面向?qū)ο蠓椒ǖ目删S護(hù)性好。面向?qū)ο蠓椒ㄔ试S用戶(hù)通過(guò)操作類(lèi)的定義和方法,很容易地對(duì)軟件做出修改。另一方面,它使軟件易于測(cè)試和調(diào)試。
2.模塊
模塊一般是以VBA聲明、語(yǔ)句和過(guò)程作為一個(gè)獨(dú)立單元的結(jié)合。每個(gè)模塊獨(dú)立保存,并對(duì)處于其中的VBA代碼進(jìn)行組織。
Access2003包含兩種基本類(lèi)型的模塊:一種是類(lèi)模塊,另一種是標(biāo)準(zhǔn)模塊。
1)類(lèi)模塊
類(lèi)模塊是指包含新對(duì)象定義的模塊。當(dāng)用戶(hù)新建一個(gè)類(lèi)的實(shí)例的同時(shí)也就創(chuàng)建了新的對(duì)象,在模塊中定義的任何過(guò)程都會(huì)變成這個(gè)對(duì)象的屬性和方法。一般地,類(lèi)模塊又可以分為以下三種。
(1)窗體模塊:指與特定的窗體相關(guān)聯(lián)的類(lèi)模塊。當(dāng)用戶(hù)向窗體對(duì)象中增加代碼時(shí),用戶(hù)將在Access數(shù)據(jù)庫(kù)中創(chuàng)建新類(lèi)。用戶(hù)為窗體所創(chuàng)建的事件處理過(guò)程是這個(gè)類(lèi)的新方法。用戶(hù)使用事件過(guò)程對(duì)窗體的行為以及用戶(hù)操作進(jìn)行響應(yīng)。
(2)報(bào)表模塊:指與特定的報(bào)表相關(guān)聯(lián)的類(lèi)模塊,包含響應(yīng)報(bào)表、報(bào)表段、頁(yè)眉和頁(yè)腳所觸發(fā)事件的代碼。對(duì)報(bào)表模塊的操作與對(duì)窗體模塊的操作類(lèi)似。
(3)獨(dú)立的類(lèi)模塊:在Access2003中,類(lèi)模塊可以不依附于窗體和報(bào)表而獨(dú)立存在。這種類(lèi)型的類(lèi)模塊可以為自定義對(duì)象創(chuàng)建定義。獨(dú)立的類(lèi)模塊列于數(shù)據(jù)庫(kù)窗口中,用戶(hù)可以方便地找到它。
2)標(biāo)準(zhǔn)模塊
標(biāo)準(zhǔn)模塊是指存放整個(gè)數(shù)據(jù)庫(kù)可用的函數(shù)和程序的模塊。它包含與任何其他對(duì)象都無(wú)關(guān)的通用過(guò)程,以及可以從數(shù)據(jù)庫(kù)的任何位置運(yùn)行的常規(guī)過(guò)程。
3)獨(dú)立的類(lèi)模塊與標(biāo)準(zhǔn)模塊的區(qū)別
獨(dú)立的類(lèi)模塊與標(biāo)準(zhǔn)模塊的主要區(qū)別在于范圍和生命周期。獨(dú)立的類(lèi)模塊沒(méi)有相關(guān)的對(duì)象,聲明的任何常量和變量都僅在代碼運(yùn)行的時(shí)候是可用的。
3.過(guò)程
一個(gè)過(guò)程是指一個(gè)VBA函數(shù)單元。過(guò)程通常被定義為子程序,在其他程序中通過(guò)名字訪(fǎng)問(wèn)。
過(guò)程可以分為兩類(lèi):子過(guò)程和函數(shù)過(guò)程。
1)子過(guò)程(Sub)
子過(guò)程是指用來(lái)執(zhí)行一個(gè)操作或多個(gè)操作,而不會(huì)返回任何值的過(guò)程。Access2003中的事件響應(yīng)模塊常常使用子過(guò)程來(lái)創(chuàng)建。
2)函數(shù)過(guò)程(Function)
函數(shù)過(guò)程簡(jiǎn)稱(chēng)為函數(shù),是指可以返回一個(gè)值的過(guò)程。這個(gè)特點(diǎn)使得用戶(hù)可以在表達(dá)式中使用它們。VBA包含很多可內(nèi)置的函數(shù),用戶(hù)可以很方便地從中調(diào)用它們。12.3.2將宏轉(zhuǎn)化為VisualBasic代碼
如果要在應(yīng)用程序中使用VisualBasic,則用戶(hù)可以將已有的宏轉(zhuǎn)換為VisualBasic代碼。如果希望在整個(gè)數(shù)據(jù)庫(kù)中都使用代碼,則用戶(hù)可以直接在“數(shù)據(jù)庫(kù)”窗口的對(duì)象“宏”中進(jìn)行轉(zhuǎn)換;如果要讓代碼、窗體、報(bào)表等數(shù)據(jù)庫(kù)對(duì)象保存在一起,則可以在相關(guān)窗體或報(bào)表的設(shè)計(jì)視圖中轉(zhuǎn)換。
1.在設(shè)計(jì)視圖中轉(zhuǎn)換
以窗體為例,將數(shù)據(jù)庫(kù)中的窗體轉(zhuǎn)換為VisualBasic代碼,這樣就可以將窗體和VisualBasic代碼保存在一起。
(1)打開(kāi)“基礎(chǔ)篇-學(xué)生成績(jī)管理系統(tǒng)”數(shù)據(jù)庫(kù),單擊“窗體”對(duì)象,選中其中的“公共課成績(jī)”窗體,然后單擊【視圖】→【設(shè)計(jì)視圖】命令,在設(shè)計(jì)視圖中打開(kāi)“公共課成績(jī)”窗體。
(2)在設(shè)計(jì)視圖中,單擊【工具】→【宏】→【將窗體的宏轉(zhuǎn)換為VisualBasic代碼】命令,彈出“轉(zhuǎn)換宏”對(duì)話(huà)框,如圖12-25所示。圖12-25“轉(zhuǎn)換宏”對(duì)話(huà)框
(3)清除第1個(gè)復(fù)選框,單擊【轉(zhuǎn)換】按鈕,Access彈出“將宏轉(zhuǎn)換到VisualBasic”消息框表示轉(zhuǎn)換結(jié)束,如圖12-26所示。
(4)單擊【確定】按鈕關(guān)閉消息框,單擊在數(shù)據(jù)窗口“對(duì)象”下的“代碼”,選中“被轉(zhuǎn)換的宏-打開(kāi)教師表”,然后單擊工具欄中的【代碼】按鈕,打開(kāi)“VisualBasic編輯器”窗口,其中含有由宏轉(zhuǎn)換的代碼,如圖12-27所示。
當(dāng)Access碰到VisualBasic代碼行中的撇號(hào)(')時(shí),將忽略該行撇號(hào)后的部分。在VisualBasic代碼行中的任何部分,用戶(hù)都可以使用撇號(hào)插入注釋。圖12-26轉(zhuǎn)換結(jié)束消息框圖12-27轉(zhuǎn)換后的VisualBasic代碼
2.從數(shù)據(jù)庫(kù)窗口轉(zhuǎn)換
從數(shù)據(jù)庫(kù)窗口進(jìn)行宏轉(zhuǎn)換時(shí),宏操作將被保存為全局模塊中的一個(gè)函數(shù),并在數(shù)據(jù)庫(kù)窗口的“模塊”對(duì)象中保存轉(zhuǎn)化的宏。從數(shù)據(jù)庫(kù)窗口中轉(zhuǎn)換的宏可供整個(gè)數(shù)據(jù)庫(kù)使用,且宏組中的每個(gè)宏不是轉(zhuǎn)換成子過(guò)程,而是轉(zhuǎn)換為不同的函數(shù)。
將在數(shù)據(jù)庫(kù)中創(chuàng)建的宏轉(zhuǎn)換為VisualBasic代碼的操作步驟如下:
(1)單擊數(shù)據(jù)庫(kù)窗口中“對(duì)象”列表中的“宏”對(duì)象,然后在右邊的列表框中選中需要進(jìn)行轉(zhuǎn)換的宏。
(2)單擊【工具】→【宏】→【將宏轉(zhuǎn)換為VisualBasic代碼】命令,彈出“轉(zhuǎn)換宏”對(duì)話(huà)框,如圖12-28所示。
(3)單擊【轉(zhuǎn)換】按鈕關(guān)閉對(duì)話(huà)框,Access將彈出“將宏轉(zhuǎn)換到VisualBasic”消息框,單擊【確定】按鈕結(jié)束轉(zhuǎn)換過(guò)程,如圖12-29所示。圖12-28“轉(zhuǎn)換宏”對(duì)話(huà)框圖12-29轉(zhuǎn)換結(jié)束消息框除了上述方法以外,用戶(hù)還可以選擇【文件】→【另存為】命令,或者用鼠標(biāo)右鍵單擊需要轉(zhuǎn)換的宏,然后在彈出的快捷菜單中選擇【另存為】命令。在彈出的“另存為”對(duì)話(huà)框中的“將宏另存為”文本框中輸入新的模塊名,并從“保存類(lèi)型”文本框中選擇“模塊”選項(xiàng),然后單擊【確定】按鈕關(guān)閉對(duì)話(huà)框,這時(shí)Access彈出相應(yīng)的“轉(zhuǎn)換宏”對(duì)話(huà)框。12.3.3借助VisualBasic實(shí)現(xiàn)宏功能
雖然宏很好用,但它的運(yùn)行速度比較慢,也不能直接運(yùn)行很多Windows程序,尤其是不能自定義某些函數(shù)。這樣當(dāng)需要對(duì)某些數(shù)據(jù)進(jìn)行特殊分析時(shí)也就無(wú)能為力了。
由于宏具有這些局限性,所以Access為用戶(hù)提供了VisualBasic語(yǔ)言編寫(xiě)程序的能力,從而實(shí)現(xiàn)一些特殊的功能,然后將這些代碼編譯成擁有特定功能的模塊,以便于調(diào)用。
1.瀏覽“VisualBasic編輯器”窗口
既然要編寫(xiě)VisualBasic程序,就需要先了解VisualBasic的開(kāi)發(fā)環(huán)境。VisualBasic的開(kāi)發(fā)環(huán)境也就是“VisualBasic編輯器”窗口。
用戶(hù)可以單擊數(shù)據(jù)庫(kù)窗口“對(duì)象”列表中的“模塊”對(duì)象,然后單擊工具欄中的【新建】按鈕,打開(kāi)“VisualBasic編輯器”窗口,如圖12-30所示。圖12-30“VisualBasic編輯器”窗口
“VisualBasic編輯器”窗口主要包括主窗口、模塊代碼窗口、工程資源管理器和模塊屬性窗口等四部分。所有的VisualBasic程序都是在模塊代碼窗口中編寫(xiě)的。
模塊代碼窗口用來(lái)輸入“模塊”每一步的程序代碼,工程資源管理器用來(lái)顯示該數(shù)據(jù)庫(kù)中所有的“模塊”對(duì)象。當(dāng)用戶(hù)單擊這個(gè)窗口中的任一“模塊”選項(xiàng)時(shí),就會(huì)在模塊代碼窗口中顯示該模塊的VisualBasic程序代碼,同時(shí)“模塊屬性”窗口中就可以顯示當(dāng)前選定的“模塊”所具有的各種屬性。在VisualBasic中,由于在編寫(xiě)代碼的過(guò)程中會(huì)出現(xiàn)各種難以預(yù)料的問(wèn)題或錯(cuò)誤,所以編寫(xiě)的程序很難一次通過(guò)。這時(shí)就需要一個(gè)專(zhuān)用的調(diào)試工具快速查找程序中的問(wèn)題,以便消除代碼中的錯(cuò)誤。
“VisualBasic編輯器”中的【本地窗口】、【立即窗口】和【監(jiān)視窗口】命令就是專(zhuān)門(mén)用來(lái)調(diào)試VisualBasic程序的。用戶(hù)可以在“VisualBasic編輯器”窗口中選擇【視圖】→【本地窗口】(【立即窗口】或【監(jiān)視窗口】)命令打開(kāi)本地窗口(立即窗口或監(jiān)視窗口)。
2.編寫(xiě)VisualBasic代碼
下面介紹如何在“VisualBasic編輯器”中編寫(xiě)代碼來(lái)實(shí)現(xiàn)特定功能。用戶(hù)可以利用Access提供的宏設(shè)計(jì)視圖窗口創(chuàng)建一個(gè)消息框,也可以利用編寫(xiě)VisualBasic代碼的方法實(shí)現(xiàn)上述功能。
(1)在“VisualBasic編輯器”窗口中,單擊【插入】→【模塊】命令添加一個(gè)模塊,然后再單擊【插入】→【過(guò)程】菜單命令,或單擊工具欄上的【插入過(guò)程】按鈕,打開(kāi)“添加過(guò)程”對(duì)話(huà)框,如圖12-31所示。在“添加過(guò)程”對(duì)話(huà)框中輸入過(guò)程名稱(chēng)并選擇過(guò)程的類(lèi)型和作用范圍,同時(shí)還可以指定過(guò)程中使用的變量在退出過(guò)程后是否保持其值不變。如果用戶(hù)選擇“把所有局部變量聲明為靜態(tài)變量”復(fù)選框,則在過(guò)程中VisualBasic自動(dòng)在局部變量前面添加Static關(guān)鍵字。過(guò)程定義完畢后,單擊【確定】按鈕即可。
(2)切換到“VisualBasic編輯器”的代碼窗口,上方右側(cè)的文本框中顯示的是剛才添加的過(guò)程名,而在下方的空白區(qū)域只給出新添加的兩行代碼,該過(guò)程用到的所有代碼都將在這兩行之間進(jìn)行編寫(xiě),如圖12-32所示。
(3)在圖12-32所示的代碼窗口中添加Function…EndFunction之間的VisualBasic語(yǔ)句。圖12-31“添加過(guò)程”對(duì)話(huà)框圖12-32模塊代碼窗口
(4)單擊【保存】按鈕保存代碼,并給模塊命名,如圖12-33所示。關(guān)閉“VisualBasic編輯器”窗口,切換到“數(shù)據(jù)庫(kù)”窗口,剛才保存的模塊的名稱(chēng)將出現(xiàn)在“模塊1”對(duì)象列表框中。
(5)單擊數(shù)據(jù)庫(kù)窗口“對(duì)象”列表中的“窗體”對(duì)象,在右邊的列
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度產(chǎn)業(yè)園租賃及產(chǎn)業(yè)孵化基地建設(shè)合同4篇
- 2025年度拆除工程風(fēng)險(xiǎn)評(píng)估分包合同示范文本4篇
- 2025年LED路燈節(jié)能升級(jí)項(xiàng)目購(gòu)銷(xiāo)及維護(hù)合同3篇
- 2025年度商業(yè)街租賃合同標(biāo)準(zhǔn)范本4篇
- 2025年度彩鋼房拆除與裝配式建筑推廣合同范本3篇
- 2025年度廠房建設(shè)項(xiàng)目環(huán)境影響評(píng)價(jià)合同范本4篇
- 2024版招商引資居間合同協(xié)議書(shū)范本
- 2025年度電子游戲角色插畫(huà)開(kāi)發(fā)合同4篇
- 2025年度生物醫(yī)藥產(chǎn)業(yè)項(xiàng)目合作協(xié)議范本4篇
- 資產(chǎn)評(píng)估服務(wù)房屋征收項(xiàng)目測(cè)繪實(shí)施方案
- 2025年經(jīng)濟(jì)形勢(shì)會(huì)議講話(huà)報(bào)告
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫(xiě)表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實(shí)踐與挑戰(zhàn)
- 住宅樓安全性檢測(cè)鑒定方案
評(píng)論
0/150
提交評(píng)論