-
- 素材大小:
- 1.27 MB
- 素材授權(quán):
- 免費(fèi)下載
- 素材格式:
- .ppt
- 素材上傳:
- ppt
- 上傳時(shí)間:
- 2016-05-03
- 素材編號(hào):
- 52009
- 素材類別:
- 培訓(xùn)教程PPT
-
素材預(yù)覽
這是一個(gè)關(guān)于access培訓(xùn)基礎(chǔ)教程PPT(部分ppt內(nèi)容已做更新升級(jí)),主要介紹了了解數(shù)據(jù)與數(shù)據(jù)處理的概念、數(shù)據(jù)管理發(fā)展的幾個(gè)階段、理解數(shù)據(jù)庫(kù)系統(tǒng)中的基本概念等內(nèi)容。培訓(xùn)是給新員工或現(xiàn)有員工傳授其完成本職工作所必需的正確思維認(rèn)知、基本知識(shí)和技能的過程。是一種有組織的知識(shí)傳遞、技能傳遞、標(biāo)準(zhǔn)傳遞、信息傳遞、管理訓(xùn)誡行為。其中以技能傳遞為主,側(cè)重上崗前進(jìn)行。為了達(dá)到統(tǒng)一的科學(xué)技術(shù)規(guī)范、標(biāo)準(zhǔn)化作業(yè),通過目標(biāo)規(guī)劃設(shè)定知識(shí)和信息傳遞、技能熟練演練、作業(yè)達(dá)成評(píng)測(cè)、結(jié)果交流公告等現(xiàn)代信息化的流程,讓員工通過一定的教育訓(xùn)練技術(shù)手段,達(dá)到預(yù)期的水平,提高目標(biāo)。目前國(guó)內(nèi)培訓(xùn)以技能傳遞為主,時(shí)間在側(cè)重上崗前。
access培訓(xùn)基礎(chǔ)教程PPT是由紅軟PPT免費(fèi)下載網(wǎng)推薦的一款培訓(xùn)教程PPT類型的PowerPoint.
第一章 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
1、學(xué)習(xí)目標(biāo)與要求
通過本章學(xué)習(xí),讀者應(yīng)達(dá)到以下要求:
1.了解數(shù)據(jù)與數(shù)據(jù)處理的概念、數(shù)據(jù)管理發(fā)展的幾個(gè)階段
2.理解數(shù)據(jù)庫(kù)系統(tǒng)中的基本概念,理解數(shù)據(jù)模型的分類及數(shù)據(jù)模型中的實(shí)體概念以及實(shí)體之間的關(guān)系
3.掌握關(guān)系數(shù)據(jù)庫(kù)中關(guān)系、元組、屬性、域、關(guān)鍵字等術(shù)語、掌握常見關(guān)系運(yùn)算
4.初識(shí)Access
信息
信息與能源、物質(zhì)并列為人類社會(huì)活動(dòng)的三大要素,我們所在的時(shí)代被稱為信息時(shí)代。
信息是對(duì)現(xiàn)實(shí)世界中事物的存在特征、運(yùn)動(dòng)形態(tài)以及不同事物間的相互聯(lián)系等多種屬性的描述,通過抽象形成概念。這些概念能被人們認(rèn)識(shí)、理解,被表達(dá)、加工、推理和傳播,以達(dá)到認(rèn)識(shí)世界和改造世界的目的。因此,信息是關(guān)于事物以及事物間聯(lián)系的知識(shí)。
信息一般分三類:事物的靜態(tài)屬性信息、動(dòng)態(tài)屬性信息、事物間的內(nèi)在聯(lián)系信息。
目前人們使用的信息表達(dá)方法,主要包括:數(shù)字、文字和語言、公式、圖形和曲線、表格、多媒體(包含圖像、聲音、視頻等)、超鏈接等。
信息具有可共享性、易存儲(chǔ)性、可壓縮性、易傳播性等。
數(shù)據(jù)與數(shù)據(jù)處理系統(tǒng)
表達(dá)信息的符號(hào)記錄就是數(shù)據(jù)。數(shù)據(jù)是信息的載體,信息是數(shù)據(jù)的內(nèi)涵。計(jì)算機(jī)是目前最普遍使用和最重要的信息處理工具。計(jì)算機(jī)是處理數(shù)據(jù)的。作為數(shù)據(jù)的符號(hào)在計(jì)算機(jī)中都轉(zhuǎn)換成二進(jìn)制符號(hào)“0”和“1”保存和處理
為實(shí)現(xiàn)特定數(shù)據(jù)處理目標(biāo)所需要的所有各種資源的總和稱為數(shù)據(jù)處理系統(tǒng)。一般情況下,主要指硬件設(shè)備、軟件環(huán)境與開發(fā)工具、應(yīng)用程序、數(shù)據(jù)集合、相關(guān)文檔等。
數(shù)據(jù)處理系統(tǒng)的開發(fā)是指在選定的硬件、軟件環(huán)境下,設(shè)計(jì)實(shí)現(xiàn)特定數(shù)據(jù)處理目標(biāo)的軟件系統(tǒng)的過程。數(shù)據(jù)庫(kù)技術(shù)是數(shù)據(jù)處理系統(tǒng)的核心技術(shù)。
計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展階段
1、人工管理
這一時(shí)期的計(jì)算機(jī)數(shù)據(jù)管理的特點(diǎn)是:數(shù)據(jù)與程序不具有獨(dú)立性,一組數(shù)據(jù)對(duì)應(yīng)一組程序,數(shù)據(jù)不能長(zhǎng)期保存,程序運(yùn)行結(jié)束后就退出計(jì)算機(jī)系統(tǒng)一個(gè)程序中的數(shù)據(jù)不能被其他程序使用,因此,程序與程序之間存在大量的重復(fù)數(shù)據(jù),即數(shù)據(jù)冗余。
2文件系統(tǒng)
程序與數(shù)據(jù)有了一定的獨(dú)立性,程序與數(shù)據(jù)分開存儲(chǔ),數(shù)據(jù)文件可以長(zhǎng)期保存在外存儲(chǔ)器上被多次存取。程序只需用文件名就可以訪問數(shù)據(jù)文件
3、數(shù)據(jù)庫(kù)系統(tǒng)
提高了數(shù)據(jù)的共享性,使多個(gè)用戶能夠同時(shí)訪問數(shù)據(jù)庫(kù);中的數(shù)據(jù),減少數(shù)據(jù)的冗余,提高數(shù)據(jù)的一致性和完整性;提高了數(shù)據(jù)和應(yīng)用程序的獨(dú)立性,減少了應(yīng)用程序的開發(fā)和維護(hù)代價(jià)
為數(shù)據(jù)庫(kù)的建立、使用和維護(hù)而配置的軟件為數(shù)據(jù)庫(kù)管理系統(tǒng)(Data Base Management System DBMS)
4、分布式數(shù)據(jù)庫(kù)系統(tǒng)
即客戶機(jī)/服務(wù)器(Client/Server,C/S)系統(tǒng)結(jié)構(gòu)。C/S結(jié)構(gòu)將應(yīng)用程序根據(jù)應(yīng)用情況分布到客戶的計(jì)算機(jī)和服務(wù)器上,將數(shù)據(jù)庫(kù)管理系統(tǒng)和數(shù)據(jù)庫(kù)放置到服務(wù)器上,客戶端的程序使用開放數(shù)據(jù)庫(kù)連接(Open Data Base Connectivity,ODBC)標(biāo)準(zhǔn)協(xié)議通過網(wǎng)絡(luò)訪問遠(yuǎn)端的數(shù)據(jù)庫(kù)。
5、面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)
相關(guān)真題:數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段中 沒有專門的軟件對(duì)數(shù)據(jù)進(jìn)行管理 a人工管理階段 b 文件系統(tǒng)階段 c 數(shù)據(jù)庫(kù)階段
數(shù)據(jù)庫(kù)系統(tǒng)的基本概念
1.數(shù)據(jù)
數(shù)據(jù)指描述事物的符號(hào)記錄。在計(jì)算機(jī)中文字、圖形、圖像、聲音等都是數(shù)據(jù),學(xué)生的檔案、教師的基本信息、貨物的運(yùn)輸情況也都是數(shù)據(jù)
2.數(shù)據(jù)庫(kù)
即存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)設(shè)備、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合,它不僅包括描述事物的數(shù)據(jù)本身,也包括相關(guān)事物之間的關(guān)系。比如一個(gè)具有姓名地址電話等信息的通訊錄,就是一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù),我們既可以添加信息,也可以更改信息。
3.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)
即指系統(tǒng)開發(fā)人員利用數(shù)據(jù)庫(kù)系統(tǒng)資源開發(fā)的面向某一類實(shí)際應(yīng)用的軟件系統(tǒng)。
4.數(shù)據(jù)庫(kù)管理系統(tǒng)
即(DataBase Management System,DBMS),是用戶和操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,是為了數(shù)據(jù)庫(kù)的建立、使用和維護(hù)而配置的軟件。
5.數(shù)據(jù)庫(kù)系統(tǒng)
即(DataBase System ,DBS),是指引進(jìn)數(shù)據(jù)庫(kù)技術(shù)后的計(jì)算機(jī)系統(tǒng),層次如下
數(shù)據(jù)模型
數(shù)據(jù)庫(kù)需要根據(jù)應(yīng)用系統(tǒng)中數(shù)據(jù)的性質(zhì)、內(nèi)在聯(lián)系,按照管理的要求設(shè)計(jì)和組織。數(shù)據(jù)模型就是從現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。
一、實(shí)體描述
1.實(shí)體
客觀存在并相互區(qū)別的事物成為實(shí)體,可以是實(shí)際的事物,也可以是抽象的事物如學(xué)生、課程、讀者都是實(shí)際的事物,而學(xué)生選課、借閱圖書等都是抽象的事物。
2.實(shí)體的屬性
描述實(shí)體的特性即為屬性,如學(xué)生實(shí)體用學(xué)號(hào),姓名,性別,出生年月,入學(xué)時(shí)間等屬性來描述,圖書實(shí)體屬性用圖書編號(hào)、分類號(hào)、書名、作者、單價(jià)等多個(gè)屬性來描述。
3.實(shí)體間的聯(lián)系及分類
實(shí)體之間的對(duì)應(yīng)關(guān)系即為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)系,實(shí)體聯(lián)系分為以下三種
a、一對(duì)一關(guān)系;
b、一對(duì)多關(guān)系;
c、多對(duì)多的關(guān)系
舉例
1.如果表A中的一條記錄與表B中的多條記錄匹配,且表B中的一條記錄與表A中的一條記錄匹配,則表A與表B的關(guān)系是
2.如果一個(gè)教師可以講授多門課程,一門課程可以由多個(gè)教師來講授,則教師與課程存在的聯(lián)系是
3.假設(shè)數(shù)據(jù)表A與表B建立了一對(duì)多的關(guān)系,表A為“多”的一方則下述正確的是
a、表B中的一個(gè)字段能與表A中的多個(gè)字段匹配
b、表B中的一個(gè)記錄能與表A中的多個(gè)記錄匹配
c、表A中的一個(gè)記錄能與表B中的多個(gè)記錄匹配
d、表A中的一個(gè)字段能與表B中的多個(gè)字段匹配
4、在人事管理數(shù)據(jù)庫(kù)中工資和職工的關(guān)系是
5、下列實(shí)體聯(lián)系中,屬于多對(duì)多的聯(lián)系是
a.學(xué)生與課程 b.學(xué)校與校長(zhǎng) c.住院的病人與病床 d.工資與職工
6、在現(xiàn)實(shí)世界中,每個(gè)人都有自己的出生地,實(shí)體“人”與實(shí)體“出生地”之間的聯(lián)系是
7、在學(xué)校中,教師的“職稱”與教師個(gè)人“職工號(hào)”的聯(lián)系是
關(guān)系數(shù)據(jù)庫(kù)
一個(gè)關(guān)系的邏輯結(jié)構(gòu)就是一個(gè)二維表,用這種二維表的形式表示實(shí)體和實(shí)體聯(lián)系的數(shù)據(jù)模型為關(guān)系數(shù)據(jù)模型。
1.關(guān)系: 一個(gè)關(guān)系就是一個(gè)二維表
2.元組: 在二維表中,元組也稱記錄
3.屬性: Access表中字段名即為屬性
4.域 : 屬性的取值范圍
5.關(guān)鍵字:能夠唯一識(shí)別一條記錄的屬性或?qū)傩缘慕M合
6.外部關(guān)鍵字:如果表中的一個(gè)字段不是本表的主關(guān)鍵字段,而是另外一個(gè)表的主關(guān)鍵字或候選關(guān)鍵字這個(gè)字段就為外部關(guān)鍵字
關(guān)系運(yùn)算
一、傳統(tǒng)的集合運(yùn)算
1.并 2.差 3.交
二、專門的關(guān)系運(yùn)算
1.選擇運(yùn)算
從關(guān)系中找出滿足給定條件的元組的操作即為選擇運(yùn)算。即找出給定邏輯表達(dá)式為真的記錄。
2.投影運(yùn)算
從關(guān)系模型中指定若干屬性(字段)組成新的關(guān)系即為投影
3.聯(lián)接運(yùn)算
將兩個(gè)或者更多的關(guān)系模式(二維表)拼接成一個(gè)更寬的關(guān)系模式(表),生成的關(guān)系(表)包含滿足聯(lián)接條件的元組(記錄)
4.自然連接
聯(lián)接運(yùn)算中,按照字段值對(duì)應(yīng)相等為條件進(jìn)行的聯(lián)接操作為等值聯(lián)接,自然連接是去除重復(fù)屬性的等值聯(lián)接
舉例
1.設(shè)關(guān)系R和關(guān)系S的元數(shù)分別是3和4,元組數(shù)分別是5和6,則R和S自然連接所得到的關(guān)系,其元數(shù)和元組數(shù)分別為
a.7和11 b.12和30 c.小于7和小于30 d.等于7和小于等于30
2.在關(guān)系運(yùn)算中,選擇運(yùn)算的含義是
a在基本表中選擇滿足條件的記錄組成新的關(guān)系
b在基本表中選擇需要的字段組成一個(gè)新的關(guān)系
c在基本表中選擇滿足條件的記錄和屬性組成新的關(guān)系
d以上均正確
3.關(guān)于二維表說法錯(cuò)誤的是
a二維表中的列成為屬性
b屬性值的取值范圍稱為值域
c二維表中的行稱為元組
d屬性的集合稱為關(guān)系
4.常見的數(shù)據(jù)模型有三種,它們是層次、關(guān)系、網(wǎng)狀
5.在關(guān)系數(shù)據(jù)模型中,一個(gè)關(guān)系就是一個(gè)二維表
6.用樹形結(jié)構(gòu)表示實(shí)體之間的聯(lián)系的模型是層次模型
7在教室表中,如果要找到職稱是“教授”的教師,所采用的關(guān)系運(yùn)算是 a選擇 b投影 c聯(lián)接 d自然聯(lián)接
第二章 數(shù)據(jù)庫(kù)與表
2.1建立數(shù)據(jù)庫(kù)
a 創(chuàng)建空數(shù)據(jù)庫(kù)
b 使用“向?qū)?rdquo;創(chuàng)建數(shù)據(jù)庫(kù)
2.2建立表
2.2.1表的組成
注:字段命名規(guī)則:1.長(zhǎng)度為1-64個(gè)字符;2.可以包含數(shù)字、字母、漢字、空格等字符,但不能以空格開頭;3.不能包含句號(hào)、感嘆號(hào)、方括號(hào)及單引號(hào)
數(shù)據(jù)類型
Access的數(shù)據(jù)類型共有10種包括
1.文本型
可以用來保存文本或數(shù)字(此數(shù)字不再
需要計(jì)算),默認(rèn)大小為50個(gè)字符,最大
255個(gè),超過255個(gè),可使用備注型
2.備注型
允許存儲(chǔ)最大64000個(gè)字符
3.數(shù)字型
用來存儲(chǔ)算術(shù)運(yùn)算的數(shù)字?jǐn)?shù)據(jù)
4.日期型 5貨幣型
6.自動(dòng)編號(hào)
自動(dòng)編號(hào)一旦被指定,就會(huì)永久和記錄連接,如果刪除了某一 記錄,其他記錄自動(dòng)編號(hào)不會(huì)重新編號(hào),當(dāng)插入記錄時(shí),不再使用已刪除的自動(dòng)編號(hào)的數(shù)值而是遞增重新賦值,對(duì)自動(dòng)編號(hào),人為不能干預(yù)。
7.是/否型(邏輯型或布爾型)
域值只有兩種情況:Yes/No、True/False、On/Off,前者值為-1,后者為0
8.OLE對(duì)象
OLE對(duì)象是指由OLE(Object Linking and Embedding )協(xié)議程序創(chuàng)建的對(duì)象,如Word文檔,Excel表格、圖像、聲音或其他二進(jìn)制數(shù)據(jù)。
該類型是指字段允許單獨(dú)地鏈接或者嵌入ole對(duì)象 ,如果是嵌入,OLE對(duì)象存放在數(shù)據(jù)庫(kù)中,如是鏈接,鏈接對(duì)象只存放在最初的文件中。
9.超級(jí)鏈接
10.查閱向?qū)?span style="display:none">GRB紅軟基地
在進(jìn)行數(shù)據(jù)輸入的時(shí)候,如果希望通過一個(gè)列表或組合框選擇所需的數(shù)據(jù)以便將其輸入到字段中,而不是手工輸入,可使用該類型。
2.2.2建立表結(jié)構(gòu)
1、三種方法
a.使用數(shù)據(jù)表視圖
b.使用設(shè)計(jì)視圖
c.使用表向?qū)?span style="display:none">GRB紅軟基地
2、定義主鍵
a.什么是主鍵
主鍵也稱為主關(guān)鍵字,是表中能夠唯一識(shí)別記錄的一個(gè)字段或多個(gè)字段的組合。只有為表定義了主鍵,才能與數(shù)據(jù)庫(kù)中的其他表建立關(guān)系。
b.主鍵的類型
c.主鍵的建立方法
2.2.3字段屬性
1.字段大小
2.格式
3.輸入掩碼
例如:
掩碼 允許值顯示
(000)0000-0000 (010)5448-1165
(999)9999-9999! (010)6566-5458
( )4695-5444
(000)AAAA-AAAA (201)5498-drgg
#999 -20
2000
2.3維護(hù)表
2.3.1打開、關(guān)閉表
2.3.2修改表的結(jié)構(gòu)
主要有添加、刪除、移動(dòng)字段位置
2.3.3編輯表
2.3.4調(diào)整表的外觀
主要有改變字段次序、字段的顯示高度寬度、隱藏列、凍結(jié)列、數(shù)據(jù)表格式、字體顯示。
2.4表操作
2.4.1查找數(shù)據(jù)
注意通配符的使用方法
* :任意字符 - 通配范圍內(nèi)的任意單個(gè)字符
? 任意單個(gè)字符 ! 在不方括號(hào)內(nèi)的任意單個(gè)字符
[ ] 通配括號(hào)內(nèi)的任意單個(gè)字符 # 任何單個(gè)數(shù)字字符
舉例:
wh* 可以找到who、what等,不能找wash、with
b?ll 可以找ball 、boll 不能找beall、blle
b[ea]ll 可以找bell 、ball 不能找bill
b[!ea]ll 可以找bill bull 不能找bell、ball
b[a-c]ll 可找ball bbll bcll 不能找bdll
1#3 可找103 113 123等
如果要查詢空值,可使用null
2.4.2替換數(shù)據(jù)
2.4.3排列記錄
數(shù)據(jù)類型不同排序的規(guī)則不同(英文、中文、數(shù)字、日期時(shí)間)
特例:
現(xiàn)有文本字符串“5”、“6”,“12”,按升序排序,結(jié)果為
2.4.4篩選記錄
a.按內(nèi)容篩選 b.按窗體篩選 c按篩選目標(biāo)篩選 d.高級(jí)篩選
2.4.5 編輯表之間的關(guān)系
1、定義關(guān)系的條件
a.如果僅有一個(gè)相關(guān)字段是主鍵或具有唯一索引,則建立一對(duì)多的關(guān)系
b.如果兩個(gè)相關(guān)字段都是主鍵或唯一索引,則創(chuàng)建一對(duì)一的關(guān)系
c.多對(duì)多的關(guān)系實(shí)際上是某兩個(gè)表與第三個(gè)表的兩個(gè)一對(duì)多關(guān)系,第三個(gè)表的主鍵包含兩個(gè)字段,分別是前兩個(gè)表的外鍵
2、參照完整性
如果設(shè)置了參照完整性,當(dāng)主表中沒有相關(guān)記錄時(shí),就不能將記錄添加到相關(guān)表中,也不能在相關(guān)表中存在匹配的記錄時(shí)刪除主表中的記錄,更不能在相關(guān)表中有相關(guān)記錄時(shí)更改主表中的主鍵值。
設(shè)置參照完整性條件:
a.主表的匹配字段是主鍵或具有唯一索引
b.相關(guān)字段具有相同的數(shù)據(jù)類型
c.兩個(gè)表都屬于同一個(gè)access數(shù)據(jù)庫(kù)
1.要求主表中沒有相關(guān)記錄時(shí)就不能將記錄添加到相關(guān)表中,則應(yīng)該在關(guān)系中設(shè)置()
2.Access中的參照完整性規(guī)則不包括()
刪除規(guī)則 插入規(guī)則 查詢規(guī)則 更新規(guī)則
3,對(duì)數(shù)據(jù)進(jìn)行篩選操作,結(jié)果是()
a顯示滿足條件的記錄,并將這些記錄保持到一個(gè)新表
b 只顯示滿足條件的記錄,將不滿足條件的記錄刪除
c將滿足條件的記錄和不滿足條件的記錄分為兩個(gè)表顯示
d 只顯示滿足條件的記錄,不滿足條件的記錄被隱藏
4關(guān)于輸入掩碼的敘述,正確的是
a定義字段的輸入掩碼時(shí),既可以使用輸入掩碼向?qū),也可以直接使用字?span style="display:none">GRB紅軟基地
b 定義輸入掩碼,是為了設(shè)置輸入時(shí)以密碼顯示
c輸入掩碼中的字符“A”表示可以選擇輸入數(shù)字0-9
d直接使用字符定義輸入掩碼時(shí)不能將字符組合起來
5數(shù)據(jù)類型是 a字段的另一種說法 b決定字段能包含那類數(shù)據(jù)的設(shè)置 c一類數(shù)據(jù)庫(kù)應(yīng)用程序 d一類用來描述access表向?qū)闹羞x擇的字段名稱
6在access中,在要查找的條件中設(shè)置與任意一個(gè)數(shù)字字符匹配的條件,可使用的通配符是()
7在Access數(shù)據(jù)庫(kù)的表設(shè)計(jì)視圖中,不能進(jìn)行的操作是
修改字段類型 設(shè)置索引 增加字段 刪除記錄
8在數(shù)據(jù)表視圖中,不能
修改字段的類型 修改字段的名稱 刪除一個(gè)字段 刪除一條記錄
9下列正確的是
a 在access表中,不能對(duì)備注型字段進(jìn)行格式屬性設(shè)置
b 創(chuàng)建表之間的關(guān)系時(shí),應(yīng)關(guān)閉所有打開的表
c若刪除表中含有自動(dòng)編號(hào)型字段的一個(gè)記錄,access 不會(huì)對(duì)表中自動(dòng)編號(hào)字段重新編號(hào)
d可在access 表的設(shè)計(jì)視圖“格式”列中對(duì)字段進(jìn)行具體的說明
10某文本型字段的值只能是字母且不允許超過4個(gè),則可將該字段的輸入掩碼定義為
AAAA &&&& LLLL ####
11“是/否”數(shù)據(jù)類型常稱為
真假型 對(duì)錯(cuò)型 I/O型 布爾型
12能夠使用“輸入掩碼向?qū)?rdquo;創(chuàng)建輸入掩碼的字段類型是
13access中,如果不想顯示數(shù)據(jù)表中的某些字段,可以使用的命令是
隱藏 刪除 凍結(jié) 篩選
相關(guān)機(jī)試題
2
3
第三章 查詢
3.1查詢的基本知識(shí)
3.1.1選擇視圖的方法
a 使用視圖工具
b使用菜單
c使用工具欄上工具按鈕
3.1.2查詢的分類
a 選擇查詢 b參數(shù)查詢 c交叉表查詢 d操作查詢 e SQL查詢
3.2查詢操作
3.2.1選擇查詢
a 創(chuàng)建不帶條件的查詢
b 創(chuàng)建帶條件的查詢
常用的一些運(yùn)算符
算術(shù)運(yùn)算:+ - * / \ mod ^
關(guān)系運(yùn)算 = > < >= <=
邏輯運(yùn)算 and or not
特殊運(yùn)算 in between
通配符 * ? Like is null is not null
c 創(chuàng)建帶“與”或者“或”條件的查詢
查詢中表達(dá)式實(shí)例
Between #1998-8-8# And #1998-9-9#
Like (“張*”) Like “*小*” Like (“??”)
In(“回族”,”漢族”)
在選擇查詢中實(shí)現(xiàn)計(jì)算
在選擇查詢中,除可實(shí)現(xiàn)有圖中的運(yùn)算外,也可
實(shí)現(xiàn)自定義運(yùn)算。
實(shí)例:
1.以學(xué)生表為數(shù)據(jù)源,建立一個(gè)統(tǒng)計(jì)各班人數(shù)的查詢
2.查詢各班期中成績(jī)的平均值
3.計(jì)算期末成績(jī),期末成績(jī)=(期中成績(jī)+期末成績(jī)+平時(shí)成績(jī))/3
4.以學(xué)生表、成績(jī)表為數(shù)據(jù)源,統(tǒng)計(jì)各班成績(jī)表中的最好成績(jī)。
3.2.2參數(shù)查詢
參數(shù)查詢也叫人機(jī)對(duì)話查詢,當(dāng)運(yùn)行查詢時(shí),根據(jù)設(shè)計(jì)好的提示信息,輸入?yún)?shù),從而得到查詢結(jié)果。
實(shí)例:
1.建立一個(gè)參數(shù)查詢,根據(jù)輸入性別進(jìn)行查詢,要求輸出全部字段。
2.建立一個(gè)帶有性別及民族兩個(gè)條件的參數(shù)查詢。
3.2.3交叉表查詢
交叉表可以實(shí)現(xiàn)表格的匯總計(jì)算,并將結(jié)果顯示在行或列交叉的單元格中
實(shí)例:
1.以學(xué)生表為數(shù)據(jù)源,產(chǎn)生“班號(hào)”(行)與“性別”(列)的交叉表查詢。
3.2.4操作查詢
操作查詢也叫動(dòng)作查詢,操作查詢可以修改數(shù)據(jù)源。包括生成表查詢、更新查詢、刪除查詢和追加查詢。
a、生成表查詢
可以實(shí)現(xiàn)由一個(gè)或多個(gè)數(shù)據(jù)源提取數(shù)據(jù)而生成一個(gè)新的數(shù)據(jù)源
實(shí)例:
由學(xué)生表和成績(jī)表為數(shù)據(jù)源生成一個(gè)新的表。
b、更新查詢
可是更新操作表的數(shù)據(jù),在實(shí)現(xiàn)更新過程中,還可以 對(duì)表中的字段進(jìn)行運(yùn)算。
實(shí)例:將學(xué)生表中的政治面貌由團(tuán)員更新為黨員
c、追加查詢
是指將表中符合一定條件的某些記錄追加到另外一個(gè)表尾部的操作,也叫表見操作。
實(shí)例:
建立一個(gè)政治面貌為黨員的表,命名為“黨員表”,再將學(xué)生表中政治面貌為團(tuán)員的學(xué)生記錄追加到黨員表中。
d、刪除查詢
可以從一個(gè)或多個(gè)表中產(chǎn)出一組記錄,將刪除整個(gè)記錄,而不是只刪除記錄中所選的字段。
實(shí)例:
建立一個(gè)刪除查詢,刪除“是否代培”為“-1”的記錄
相關(guān)上機(jī)真題實(shí)例:
1.
2
3
4
5
6
7
8、
10
3.2.5 SQL命令查詢
SQL查詢是利用SQL命令創(chuàng)建的查詢,可以用結(jié)構(gòu)化查詢語言來查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)。在查詢?cè)O(shè)計(jì)視圖中創(chuàng)建查詢時(shí),Access在后臺(tái)建立了等效的SQL語句。
SQL查詢的特殊方式包括聯(lián)合查詢、傳遞查詢、數(shù)據(jù)定義查詢和子查詢。
1 SQL基本命令
SQL語句格式
SELECT [DISTINCT (消除重復(fù)值)] <字段列表>|<表達(dá)式>(*)
[AS <代替內(nèi)容>] FROM <表列表> [WHERE <條件>]
[GROUP BY <分組條件> having <組選項(xiàng)條件>]
[ORDER BY <排序條件>]
2 SQL 基本操作
SQL設(shè)計(jì)視圖的打開方式
a、右鍵 b菜單
3 單表查詢
實(shí)例:
1在成績(jī)表中,使用SQL計(jì)算:總評(píng)成績(jī)=期中成績(jī)*0.3+期末成績(jī)*0.6+平時(shí)成績(jī)*0.1
select 學(xué)號(hào),期中成績(jī)*0.3+期末成績(jī)*0.6+平時(shí)成績(jī)*0.1 as 總評(píng)成績(jī) FROM 成績(jī)表
常用數(shù)據(jù)類型的條件查詢舉例:
selece * from student where 性別=“女”
selece * from student where 平時(shí)成績(jī)>=80
selece * from student where 是否代培=-1
selece * from student where 出生年月>=#1999-9-9#
selece * from student where 民族 IN(“漢族”,”回族”)
selece * from student where 年齡 between 21 and 24
selece * from student where 年齡 is null
selece * from student where 年齡<>null
selece * from student where 姓名 like ”*劉*”
4 創(chuàng)建SQL聯(lián)合查詢
聯(lián)合查詢可以將兩個(gè)或者更多表或者查詢中的字段合并到查詢結(jié)果中的一個(gè)字段中,聯(lián)合查詢包括:等值查詢、自然連接、非等值查詢、自身連接、外連接、復(fù)合條件連接查詢。
(1) 等值聯(lián)接與非等值連接查詢
select 學(xué)生表.* ,成績(jī)表.* from 學(xué)生表,成績(jī)表 where 學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)
(2) 自然連接
(3) 自身連接(本表連接)
查詢與姓“李”的同籍貫的學(xué)生
select distinct s1.學(xué)號(hào),s1.姓名 from 學(xué)生表 s1,學(xué)生表 s2 where s1.籍貫=s2.籍貫 and s2.姓名 like"劉*“
(4) 復(fù)合條件連接
SELECT 學(xué)生.姓名, 學(xué)生.學(xué)號(hào) FROM 學(xué)生,成績(jī) WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) and (成績(jī).課程號(hào))="1" AND 成績(jī).成績(jī))>71
(5) 嵌套查詢
查詢與姓“李”的同籍貫的學(xué)生
SELECT 姓名,籍貫 from 學(xué)生表 where 籍貫 in(select 籍貫 from 學(xué)生表 where 姓名 like "*劉*")
查詢選修了101號(hào)課程的學(xué)生
select 姓名,成績(jī)表.學(xué)生編號(hào) from 成績(jī)表,學(xué)生表 where 成績(jī)表.學(xué)生編號(hào)=學(xué)生表.學(xué)號(hào) and 課程號(hào)="101“
查詢沒有選修101號(hào)課程的學(xué)生
select 姓名 from 學(xué)生表 where not exists (select * from 成績(jī)表 where 成績(jī)表.學(xué)生編號(hào)=學(xué)生表.學(xué)號(hào) and 課程號(hào)="101")
查詢選修了全部課程的學(xué)生
SELECT 姓名 from 學(xué)生表 where not exists (select * from 成績(jī)表 where not exists (select * from 成績(jī)表,課程表 where 成績(jī)表.學(xué)號(hào)=學(xué)生表.學(xué)號(hào) and 成績(jī)表.課程號(hào)=課程表.課程號(hào)))
6數(shù)據(jù)定義查詢
數(shù)據(jù)定義查詢可以創(chuàng)建、刪除或改變表,也可以在數(shù)據(jù)庫(kù)表中創(chuàng)建索引
create table
alter table
drop
create index
如:create talbe 學(xué)生表 ( [姓名] text,[性別] text ,[出生日期] date)
注:數(shù)據(jù)類型說明
integer 整形 ,text 文本 ,long 長(zhǎng)整形, single 單精度,double
雙精度 , string 字符型 , currency 貨幣型, date 日期型 , boolean 布爾型
如:alter table 學(xué)生表 add 年齡 integer
drop table 學(xué)生表
alter table 學(xué)生表 add unique 姓名
第四章 窗體
4.1窗體的基本知識(shí)
4.1.1 窗體的定義和用處
窗體有如下用處
a、創(chuàng)建數(shù)據(jù)入口窗體,可以用來向數(shù)據(jù)表中輸入數(shù)據(jù)
b、創(chuàng)建切換面板窗體或主窗體,可以用來打開其他窗體或報(bào)表,可以實(shí)現(xiàn)窗體的層層調(diào)用
c、創(chuàng)建自定義對(duì)話框,可以接收用戶輸入并依照輸入執(zhí)行某個(gè)操作。
4.1.2 窗體的數(shù)據(jù)源于視圖方式
1、窗體的數(shù)據(jù)源
數(shù)據(jù)表和查詢是窗體的數(shù)據(jù)源,也就是說,沒有數(shù)據(jù)表和查詢很難建立有用的窗體。
2、窗體的視圖方式
窗體應(yīng)用中有3種視圖方式
a、設(shè)計(jì)視圖:用戶在設(shè)計(jì)視圖方式下,可以完成對(duì)窗體的創(chuàng)建、編輯與修改。
b、 窗體視圖:用戶在窗體視圖方式下,可以查看窗體的設(shè)計(jì)效果。
c、 數(shù)據(jù)表視圖:用戶在數(shù)據(jù)表視圖下,可以查看窗體所用到的數(shù)據(jù)表的內(nèi)容。
4.1.3 窗體的結(jié)構(gòu)
窗體由窗體頁眉、頁面頁眉、主體、
頁面頁腳、窗體頁腳5部分組成。常用
的結(jié)構(gòu)為窗體頁眉、主體、窗體頁腳
窗體頁眉:窗體的標(biāo)題或使用說明等
窗體頁腳:使用命令操作說明,也可設(shè)置按鈕
頁面頁眉:打印時(shí)的頁頭信息
頁面頁腳:打印時(shí)的頁腳信息
4.1.4 窗體的屬性
在窗體設(shè)計(jì)時(shí),通常會(huì)用到窗體的屬性
4.2 創(chuàng)建窗體
4.2.1 使用自動(dòng)創(chuàng)建窗體
4.2.2 使用向?qū)?chuàng)建窗體
4.2.3使用設(shè)計(jì)視圖創(chuàng)建窗體
4.3 窗體控件的使用
4.3.1標(biāo)簽控件
第五章 宏
學(xué)習(xí)要點(diǎn):本章主要學(xué)習(xí)如何使用宏實(shí)現(xiàn)自動(dòng)處理功能,包 括宏和宏組的基本概念,宏的創(chuàng)建、參數(shù)設(shè)置及宏的調(diào)試 和運(yùn)行、事件觸發(fā)宏等。
5.1宏的基本概念
使用宏的目的是為了實(shí)現(xiàn)自動(dòng)操作,在使用access數(shù)據(jù)庫(kù)過程中,一些需要重復(fù)執(zhí)行的復(fù)雜操作可以被定義成宏,以后只要直接執(zhí)行宏就可以了
5.1.1宏的定義和特點(diǎn)
1 宏的定義
宏是能被自動(dòng)執(zhí)行的某種操作或操作的集合。期中每一個(gè)操作都實(shí)現(xiàn)特定的功能。如打開報(bào)表、查詢、窗體,顯示消息框、振鈴、在記錄中篩選、定位等。
如下面的“歡迎進(jìn)入”宏
2 常用宏命令
宏中基本操作叫宏命令,他們是由Access預(yù)先提供的。
附:常見操作:
(1)打開或關(guān)閉數(shù)據(jù)庫(kù)對(duì)象 OpenForm命令用于打開窗體。 Opentable OpenReport命令用于打開報(bào)表。 OpenQuerv命令用于打開查詢。 Close命令用于關(guān)閉數(shù)據(jù)庫(kù)對(duì)象。 save (2)運(yùn)行和控制流程 RunSQL命令用于執(zhí)行指定的SQL語句。 runmacro RunApp命令用于執(zhí)行指定的外部應(yīng)用程序。 Quit命令用于退出Access。
(3) 設(shè)置值 SetValue命令用于設(shè)置屬性值。 Setwarnings關(guān)閉或打開系統(tǒng)消息
(4) 刷新、查找或定位記錄 Requery命令用于實(shí)施指定控件重新查詢及刷新控件數(shù)據(jù)。 FindRecord命令用于查找滿足指定條件的第一條記錄。 FindNext命令用于查找滿足指定條件的下一條記錄。 GoToRecord命令用于指定當(dāng)前記錄。 (5) 控制顯示 Maxmize命令用于最大化激活窗口。 Minmize命令用于最小化激活窗口。 Restore命令用于將最大化或最小化窗口恢復(fù)至原始大小。
(6) 通知或警告用戶 Beep命令用于使計(jì)算機(jī)發(fā)出“嘟嘟”聲。 MsgBox命令用于顯示消息框。 SetWarnings命令用于關(guān)閉或打開系統(tǒng)消息。 (7) 導(dǎo)入和導(dǎo)出教據(jù) TransferDatabase命令用于從其他數(shù)據(jù)庫(kù)導(dǎo)入和導(dǎo)出數(shù)據(jù)。 TransferText命令用于從文本文件導(dǎo)入導(dǎo)出數(shù)據(jù)。
Gotocontrol 將焦點(diǎn)移動(dòng)到被激活的數(shù)據(jù)表或窗體的指定控件上
Gotorecord 將指定的記錄設(shè)置為當(dāng)前記錄
Runcommand運(yùn)行一個(gè)access菜單命令
Stopmacro 停止正在運(yùn)行的宏
5.1.2宏組的基本概念
宏組是共同存儲(chǔ)在一個(gè)宏名下的相關(guān)宏的集合。
往往在一個(gè)Access數(shù)據(jù)庫(kù)中會(huì)有很多宏,可以將其中相關(guān)的一些宏,如在同一個(gè)窗體中使用的宏,或功能相近的宏組織成宏組,便于宏的組織與管理。
在宏組中,一塊宏名區(qū)分其中的每個(gè)宏,執(zhí)行宏組中的宏時(shí),只要在宏名前加宏組名就可以了。如按性別瀏覽.男
5.2宏的創(chuàng)建和使用
5.2.1宏的設(shè)計(jì)窗口
宏窗口的組成
5.2.2宏的創(chuàng)建
5.2.3宏的運(yùn)行
運(yùn)行宏時(shí),系統(tǒng)按照宏中命令的排列順序由上向下依次執(zhí)行各個(gè)宏命令。
1直接執(zhí)行宏
方法1:雙擊宏名
方法2:點(diǎn)擊
方法3:工具>宏>運(yùn)行宏
2 用事件觸發(fā)宏
通常使用的觸發(fā)宏的操作有如下幾種。
(1) 將宏和窗體、報(bào)表相聯(lián)系,當(dāng)其中的數(shù)據(jù)被修改的前后,或者該窗體失去/獲得焦點(diǎn),或者在窗體中執(zhí)行了鼠標(biāo)或鍵盤操作,都可以設(shè)置使其觸發(fā)運(yùn)行宏。
(2) 將宏與菜單或命令按鈕相連,使得單擊菜單或按鈕觸發(fā)運(yùn)行宏。
(3) 將宏與窗體、報(bào)表中的某個(gè)控件相連,當(dāng)單擊該控件,或其中的數(shù)據(jù)發(fā)生變化,或該控件失去/獲得焦點(diǎn)時(shí)運(yùn)行宏。
(4) 用快捷鍵觸發(fā)執(zhí)行宏。
(5) 制作autoexec宏,使得打開數(shù)據(jù)庫(kù)時(shí)自動(dòng)運(yùn)行宏。
舉例:
1、把“歡迎進(jìn)入”宏添加到菜單
2、把“歡迎進(jìn)入”宏改為自動(dòng)宏
3、在窗體中加入宏(窗體1)
GoToControl:將焦點(diǎn)移動(dòng)到窗體指定的字段“學(xué)號(hào)”上,為執(zhí)行下面的findRecord宏命令做準(zhǔn)備
FindRecord:作用是在當(dāng)前窗體的數(shù)據(jù)集中查找符合條件的記錄。參數(shù)“查找內(nèi)容”為:=[forms]![窗體1]. [text2],前提是已經(jīng)將焦點(diǎn)移到了“學(xué)號(hào)”字段
5.3復(fù)雜宏的創(chuàng)建和使用
5.3.1宏組的創(chuàng)建和運(yùn)行
宏組是由若干彼此相關(guān)的宏組成,目的是方便管理,其中的每個(gè)宏有自己的宏名,執(zhí)行宏組中的宏時(shí)需要在宏名前加宏組名,形式為
宏組名.宏名
舉例:
創(chuàng)建一個(gè)宏組“按性別瀏覽”
把設(shè)計(jì)好的宏組添加到窗體中
5.3.2條件操作紅
對(duì)于簡(jiǎn)單宏,每次執(zhí)行時(shí)按照排列的先后順序依次無條件執(zhí)行每個(gè)宏命令。但有時(shí)需對(duì)宏命令是否執(zhí)行進(jìn)行控制,解決的辦法就是設(shè)置條件宏
條件宏是設(shè)置了宏命令的執(zhí)行條件的宏。可以在宏條件中使用任何邏輯表達(dá)式
舉例
創(chuàng)建“密碼驗(yàn)證”宏
SetValue:作用是為窗體或報(bào)表上的控件、字段或?qū)傩栽O(shè)置值。
stopMacro:終止宏的運(yùn)行。
將宏和窗體按鈕控件連接
MsgBox(“真的要退出管理系統(tǒng)嗎?”,1+64+0,”信息提示”)
1+64+0的含義:
第一個(gè)參數(shù):0確定;1確定與取消 ;2終止、重試、忽略 ;3是、否、取消;4是、否;5重試、取消
第二個(gè)參數(shù):16重要消息;32警告查詢;48警告消息;64信息消息
第三個(gè)參數(shù):0默認(rèn)第一個(gè)按鈕;256第二個(gè)按鈕;512:第三個(gè)按鈕
返回值:1確定;2取消;3終止;4重試;5忽略;6是;7否
第六章
6.1 程序設(shè)計(jì)概述
6.1.1 VBA編程環(huán)境
。郑拢诺模祩(gè)組成部分:工具欄、屬性窗口、資源管理器、代碼窗口、立即窗口
6.1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的概念
1.對(duì)象和集合
對(duì)象:在采用面向?qū)ο蟪绦蛟O(shè)計(jì)方法的程序中,程序處理的目標(biāo)被抽象成了一個(gè)個(gè)對(duì)象,每個(gè)對(duì)象具有各自的屬性、方法和事件。
類:是對(duì)一類相似對(duì)象的定義和描述。因此類可看做是對(duì)象的模板,每個(gè)對(duì)象由類來定義。
集合:是由一組對(duì)象組成的集合,這些對(duì)象的類型可以相同,也可以不同。
Access有幾十個(gè)對(duì)象,其中包括對(duì)象和對(duì)象集合。所有對(duì)象和對(duì)象集合按層次結(jié)構(gòu)組織,處在最上層的是Application對(duì)象,即Access應(yīng)用程序,其他對(duì)象或?qū)ο蠹隙继幵谒南聦踊蚋聦印?span style="display:none">GRB紅軟基地
2.屬性和方法
對(duì)象的特征用屬性和方法描述。
屬性:用來表示對(duì)象的狀態(tài),如窗體的Name(名稱)屬性、Caption(標(biāo)題)屬性等。
方法:用來描述對(duì)象的行為,如窗體有Refresh方法,Debug對(duì)象有Print方法等。
引用對(duì)象的屬性或方法時(shí)應(yīng)該在屬性名或方法名前加對(duì)象名,并用對(duì)象引用符“.”連接,即對(duì)象.屬性或?qū)ο?行為
例如 DoCmd.OpenReport “教師信息“
是指利用DoCmd對(duì)象的OpenReport方法打開報(bào)表“教師信息”
再如
Me!label1.caption=“信陽”
debug.print “您好!”
3.事件與過程
事件:是對(duì)象可以識(shí)別的動(dòng)作,通常由系統(tǒng)預(yù)先定義
事件過程:對(duì)象在識(shí)別了所發(fā)生的事件后執(zhí)行的程序
例如,下面的事件過程描述了單擊按鈕之后所發(fā)生的一系列動(dòng)作。
Private Sub Command1_Click()
Me!Label1.Caption = “信陽"
Me!Text1 = ""
End Sub
6.2 VBA編程基礎(chǔ)
6.2.1數(shù)據(jù)類型
(1)布爾型數(shù)據(jù)
布爾型數(shù)據(jù)只有兩個(gè)值True或False。布爾型數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)時(shí),Ture轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0;其他類型數(shù)據(jù)轉(zhuǎn)換為布爾型數(shù)據(jù)時(shí),0轉(zhuǎn)換為False,其他類型轉(zhuǎn)換為Ture。
(2)日期型數(shù)據(jù)
“日期/時(shí)間”類型數(shù)據(jù)必須前后用“#”號(hào)封住。
如#2007-1-1#、#2002-5-4 14:30:00 PM#。
(3)變體類型數(shù)據(jù)
變體類型數(shù)據(jù)是特殊的數(shù)據(jù)類型。VBA中規(guī)定,如果沒有顯示聲明或使用符號(hào)來定義變量的數(shù)據(jù)類型,則默認(rèn)為變體類型。
(4)用戶定義的數(shù)據(jù)類型 應(yīng)用過程中可以建立包含一個(gè)或多個(gè)VBA標(biāo)準(zhǔn)數(shù)據(jù)類型的數(shù)據(jù)類型,這就是用戶定義數(shù)據(jù)類型。它不僅包含VBA的標(biāo)準(zhǔn)數(shù)據(jù)類型,還包含其他用戶定義的數(shù)據(jù)類型。
用戶定義數(shù)據(jù)類型可以在Type ... End Type關(guān)鍵字間定義,定義格式如下: Type NewStudent
StuNo As String *8
StuName As string
StuSex As string *1
StuAge As integer End Type
Dim Newstu As NewStudent
Newstu.StuNo=“07010101”
Newstu.StuName=“張三”
Newstu. StuSex=“女”
Newstu.StuAge=20
6.2.2常量
常量是在程序中可以直接引用的實(shí)際值,其值在程序運(yùn)行過程中不變。在VBA中,常量可以分為3種:直接常量、符號(hào)常量和系統(tǒng)常量
1直接常量
如數(shù)字型常量、字符型常量、日期型常量、布爾型常量
2符號(hào)常量
可以定義用符號(hào)代替
常量,如用符號(hào)PI代替3.1415926。定義符號(hào)常量,好處在于當(dāng)程序中多處用到該變量時(shí),一方面正加了代碼的可讀性,也便于維護(hù)。
定義如下:
const PI as single=3.1415926
s=PI*r*r -》s=3.1415926*r*r
3固有常量(系統(tǒng)常量)
vbRed、vbBlue等
6.2.3變量
變量是程序運(yùn)行過程中值會(huì)發(fā)生變化的數(shù)據(jù)。如同一間旅館客房,昨天可住旅客A,今天住旅客B,明天又有可能被閑置。計(jì)算機(jī)處理變量數(shù)據(jù)的方法是將數(shù)據(jù)存儲(chǔ)在內(nèi)存的一塊臨時(shí)存儲(chǔ)空間中。
1、變量的命名規(guī)則如下:
(1)以字母或漢字開頭,后可跟字母、數(shù)字或下劃線。
(2)變量名最長(zhǎng)為255個(gè)字符。
(3)不區(qū)分變量名的大小寫,不能使用關(guān)鍵字。
(4)字符之間必須并排書寫,不能出現(xiàn)上下標(biāo)。
以下是合法的變量名:
a,x, x3, BOOK_1,sum5
以下是非法的變量名:
3s s*T -3x bowy-1 if
2、變量的聲明
VBA變量聲明有兩種方法。
a.顯式聲明
VBA中定義變量的格式為:
Dim 變量名 [AS 類型]
格式中Dim是一個(gè)VBA命令,此處用于定義變量;As是關(guān)鍵字,此處用于指定變量的數(shù)據(jù)類型。
例如:Dim bAge as Integer
b.隱含聲明
VBA允許用戶在編寫應(yīng)用程序時(shí),不聲明變量而直接使用,這就是隱式聲明。所有隱式聲明的變量都是Variant數(shù)據(jù)類型。例如:
Dim m,n, ’m,n為變體Variant變量
NewVar=528 ’ NewVar為Variant類型變量,其值為258
6.2.4函數(shù)
三要素:函數(shù)名,參數(shù)和函數(shù)值。要注意在調(diào)用時(shí)實(shí)參必須和形參的個(gè)數(shù)位置數(shù)據(jù)類型向一致。
函數(shù)分?jǐn)?shù)學(xué)函數(shù)、字符串函數(shù)、日期函數(shù)、轉(zhuǎn)換函數(shù)。
數(shù)學(xué)函數(shù):Abs()
int() fix()(當(dāng)參數(shù)為正數(shù)時(shí),int與fix返回值相同,當(dāng)參數(shù)為負(fù)時(shí),int 返回小于等于參數(shù)值的第一個(gè)負(fù)數(shù),而fix返回大于等于參數(shù)值的第一個(gè)負(fù)數(shù))
exp();log();sqr();
rnd()產(chǎn)生0~1間隨機(jī)數(shù),參數(shù)小于0,產(chǎn)生相同的隨機(jī)數(shù),參數(shù)大于0,每次產(chǎn)生新的隨機(jī)數(shù),參數(shù)等于0,產(chǎn)生最近生成的隨機(jī)數(shù),參數(shù)省略,默認(rèn)參數(shù)大于0
例如:
字符串函數(shù):
inStr(start,str1,str2,compare)
功能:檢索str2在str1中最早出現(xiàn)的位置。
start:檢索開始起點(diǎn),缺省為從第一個(gè)開始
compare:可選參數(shù),值可為0、1、2,0為二進(jìn)制比較,1為不分大小寫的比較,2為基于包含數(shù)據(jù)庫(kù)信息的比較。
如果str1字符串長(zhǎng)度為0或str2字符串檢索不到,instr返回為0,如果str2長(zhǎng)度為0,函數(shù)返回start的值。
例:
str1=“123456” str2=“56”
s=instr(str1,str2) 返回5
s=intstr(3,”aBCdAb”,”a”,1) 返回5
Len(字符串表達(dá)式或變量名)
返回字符串所包含字?jǐn)?shù)
Left(字符串表達(dá)式,N) Right(字符串表達(dá)式,N)
Mid(字符串表達(dá)式,N1,N2)
Space(N)
Ucase(字符串表達(dá)式) Lcase(字符串表達(dá)式)
Ltrim(字符串表達(dá)式) Rtrim(字符串表達(dá)式) Trim(字符串表達(dá)式)
日期函數(shù):
date() time() now()
year(日期表達(dá)式) month(日期表達(dá)式) day(日期表達(dá)式)
weekday(日期表達(dá)式,N)
例如:
year(#2007/1/15#) month((#2007/1/15#) day((#2007/1/15#)
weekday((#2007/1/15#) 返回2 #2007/1/15#是星期一
weekday (#2007/1/15#,5) 返回5
時(shí)間分量函數(shù)
Hour() Minute() Second()
Hour(#20:17:56#) Minute (#20:17:56#) Second (#20:17:56#)
類型轉(zhuǎn)換函數(shù):
Asc(字符串表達(dá)式)
返回字符串首字符的ASCⅡ
Asc(“abc”) 返回97
Chr(字符代碼)
返回字符代碼對(duì)應(yīng)的字符
Chr(98) 返回b
Str(數(shù)值表達(dá)式)
把數(shù)值轉(zhuǎn)換為字符串,當(dāng)表達(dá)式為正時(shí),返回字符串前面有一前導(dǎo)空格。
str(8) 返回“ 8” str(-8) 返回“-8”
Val(字符串表達(dá)式)
把數(shù)字字符串轉(zhuǎn)換為數(shù)字,在轉(zhuǎn)換時(shí),會(huì)自動(dòng)去掉字符串中的空格
val(“156”) val(“7 1 6”)
輸入框函數(shù)
inputbox
dim id as string
id=inputbox(“請(qǐng)輸入學(xué)生id號(hào):”,“信息提示”)
消息框函數(shù)
msgbox
MsgBox("真的要退出嗎?", 1 + 64 + 0, "信息提示")
常量與按鈕的關(guān)系
vbokonly 確定
VbOkCancel VbAboutRetryIgnore VbYesNoCancel
VbYesNo VbRetryCancel
Dlookup
Dlookup是ACCESS為用戶提供的內(nèi)置函數(shù),通過函數(shù)可以方便的從一個(gè)表或查詢中取得符合一定條件的值賦予變量或控件值
DLookup(expr, domain, [criteria])
用于數(shù)值型條件值:
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = n")
用于字符串型條件值:(注意字符串的單引號(hào)不能丟失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = '字符串值'")
用于日期型條件值:(注意日期的#號(hào)不能丟失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = #日期值#")
從窗體控件中引用條件值用法
用于數(shù)值型條件值:
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 =" & forms!窗體名!控件名)
用于字符串型條件值:(注意字符串的單引號(hào)不能丟失) DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = '" & forms!窗體名!控件名 & "'")
用于日期型條件值:(注意日期的#號(hào)不能丟失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = #" & forms!窗體名!控件名 & "#")
DateSerial(year,month,day)
指定年月日
DateSerial(1990 - 10, 8 - 2, 1 - 1)
6.2.5表達(dá)式
表達(dá)式是將常量、變量、字段名稱、控件的屬性值和函數(shù)用運(yùn)算符連接而成的運(yùn)算式。運(yùn)算式可分算術(shù)表達(dá)式、字符表達(dá)式、關(guān)系表達(dá)式、布爾表達(dá)式和對(duì)象引用表達(dá)式。
1、算術(shù)表達(dá)式
運(yùn)算符的優(yōu)先級(jí)由高到低:
() --->^--->* / \ mod---->+ -
2、字符表達(dá)式
只要一個(gè) &,
3、關(guān)系表達(dá)式
< <= > >= = <> like
like 字符串匹配 “this” like “is” 邏輯值為true
4、布爾表達(dá)式
not and or
5、對(duì)象引用表達(dá)式
。阂媚硞(gè)對(duì)象; . :引用對(duì)象的屬性或方法
6.3 程序流程控制
VBA的程序語句有賦值語句、聲明語句、控制語句、注釋語句。
賦值語句
變量名=表達(dá)式 或 對(duì)象名.屬性=表達(dá)式
如:
Rate=0 text1.value=“歡迎使用access”
說明:
1) 先計(jì)算后賦值
2) =為賦值,不是數(shù)學(xué)上的等于號(hào)
注釋語句兩種方法:
1) 在行前用rem開始
2) 在行前或行尾用單引號(hào)開始
6.3.1程序的順序控制
程序的三大基本控制結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
例如:計(jì)算圓的面積和周長(zhǎng)
6.3.2 程序的分支控制
在VBA中,程序的分支控制有if語句和select case語句。
1、If…Then…Else語句
1.If…Then 語句
語句格式為
If <表達(dá)式> Then
<語句塊1>
End If
例如:
‘輸入一個(gè)數(shù)并在立即窗口輸出其值
Dim x As Integer
x = InputBox("請(qǐng)輸入x的值:")
If x Then
Debug.Print x
End If
2.If…Then…Else 語句
語句格式為
If <表達(dá)式> Then
<語句塊1>
Else
<語句塊2>
End If
說明:
(1)<表達(dá)式>可以是任何表達(dá)式,一般為關(guān)系表達(dá)式或布爾表達(dá)式。
如果是其他表達(dá)式,則非0認(rèn)為是True,0認(rèn)為是False。
(2)執(zhí)行時(shí),先判斷表達(dá)式的值,為True則執(zhí)行語句塊1,否則執(zhí)行語
句塊2。
例如:輸入兩個(gè)數(shù)并在立即窗口輸出其中較大的數(shù)
Dim x As Integer, y As Integer
x = InputBox("請(qǐng)輸入x的值:")
y = InputBox("請(qǐng)輸入y的值:")
If x > y Then
Debug.Print x
Else
Debug.Print y
End If
3.If…Then…ElseIf 語句
語句格式為
If <表達(dá)式1> Then
<語句塊1>
ElseIf <表達(dá)式2>Then
<語句塊2>
…
[ElseIf <表達(dá)式n>Then
<語句塊n>
Else
<語句塊 n+1> ]
End If
舉例2:
3 Select Case
語句格式:
Select Case <變量或表達(dá)式>
Case <表達(dá)式1>
語句塊1
Case <表達(dá)式2>
語句塊2
…
Case Else
語句塊n+1
End Select
說明:
(1)Select Case后的變量或表達(dá)式只能是數(shù)值型或字符型表達(dá)式。
(2)執(zhí)行過程是先計(jì)算Select Case后的變量或表達(dá)式的值,然后從上至下逐個(gè)比較,決定執(zhí)行哪一個(gè)語句塊。如果有多個(gè)Case后的表達(dá)式列表與其相匹配,則只執(zhí)行第一個(gè)Case后的語句塊。
(3)語句中的各個(gè)表達(dá)式列表應(yīng)與Select Case后的變量或表達(dá)式同
類型。各個(gè)表達(dá)式列表可以采用下面的形式
表達(dá)式: a +5
用逗號(hào)分隔的一組枚舉表達(dá)式: 2, 4, 6, 8
表達(dá)式1 To 表達(dá)式2 60 to 100
Is 關(guān)系運(yùn)算符表達(dá)式 Is < 60
例selectcase
Private Sub Command2_Click()
Dim x As Integer
Label3.FontSize = 30
Label3.ForeColor = 255
Label3.FontBold = 1
x = Text0
Select Case x
Case 90 To 100
Label3.Caption = "優(yōu)秀"
Case 80 To 89
Label3.Caption = "良好"
Case 70 To 79
Label3.Caption = "中等“
Case 60 To 69
Label3.Caption = "及格"
Case Else
Label3.Caption = "不及格"
End Select
End Sub
4 條件函數(shù)
除了上述條件語句外,VBA還提供了3個(gè)函數(shù)來完成相應(yīng)選擇操作:
(1)IIf函數(shù): IIf(條件式,表達(dá)式1,表達(dá)式2)。 該函數(shù)根據(jù)“條件式”的值來決定函數(shù)返回值。 “條件式”值為真,函數(shù)返回“表達(dá)式1” 的值,“條件式”值為假,函數(shù)返回“表達(dá)式2” 的值。
(2)Switch函數(shù): Switch(條件式1,表達(dá)式1[,條件式2,表達(dá)式2][,條件式3,表達(dá)式3]…[,條件式n,表達(dá)式n]) 該函數(shù)是分別根據(jù)“條件1”,“條件2”直至“條件n”的值來決定函數(shù)的返回值。
例如:
X=inputbox(“請(qǐng)輸入x的值”,”輸入”)
Y=Switch(x>0,1,x=0,0,x<0,-1) (3)Choose函數(shù):Choose(索引式,選項(xiàng)1[,選項(xiàng)2]…[,選項(xiàng)n]) 該函數(shù)式根據(jù)“索引式”的值來返回選項(xiàng)列表中的某個(gè)值。如果索引
式值為1,函數(shù)返回“選項(xiàng)1”的值,索引式的值為2,函數(shù)返回“選項(xiàng)2”的值
依次類推。只有索引式的值在1和可選擇的項(xiàng)目數(shù)之間時(shí),函數(shù)才返回其后的選項(xiàng)值,如索引式的值不在這個(gè)范圍,函數(shù)返回?zé)o效值(Null)。
例如:
dim x as integer,m as integer,n as integer
x=2
m=3
n=7
y=choose(x,5,m+1,n) ‘變量y的值為4
6.3.3程序的循環(huán)控制
循環(huán)控制結(jié)構(gòu)也叫重復(fù)控制結(jié)構(gòu)。特點(diǎn)是程序執(zhí)行時(shí),該語句中的一部分操作即循環(huán)體被重復(fù)執(zhí)行多次。循環(huán)語句可以實(shí)現(xiàn)重復(fù)執(zhí)行一行或幾行程序代碼。VBA支持以下循環(huán)語句結(jié)構(gòu):
(l)For…Next語句。 (2)Do…Loop語句。 (3)While…Wend語句。
1.For--Next循環(huán)語句
語句格式為
For <循環(huán)變量>=<初值> to <終值> [Step <步長(zhǎng)>]
<循環(huán)體>
if 條件表達(dá)式 then
Exit For
end if
Next <循環(huán)變量>
說明:
(1)循環(huán)控制變量的類型必須是數(shù)值型。
(2)步長(zhǎng)可以是正數(shù),也可以是負(fù)數(shù)。如果步長(zhǎng)為1,Step短語可以省略。
(3)根據(jù)初值、終值和步長(zhǎng),可以計(jì)算出循環(huán)的次數(shù),因此For語句一般用于循環(huán)次數(shù)已知的情況。
(4)使用Exit For語句可以提前退出循環(huán)。
For語句的執(zhí)行步驟如下:
1)循環(huán)變量取初值
2)循環(huán)變量與終值比較,確定循環(huán)是否進(jìn)行,有以下3中情況:
a.步長(zhǎng)>0時(shí),如果循環(huán)變量小于等于終值,循環(huán)繼續(xù),執(zhí)行步驟(3),如果循環(huán)變量值大于終值,循環(huán)結(jié)束,退出循環(huán)。
b.步長(zhǎng)=0時(shí),如果循環(huán)變量小于等于終值,進(jìn)入死循環(huán)。如果循環(huán)變量值大于終值,一次也不執(zhí)行循環(huán),退出循環(huán)。
c.步長(zhǎng)<0時(shí),如果循環(huán)變量大于等于終值,循環(huán)繼續(xù),執(zhí)行步驟(3),如果循環(huán)變量值小于終值,循環(huán)結(jié)束,退出循環(huán)。
3)執(zhí)行循環(huán)體
4)循環(huán)變量值增加步長(zhǎng),即循環(huán)變量=循環(huán)變量+步長(zhǎng),程序跳轉(zhuǎn)到(2)
例:編程用for語句求1+2+3+…+10之和。
Public Sub 累加求和()
Dim s As Integer, i As Integer
s = 0
For i = 1 To 10 Step 1
s = s + i
Next
Debug.Print s
End Sub
例求表達(dá)式1/2+2/3+3/4+4/5的值(for2)。
Public Sub for2()
Dim sum As Double, x As Double
sum = 0
n = 0
For i = 1 To 5
x = n / i
n = n + 1
sum = sum + x
Next i
Debug.Print sum
End Sub
例:讀程序求結(jié)果(for3) 。
Public Sub for4()
Dim sum As Integer, i As Integer,
Dim j As Integer, k As Integer
sum = 0
For i = 1 To 3
For j = i To 4
For k = j To 5
sum = sum + 1
Next k
Next j
Next i
Debug.Print sum
End Sub
最后輸出值為28
Public Sub for4()
Dim a As Integer, i As Integer
For i = 1 To 3
Select Case i
Case 1, 3
a = a + 1
Case 2, 4
a = a + 2
End Select
Next i
Debug.Print a
End Sub
Public Sub for5()
Dim i As Integer, x As Integer
For i = 1 To 6
If i = 1 Then
x = i
If i <= 4 Then
x = x + 1
Else
x = x + 2
End If
End If
Next i
Debug.Print x
End Sub
2.Do While…Loop語句
形式如下:
Do While <條件>
循環(huán)體
if (條件) then
Exit Do
Loop
說明:
(1)這里的條件可以是任何類型的表達(dá)式,非0為真,0為假。
(2)執(zhí)行過程是:在每次循環(huán)開始時(shí)測(cè)試條件,對(duì)于Do While語句,如果條件成立,則執(zhí)行循環(huán)體的內(nèi)容,然后回到Do Whlie處準(zhǔn)備下一次循環(huán);如果條件不成立,則退出循環(huán)。
(3)Exit Do語句的作用是提前終止循環(huán)。
例如 :下面的程序用Do While…Loop語句求1+2+3…+10之和。
Dim s As Integer, i As Integer
s = 0
i = 1
Do While i <= 10
s = s + i
i = i + 1
Loop
Debug.Print s
3.Do Until…Loop語句
形式如下:
Do Until <條件>
循環(huán)體
if (條件) then
Exit Do
Loop
說明:
(1)這里的條件可以是任何類型的表達(dá)式,非0為真,0為假。
(2)執(zhí)行過程是:在每次循環(huán)開始時(shí)測(cè)試條件,對(duì)于Do Until語句,如果條件不成立,則執(zhí)行循環(huán)體的內(nèi)容,然后回到Do Until處準(zhǔn)備下一次循環(huán);如果條件成立,則退出循環(huán)。
(3)Exit Do語句的作用是提前終止循環(huán)。
例如 :下面的程序用Do Until…Loop語句求1+2+3…+10之和。
Dim s As Integer, i As Integer
s = 0
i = 1
Do Until i > 10
s = s + i
i = i + 1
Loop
Debug.Print s
4.Do—Loop While語句
格式如下:
Do
循環(huán)體
Exit Do
語句塊
Loop While<條件>
說明:
和Do While…Loop不同的是, Do—Loop While語句在每次循環(huán)結(jié)束時(shí)測(cè)試條件。因此,二者的區(qū)別是如果一開始循環(huán)條件就不成立,則Do While…Loop中的循環(huán)體部分一次也不執(zhí)行,而Do—Loop While 中的循環(huán)體部分被執(zhí)行一次。
5.Do—Loop Until語句
格式如下:
Do
循環(huán)體
Exit Do
語句塊
Loop Until<條件>
說明:
和Do Until…Loop不同的是, Do—Loop Until語句在每次循環(huán)結(jié)束時(shí)測(cè)試條件。因此,二者的區(qū)別是如果一開始循環(huán)條件就不成立,則Do Until…Loop中的循環(huán)體部分一次也不執(zhí)行,而Do—Loop Until中的循環(huán)體部分被執(zhí)行一次。
例:do1
6.4 數(shù)組
數(shù)組是在有規(guī)則的結(jié)構(gòu)中包含一種數(shù)據(jù)類型的一組數(shù)據(jù),也稱作數(shù)組元素變量。數(shù)組變量由變量名和數(shù)組下標(biāo)構(gòu)成,使用數(shù)組必須先定義數(shù)組。通常用Dim語句來定義數(shù)組,定義格式為: Dim 數(shù)組名([<下標(biāo)下限>to]<下標(biāo)上限>)[As <數(shù)據(jù)類型>]
缺省情況下,下標(biāo)下限為0,數(shù)組元素從“數(shù)組名(0)”至“數(shù)組名(下標(biāo)上限)”;如果使用to選項(xiàng),則可以安排非0下限。
例如,dim score(10)as Integer
定義了11個(gè)整形數(shù)構(gòu)成的數(shù)組,數(shù)組元素為score(0) 至score(10)
再如, dim score(1 to 10)as Integer
定義了10個(gè)元素的整型數(shù)組,數(shù)組元素為score(1)至 score(10)
注:(1)所有數(shù)組元素在內(nèi)存連續(xù)存放
(2)根據(jù)下標(biāo)區(qū)分?jǐn)?shù)組元素
關(guān)于數(shù)組的定義,還有下面的幾點(diǎn)說明:
(1)定義數(shù)組時(shí)數(shù)組名的命名規(guī)則與變量名的命名規(guī)則相同。
(2)一般在定義數(shù)組時(shí)應(yīng)給出數(shù)組的上界和下界。但也可以省略下界,<下界>缺省 為0。
例如,Dim a(10) As Single
默認(rèn)情況下,數(shù)組a由11個(gè)元素組成。
若希望下標(biāo)從1開始,可在模塊的通用聲明段使用Option Base語句聲明。其使用格式為:
Option Base 0|1 ' 后面的參數(shù)只能取 0 或 1
(3)<下界>和<上界>不能使用變量,必須是常量,常量可以是字面常量或符號(hào)常量,一般是整型常量。
(4)如果省略As子句,則數(shù)組的類型為Varient變體類型。
二維數(shù)組的定義
格式為:
Dim 數(shù)組名([<下界>to]<上界>,[<下界>to]<上界>)[As <數(shù)據(jù)類型>]
例如,Dim c(1 To 3, 1 To 4)As Single
c(1,1)c(1,2)c(1,3)c(1,4)
c(2,1)c(2,2)c(2,3)c(2,4)
c(3,1)c(3,2)c(3,3)c(3,4)
數(shù)組的賦值
數(shù)組的每一個(gè)空間可以通過循環(huán)得到具體的值,也可以直接賦值,也可以用表達(dá)式賦值
如:
dim a(1 to 3) as integer
a(1)=10
a(2)=20
a(3)=a(1)+a(2)
如用循環(huán)賦值,可以如下形式
for i=1 to 3
a(i)=10*i
next
數(shù)組的應(yīng)用
例:編程產(chǎn)生10個(gè)0~99之間的隨機(jī)數(shù),并找出其中的最大值和最小值。(shuzu1)
代碼如下:
Public Sub ee()
Dim a(1 To 10) As Integer
Dim i, max, min As Integer
'生成并輸出數(shù)組
For i = 1 To 10
a(i) = Int(Rnd() * 100)
Debug.Print a(i)
Next
Debug.Print '另起一行
'尋找最大值和最小值
max = a(1)
min = a(1)
For i = 2 To 10
If max < a(i) Then max = a(i)
If min > a(i) Then min = a(i)
Next
'輸出結(jié)果
Debug.Print "max="; max
Debug.Print "min="; min
End Sub
6.5 模塊的創(chuàng)建
6.5.1模塊的創(chuàng)建方法
6.5.2過程的創(chuàng)建和調(diào)用
過程的定義形式如下:
[Public|Private][Static] Sub 子過程名([<形參>])
[<子過程語句>]
<語句塊>
[Exit Sub]
<子過程語句>
End Sub
使用Public關(guān)鍵字可以使該過程適用于所有模塊中的所有其他過程;使用Private關(guān)鍵字可以使該子過程只適用于同一個(gè)模塊中的其他過程。
調(diào)用過程有以下兩種格式:
格式1:call 過程名([實(shí)參列表])
格式2:子過程名 [實(shí)參列表]
例:jiaohuan
6.5.3函數(shù)過程的定義和調(diào)用
可以使用Function語句定義一個(gè)新函數(shù)過程、接收參數(shù)、返回變量類型及運(yùn)行函數(shù)過程的代碼。其格式如下: [Public | Private][Static]Function函數(shù)過程名[<形參>][As數(shù)據(jù)類型] [<函數(shù)過程語句>] [函數(shù)過程語句=<表達(dá)式>] [Exit Function]
[<函數(shù)過程語句> [函數(shù)過程語句=<表達(dá)式> ] End Function
函數(shù)過程的調(diào)用格式只有一種:
函數(shù)過程名(<實(shí)參>) 由于函數(shù)過程返回一個(gè)值,實(shí)際上,函數(shù)過程的上述調(diào)用形式主要有兩種方法:一是將函數(shù)過程返回值作為賦值成分賦予某個(gè)變量,其格式為“變量=函數(shù)過程名(<實(shí)參>)”;二是將函數(shù)過程返回值作為某個(gè)過程的實(shí)參成分使用。
例:hanshu1
6.5.4參數(shù)傳遞
過程定義時(shí)可以設(shè)置一個(gè)或多個(gè)形參(形式參數(shù)的簡(jiǎn)稱),多個(gè)形參之間用逗號(hào)分隔。含參數(shù)的過程被調(diào)用時(shí),主調(diào)過程中的調(diào)用式必須提供相應(yīng)的實(shí)參(實(shí)際參數(shù)的簡(jiǎn)稱),并通過實(shí)參向形參傳遞的方式完成過程操作 。
在函數(shù)的調(diào)用過程中,一般會(huì)發(fā)生數(shù)據(jù)的傳遞,即將主調(diào)過程中的實(shí)參傳給被調(diào)過程的形參。
在參數(shù)傳遞過程中,可以有傳址和傳值兩種形式。
1.傳址
如果在定義過程或函數(shù)時(shí),形參的變量名前不加任何前綴,即為傳址;若加前綴,須在形參變量名前加ByRef。
傳遞過程是:調(diào)用過程時(shí),將實(shí)參的地址傳給形參。因此如果在被調(diào)過程或函數(shù)中修改了形參的值,則主調(diào)過程或函數(shù)中實(shí)參的值也跟著變化。
例如:如果輸入5和7,程序的結(jié)果會(huì)是多少?
Public Sub swap(x As Integer, y As Integer)
Dim t As Integer
t = x: x = y: y = t
End Sub
Private Sub Command0_Click()
Dim x As Integer, y As Integer
x = InputBox("x=")
y = InputBox("y=")
Debug.Print x, y
swap x, y
Debug.Print x, y
End Sub
2.傳值
如果在定義過程或函數(shù)時(shí),形參的變量名前加ByVal前綴,即為傳值。這時(shí)主調(diào)過程將實(shí)參的值復(fù)制后傳給被調(diào)過程的形參,因此如果在被調(diào)過程或函數(shù)中修改了形參的值,則主調(diào)過程或函數(shù)中實(shí)參的值不會(huì)跟著變化。
例如:如果輸入5和7,程序的結(jié)果會(huì)是多少?
6.5.5局部變量、全局變量和靜態(tài)變量
變量的作用域
(1)過程內(nèi)局部變量(Local)
變量定義在模塊的過程內(nèi)部,過程代碼執(zhí)行時(shí)才可見。在子過程或函數(shù)過程中定義的或直接使用的變量作用范圍都是局部的。在子過程或函數(shù)內(nèi)部使用Dim、Static…As關(guān)鍵字說明的變量就是局部范圍的。
(2)模塊級(jí)局部變量(Module)
變量定義在模塊的所有過程之外的起始位置,運(yùn)行時(shí)在模塊所包含的所有子過程或函數(shù)過程中可見。在模塊的通用說明區(qū),用Dim、Static、Private…As關(guān)鍵字定義的變量作用域都是模塊范圍。
例:
Dim a(1 To 10) As Integer ‘定義數(shù)組
Private Sub Command4_Click()
Dim i As Integer, j As Integer, imax As Integer, t As Integer
For i = 1 To 10
imax = i
For j = i To 10
If a(imax) < a(j) Then imax = j ’對(duì)數(shù)組排序
Next j
t = a(i): a(i) = a(imax): a(imax) = t
Next i
For i = 1 To 10
Me.lstright.AddItem a(i) ‘把已排序的數(shù)組中的值賦給列表框
Next i
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
a(i) = Int(Rnd() * 100)
Me.lstleft.AddItem a(i) ’對(duì)數(shù)組產(chǎn)生10個(gè)隨機(jī)數(shù)并賦給左邊列表框
Next i
End Sub
(3)全局變量
全局變量是可在整個(gè)應(yīng)用程序中使用的變量,定義的方法是在模塊的通用聲明段用public關(guān)鍵字定義變量。
引用全局變量時(shí),如果是在標(biāo)準(zhǔn)模塊中定義的全局變量,可在應(yīng)用程序的任何地方直接用變量名引用該變量。如果是在類模塊(如窗體模塊)中定義的全局變量,可在應(yīng)用程序的任何地方應(yīng)用該變量,但在變量名的前面應(yīng)加模塊名限定,形式如:模塊名.變量名。
(4)靜態(tài)變量
局部變量和全局變量決定了變量的有效范圍,靜態(tài)變量則決定了變量的生存期。對(duì)于過程的局部變量,他的生存期從進(jìn)入Sub開始,到退出End Sub結(jié)束。如果要改變過程內(nèi)局部變量的生存期,可以將它定義為靜態(tài)變量。
舉例1:Jtbl
Public x As Integer
Private Sub Command0_Click()
Static y As Integer
Dim z As Integer
n = 5
x = x + n
y = y + n
z = z + n
Label2.Caption = x
Label3.Caption = y
Label4.Caption = z
End Sub
例2 設(shè)計(jì)一個(gè)計(jì)時(shí)器,要求:首先單擊
設(shè)置按鈕,在輸入框內(nèi)輸入計(jì)時(shí)的秒數(shù),
單擊開始按鈕,開始計(jì)時(shí),同時(shí)計(jì)時(shí)的秒
數(shù)在文本框中顯示。計(jì)時(shí)時(shí)間到,停止計(jì)
時(shí)并響鈴,同時(shí)將文本清零。
Option Compare Database
Dim f As Integer
Private Sub Command2_Click()
f = InputBox("請(qǐng)輸入計(jì)時(shí)范圍:")
End Sub
Private Sub Command3_Click()
Me.TimerInterval = 1000
End Sub
Private Sub Form_Load()
Me.TimerInterval = 0
End Sub
Private Sub Form_Timer()
Static s As Integer
s = s + 1
If s = f Then
Beep
s = 0
Me.TimerInterval = 0
End If
Me.Text0 = s
End Sub
VBA的數(shù)據(jù)庫(kù)編程
要訪問網(wǎng)絡(luò)數(shù)據(jù)庫(kù),大致具體過程如下:
1、建立與數(shù)據(jù)庫(kù)的連接
2、指定訪問數(shù)據(jù)庫(kù)的命令,并向數(shù)據(jù)源發(fā)出命令
3.、從數(shù)據(jù)源以行的形式獲取數(shù)據(jù),并將數(shù)據(jù)暫存在內(nèi)存的緩存中
4、如果需要可對(duì)獲取的數(shù)據(jù)進(jìn)行查詢、更新、插入、刪除等操作
5、如果對(duì)數(shù)據(jù)源進(jìn)行了修改,將更新后的數(shù)據(jù)發(fā)回?cái)?shù)據(jù)源
6、斷開與數(shù)據(jù)源的連接。
實(shí)際使用時(shí),上面過程中的各個(gè)步驟分別由ADO的具體對(duì)象完成。
ADO的主要對(duì)象
1 Connection對(duì)象
該對(duì)象的主要作用是用于建立與數(shù)據(jù)源的連接,這是訪問數(shù)據(jù)源的首要條件。要?jiǎng)?chuàng)建到數(shù)據(jù)源的連接,應(yīng)該先定義一個(gè)ADO的connection對(duì)象。方法如下:
使用DAO訪問數(shù)據(jù)庫(kù)的步驟如下:
1 創(chuàng)建對(duì)象變量
dim WO AS WORKSPACE
DIM DA AS DATABASE
DIM RE AS RECORDSET
2 通過Set語句設(shè)置對(duì)象變量的值
SET WO=Dbengine.worksapce(0)
打開默認(rèn)工作區(qū)
Set da=wo.OpenDatabase(學(xué)生信息管理系統(tǒng))
打開數(shù)據(jù)庫(kù)文件
Set re=DA.Openrecordset(學(xué)生信息表)
關(guān)閉數(shù)據(jù)庫(kù)、記錄集
da.Close re.Close
4 回收對(duì)象變量的內(nèi)存
Set re=Nothing
Set da=Nothing
例:修改“學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)中的成績(jī)表(將獎(jiǎng)學(xué)金增加10元),程序如下:
Public Sub ko()
Dim wo As DAO.workspace
Dim da As DAO.database
Dim re As DAO.Recordset
Dim fi As DAO.Field
Set da = CurrentDb()
Set re = da.OpenRecordset("aa")
Set fi = re.Fields("年齡")
Do While Not re.EOF
re.Edit
fi = fi + 10
re.Update
re.MoveNext
Loop
re.Close
da.Close
Set re = Nothing
Set da = Nothing
End Sub
ADO訪問數(shù)據(jù)庫(kù)
ADO即ActiveX數(shù)據(jù)庫(kù)對(duì)象,可以和多種編程語言結(jié)合使用。
步驟如下:
1 在數(shù)據(jù)庫(kù)“模塊”對(duì)象下,設(shè)置“引用”數(shù)據(jù)庫(kù)
2單擊工具欄上的“新建”按鈕,進(jìn)入編輯模塊窗口
3 選擇“工具”菜單下“引用”命令,彈出“引用對(duì)話框”
4 在列表中選擇“Microsoft activeX data Objects X,Y Library”
5單擊“確定”,即可在access 中使用多種類型的數(shù)據(jù)
Public Sub po()
Dim co As New ADODB.Connection
Dim re As New ADODB.Recordset
Dim fi As ADODB.Field
Dim strconnect As String
Dim strsql As String
Set co = CurrentProject.Connection
strsql = "select 年齡 from aa"
re.Open strsql
Set fi = re.Fields("年齡")
Do While Not re.EOF
fi = fi - 10
re.Update
re.MoveNext
Loop
re.Close
co.Close
Set re = Nothing
Set co = Nothing
End Sub
Dim Mycnn as ADODB.Connection
Set Mycnn=New ADODB.Connection
上面語句先用Dim語句聲明一個(gè)對(duì)象變量Mycnn,然后用Set命令將其初始化為ADO的Connection對(duì)象。對(duì)象名前的ADODB是ADO的類庫(kù)名。
用Provider屬性設(shè)置Connection對(duì)象的數(shù)據(jù)庫(kù)提供者的名稱,用ConnectionString屬性指示用于建立到數(shù)據(jù)庫(kù)的連接信息,具體設(shè)置如下:
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0”
MyCnn.ConnectionString=“data Source=d:\教學(xué)管理.mdb”
最后用Mycnn對(duì)象的Open方法打開這個(gè)連接
MyCnn.Open
下面是用Connection對(duì)象建立與ACCESS數(shù)據(jù)庫(kù)教學(xué)管理的連接的完整程序。
Public Sub CnnToDB()
Dim Mycnn as ADODB.Connection ‘定義Connection對(duì)象
Set Mycnn=New ADODB.Connection ’初始化
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定數(shù)據(jù)提供者的名稱
MyCnn.ConnectionString=“data Source=d:\教學(xué)管理.mdb” ’指定數(shù)據(jù)源
MyCnn.Open ‘打開連接
End Sub
斷開與數(shù)據(jù)庫(kù)的連接用Connection對(duì)象的Close方法命令為:
Mycnn.Close
2 Command 對(duì)象
連接到數(shù)據(jù)源后,需要執(zhí)行對(duì)數(shù)據(jù)源的請(qǐng)求,以獲取結(jié)果集,這一類的命令功能封裝在Command對(duì)象中。
Command對(duì)象的作用是用來定義并執(zhí)行針對(duì)數(shù)據(jù)源運(yùn)行的具體命令,如SQL查詢,并通過Recordset對(duì)象返回一個(gè)滿足條件的記錄集。
使用Command對(duì)象,需首先建立一個(gè)Command對(duì)象的實(shí)例,然后通過設(shè)置Command對(duì)象的ActiveConnection屬性使打開的連接與Command
在通過使用CommandText屬性定義命令的可執(zhí)行文本。最后調(diào)用Command對(duì)象的Execute方法執(zhí)行命令并返回記錄集
例:
Dim MyCmd as ADODB.Command ‘定義Command對(duì)象
Set Mycmd=New Adodb.Command ’初始化對(duì)象
MyCmd.ActiveCommand=MyCnn ‘設(shè)置所使用的連接
MyCmd.CommandText=“select * from 課程” ’定義命令
MyCmd.Execute ‘執(zhí)行命令并返回記錄集
3 Recordset對(duì)象
用MyCmd.Execute方法從數(shù)據(jù)源獲取的數(shù)據(jù)就存放在Recordset對(duì)象中,并且所有Recordset對(duì)象均由記錄和字段組成。
使用Recordset對(duì)象也需先定義并初始化一個(gè)Recordset對(duì)象,下面的語句定義并初始化了一個(gè)Recordset對(duì)象MyRS
Dim MyRS as Adodb.Recordset
Set MyRS=New adodb.Recordset
有多種獲取記錄集的方法
(1)接收Command對(duì)象的返回記錄集
Set MyRB=MyCmd.Execute
在定義并設(shè)置了command對(duì)象的ActiveConnection屬性和CommandText屬性之后,可以通過執(zhí)行Command對(duì)象的Execute方法執(zhí)行命令,并將返回的記錄集指定給一個(gè)Recordset對(duì)象。
例如,下面程序?qū)崿F(xiàn)了創(chuàng)建連接、定義命令和獲取數(shù)據(jù)的全部過程
Public Sub CnnToDB()
Dim MyCmd as ADODB.Command ‘定義Command對(duì)象
Set Mycmd=New Adodb.Command ’初始化對(duì)象
Dim MyRS as Adodb.Recordset 定義Recordset對(duì)象
Set MyRS=New adodb.Recordset ‘初始化對(duì)象
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定數(shù)據(jù)提供者的名稱
MyCnn.ConnectionString=“data Source=d:\教學(xué)管理.mdb” ’指定數(shù)據(jù)源
MyCnn.Open ‘打開連接
MyCmd.ActiveCommand=MyCnn ‘設(shè)置所使用的連接
MyCmd.CommandText=“select * from 課程” ’定義命令
MyCmd.Execute ‘執(zhí)行命令并返回記錄集
stop ’斷點(diǎn)
MyCnn.Close ‘釋放內(nèi)存空間
End Sub
(2)使用Recordset對(duì)象的Open方法打開Recordset對(duì)象,格式如下:
Recordset.Open Source ActiveConnection
其中Source可以是SQL命令、Command對(duì)象、表名等
Public Sub CnnToDB()
Dim MyCmd as ADODB.Command ‘定義Command對(duì)象
Set Mycmd=New Adodb.Command ’初始化對(duì)象
Dim MyRS as Adodb.Recordset 定義Recordset對(duì)象
Set MyRS=New adodb.Recordset ‘初始化對(duì)象
Dim strSQL as string
MyCnn.Provider=“Microsoft.jet.OLEDB.4.0” ‘指定數(shù)據(jù)提供者的名稱
MyCnn.ConnectionString=“data Source=d:\教學(xué)管理.mdb” ’指定數(shù)據(jù)源
MyCnn.Open ‘打開連接
strSQL=“select * from 課程”
MyRS.Open strSQL,MyCnn
stop ’斷點(diǎn)
MyCnn.Close ‘釋放內(nèi)存空間
End Sub1
6.7.3 使用記錄集中的數(shù)據(jù)
從數(shù)據(jù)源獲取了數(shù)據(jù)后,就可以對(duì)數(shù)據(jù)進(jìn)行輸出、插入、刪除和更新等操作了,
記錄集的幾個(gè)常用屬性和方法
Bof(begin of File)判斷當(dāng)前游標(biāo)(即記錄指針)是否在第一條記錄之前,如果是,返回True,否則返回False
Eof(End of File)判斷當(dāng)前游標(biāo)(即記錄指針)是否在最后一條記錄之后,如果是,返回True,否則返回False
如果記錄集為空,則Bof和Eof的值均為True。
Movefirst 將游標(biāo)移到第一條記錄
Movelast 將游標(biāo)移到最后一條記錄
Movenext 將游標(biāo)移到下一條記錄
Moveprevious 將游標(biāo)移到上一條記錄
Public sub output()
Dim MyRS as Adodb.Recordset
Set MyRS=New adodb.Recordset
Dim strSQL as string
strSQL=“select * from 課程”
MyCnn.Open strSQL,currentProject
Do While not myrs.eof
debug.print myrs(“課程編號(hào)”),myrs(“課程名稱”)
myrs.movenext
loop
mycnn.close
End sub
2、插入、刪除和更新記錄集中的數(shù)據(jù)
實(shí)現(xiàn)對(duì)記錄集的插入、刪除和更新操作主要使用Recordset對(duì)象的一下幾個(gè)方法。
(1)Addnew方法 該方法主要是對(duì)記錄集添加一條記錄。格式如下:
recordset.AddNew FieldList,Values
如果兩個(gè)參數(shù)省略,則在記錄集中添加一個(gè)空記錄
(2)Delete方法
該方法刪除記錄集中一條或多條記錄,格式:
Recordset.Delete AffectRecords
參數(shù)為刪除數(shù)據(jù)的范圍,默認(rèn)值為當(dāng)前記錄
(3)Update方法
作用是將Recordset對(duì)象中對(duì)當(dāng)前記錄的修改保存到數(shù)據(jù)庫(kù)中。
下面的程序演示了向“課程”表中添加新記錄的過程
public sub add()
dim myrs as adodb.recordset
set myrs =new adodb.recordset
dim strsql as string
dim str 課程編號(hào) as string,str課程名稱 as string
strsql=“select * from 課程”
myrs.open strsql,currentproject
str 課程編號(hào)=trim(inputbox(“輸入課程編號(hào):”))
str 課程名稱=trim(inputbox(“輸入課程名稱:”))
if str 課程編號(hào)<>”” and str 課程名稱<>”” then
myrs.addnew
myrs(“課程編號(hào)”)=str 課程編號(hào)
myrs(“課程名稱”)=str 課程名稱
myrs.update
end if
end sub培訓(xùn)ppt課件模板:這是培訓(xùn)ppt課件模板,包括了文章背景知識(shí),認(rèn)字識(shí)詞朗誦,課文賞析,拓展訓(xùn)練/分組練習(xí)等內(nèi)容,歡迎點(diǎn)擊下載。
幼兒教師師德培訓(xùn)ppt1:這是幼兒教師師德培訓(xùn)ppt1,包括了引言,幼兒園教師師德現(xiàn)狀,幼兒園師德建設(shè)存在的問題,原因分析,對(duì)策建議等內(nèi)容,歡迎點(diǎn)擊下載。
釘釘培訓(xùn)ppt:這是釘釘培訓(xùn)ppt,包括了釘釘軟件介紹,釘釘常用功能,公司啟用釘釘考勤操作指南,公司啟用釘釘時(shí)間等內(nèi)容,歡迎點(diǎn)擊下載。