版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、模塊9 數(shù)據(jù)庫應(yīng)用的開發(fā)任務(wù)1 數(shù)據(jù)庫基礎(chǔ)任務(wù)2 用Data控件訪問數(shù)據(jù)庫任務(wù)3 使用ADO控件訪問數(shù)據(jù)庫 VB具有強(qiáng)大的數(shù)據(jù)庫操作功能,提供了包含數(shù)據(jù)管理器(Data Manager)、數(shù)據(jù)庫控件(Data control)以及ADO ( ActiveX對(duì)象)等功能強(qiáng)大的工具,利用VB能夠開發(fā)各種數(shù)據(jù)庫應(yīng)用系統(tǒng),建立多種類型的數(shù)據(jù)庫,并加以管理、維護(hù)和使用這些數(shù)據(jù)庫。 VB提供了兩種建立數(shù)據(jù)庫的方法,分別是: (1)使用可視化數(shù)據(jù)管理器,不需要編程就可以創(chuàng)建數(shù)據(jù)庫; (2)使用VB的DAO部件通過編程的方法創(chuàng)建數(shù)據(jù)庫。下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ)任務(wù)1 數(shù)據(jù)庫基礎(chǔ)9.1.1 數(shù)據(jù)庫的基礎(chǔ)知識(shí)
2、 隨著社會(huì)的發(fā)展,人們對(duì)數(shù)據(jù)庫的管理經(jīng)過了3個(gè)階段。第一階段是人工管理階段,特點(diǎn)是數(shù)據(jù)不長期保存,沒有軟件系統(tǒng)對(duì)數(shù)據(jù)庫進(jìn)行管理,沒有文件的概念,一組數(shù)據(jù)對(duì)應(yīng)一個(gè)程序;第二階段采用文件管理方式,特點(diǎn)是數(shù)據(jù)不再是程序的組成部分,而是有組織、有結(jié)構(gòu)地構(gòu)成文件的形式,形成數(shù)據(jù)文件;第三階段是數(shù)據(jù)庫管理方式,特點(diǎn)是對(duì)所有數(shù)據(jù)實(shí)行統(tǒng)一、集中、獨(dú)立的管理,數(shù)據(jù)獨(dú)立于程序存在,并可以提供給各類不同用戶使用。 上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 數(shù)據(jù)庫根據(jù)數(shù)據(jù)組織方式不同而有不同的類型,較常見的有采用無向圖形結(jié)構(gòu)的網(wǎng)絡(luò)模型數(shù)據(jù)庫、采用樹型結(jié)構(gòu)的分層結(jié)構(gòu)數(shù)據(jù)庫以及采用二維表結(jié)構(gòu)的關(guān)系型數(shù)據(jù)庫。 關(guān)系型數(shù)據(jù)庫是目前
3、最流行的數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫把數(shù)據(jù)組織成一張或多張二維的表格,即關(guān)系表,多張彼此關(guān)聯(lián)的表格群組形成數(shù)據(jù)庫。可以采用現(xiàn)代數(shù)學(xué)理淪和方法對(duì)數(shù)據(jù)進(jìn)行處理,它提供了結(jié)構(gòu)化查詢語言SQL,SQL語言是標(biāo)準(zhǔn)的可應(yīng)用于各種不同形式的數(shù)據(jù)庫的語言。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 關(guān)系型數(shù)據(jù)庫使用記錄、字段、數(shù)據(jù)表和數(shù)據(jù)庫等術(shù)語,解釋如下。 記錄(Record ):每一行數(shù)據(jù)為一個(gè)記錄。 字段(Field):每一列為一個(gè)字段,數(shù)據(jù)表頭的每一列為字段名稱。 數(shù)據(jù)表(Table):經(jīng)過各個(gè)字段的分類后,每一行為一個(gè)記錄,所有的記錄組成的二維表格稱為數(shù)據(jù)表。 數(shù)據(jù)庫(Data Base):多個(gè)相關(guān)聯(lián)的數(shù)據(jù)表的集合
4、。以一定的組織形式存放在計(jì)算機(jī)存儲(chǔ)介質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。 主鍵(Primary Key):關(guān)系數(shù)據(jù)庫中的某個(gè)字段或某些字段的組合定義為主鍵。每條記錄的主鍵值都是唯一的,這就保證了可以通過主鍵唯一標(biāo)識(shí)一條記錄。 數(shù)據(jù)庫管理系統(tǒng)(Database Managemenl System,DBMS):是操縱和管理數(shù)據(jù)庫系統(tǒng)的軟件。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 在關(guān)系型數(shù)據(jù)表中每一個(gè)字段不可再分解,也不能有名字相同的字段;每一列中的數(shù)據(jù)都有相同的數(shù)據(jù)類型;表中沒有內(nèi)容完全相同的行(記錄)。表9-1即為常見的關(guān)系型數(shù)據(jù)表。 對(duì)關(guān)系型數(shù)據(jù)庫要掌握的三點(diǎn)是:第一,確立數(shù)據(jù)庫的結(jié)構(gòu),即建立多張表的二
5、維關(guān)系結(jié)構(gòu);第二,向表中添加具體數(shù)據(jù);第三,對(duì)數(shù)據(jù)庫的操作實(shí)現(xiàn)數(shù)據(jù)的管理。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ)9. 1. 2建立數(shù)據(jù)庫 一個(gè)班級(jí)管理的數(shù)據(jù)庫(bjgl)由兩張數(shù)據(jù)表組成,分別為班級(jí)基本情況表(bilbak) .學(xué)生成績表(xscj)。 班級(jí)基本情況表共有9個(gè)字段:“姓名”、“學(xué)號(hào)”、“出生年月”、“性別”、“專業(yè)”、“聯(lián)系電話”、“家庭住址”、“照片”及“備注”,反映班級(jí)基本信息的數(shù)據(jù)表。結(jié)構(gòu)如圖9-1所示,并且已經(jīng)添加了數(shù)據(jù)。 學(xué)生成績表有4個(gè)字段: “學(xué)號(hào)”、“課程名稱”、“成績”和“學(xué)分”,用來反映學(xué)生的各科成績信息,如圖9-2所示。 上面兩張表的結(jié)構(gòu)已經(jīng)確立,并進(jìn)行了數(shù)據(jù)
6、的添加,對(duì)這兩張表中的數(shù)據(jù)還要進(jìn)行查詢、修改和刪除等操作,從而實(shí)現(xiàn)對(duì)班級(jí)管理和數(shù)據(jù)庫的管理。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ)9. 1. 3建立并維護(hù)數(shù)據(jù)庫表 數(shù)據(jù)庫管理器,是一個(gè)可獨(dú)立運(yùn)行的VisData. exe。它隨安裝過程放置在VB目錄中,可單獨(dú)運(yùn)行,也可以在VB開發(fā)環(huán)境中啟動(dòng),用于快速建立數(shù)據(jù)庫結(jié)構(gòu)及數(shù)據(jù)庫內(nèi)容。 VB有關(guān)數(shù)據(jù)庫的操作,比如數(shù)據(jù)庫結(jié)構(gòu)的建立、記錄的添加及修改以及用ODBC連接到服務(wù)器端的數(shù)據(jù)庫,如SQL Sever都可以利用此工具來完成。 在VB環(huán)境下,選擇“外接程序”菜單中的“可視化數(shù)據(jù)管理器”命令,即可打開如圖9-3所示的可視化數(shù)據(jù)管理器窗口,進(jìn)入數(shù)據(jù)庫設(shè)計(jì)界面。
7、上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 1.創(chuàng)建多種類型的數(shù)據(jù)庫 如圖9-4所示,選擇“文件” “新建” Microsofl Access命令,接著選擇Version 7. 0MDB命令,出現(xiàn)“選擇要?jiǎng)?chuàng)建的Microsoft Access”對(duì)活框,選擇要新建數(shù)據(jù)庫的路徑并輸入數(shù)據(jù)庫名,這里輸入的路徑是“D ; vb”,文件名為“bjgl. mdb”,確認(rèn)后,在數(shù)據(jù)管理器中出現(xiàn)如圖9-5所示的“數(shù)據(jù)庫窗口”和“SQL語句”兩個(gè)子窗口,“數(shù)據(jù)庫窗口”中顯示數(shù)據(jù)庫的結(jié)構(gòu),包括“表名”、“列名”、“索引” “SQL語句”窗口可以用于輸入一些SQL命令,針對(duì)數(shù)據(jù)庫中的表進(jìn)行查詢操作。此時(shí)使用可視化數(shù)據(jù)管理器
8、建立的數(shù)據(jù)庫是Access數(shù)據(jù)庫(類型名為.mdb ),可以被Access直接打開和操作,但此時(shí)新建的數(shù)據(jù)庫不含任何數(shù)據(jù)表。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 從圖9-5的菜單中,可以看到數(shù)據(jù)庫管理器除了可以創(chuàng)建Access類型的數(shù)據(jù)庫外,還可以創(chuàng)建dBase , FoxPro , ODBC等多種類型的數(shù)據(jù)庫。使用幾種比較流行的“索引順序訪問文件法(ISAM)”數(shù)據(jù)庫,包括dBase3、 dBase4 、 FoxPro2. 0 、 FoxPro2. 5以及Paradox3和4. x,在VB中可以創(chuàng)建和操作所有這些格式的數(shù)據(jù)庫;可以訪問文本文件數(shù)據(jù)庫和Excel或Lotusl-2-3電子表格文件
9、;以及 ODBC數(shù)據(jù)庫(包括符合ODBC標(biāo)準(zhǔn)的客戶機(jī)/服務(wù)器數(shù)據(jù)庫,如Microsoft SQL Server。如果要在VB中創(chuàng)建真正的客戶機(jī)/服務(wù)器應(yīng)用程序,可以使用ODBC Direct直接把數(shù)據(jù)傳遞給服務(wù)器處理)。 上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 如圖9-6所示,VisData窗口第三行工具欄上的按鈕分為三組,它們的名稱和功能如下。 (1)類型群組按鈕。 工具欄的第一組按鈕,它可以設(shè)置記錄集的訪問方式,具體如下。 “表類型記錄集”按鈕(最左邊的按鈕):當(dāng)以這種方式打開數(shù)據(jù)庫的數(shù)據(jù)時(shí),所進(jìn)行的增加、刪除、修改、查詢等操作都是直接更新數(shù)據(jù)庫中的數(shù)據(jù)。 “動(dòng)態(tài)集類型記錄集”按鈕(中間的按鈕
10、):使用這種方式是先將指定的數(shù)據(jù)打開并讀入到內(nèi)存中,當(dāng)用戶進(jìn)行數(shù)據(jù)編輯操作時(shí),不直接影響數(shù)據(jù)庫中的數(shù)據(jù)。使用這種方式可以加快運(yùn)行速度。 “快照類型記錄集”按鈕(最右邊的按鈕):以這種類型顯示的數(shù)據(jù)只能讀不能改,適用于只查詢的情況。 上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) (2)數(shù)據(jù)群組按鈕。 工具欄中間的一組按鈕,用于指定數(shù)據(jù)表中數(shù)據(jù)的顯示方式。先在顯示風(fēng)格的按鈕上單擊一下,然后選中某個(gè)要顯示數(shù)據(jù)的數(shù)據(jù)表,右擊,在彈出的菜單上選擇“打開”命令,則此表中的數(shù)據(jù)就以所要求的形式顯示出來了。 (3)事物方式群組按鈕。工具欄的最后一組按鈕,用于進(jìn)行事物處理。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 2.建立Mi
11、crosoft Access表結(jié)構(gòu) 在上一節(jié)中創(chuàng)建了一個(gè)新的Access數(shù)據(jù)庫bjgl. mdb,如圖9-7所示。將鼠標(biāo)移到“數(shù)據(jù)庫窗口”區(qū)域內(nèi),右擊,在彈出的菜單中選擇“新建表”命令,出現(xiàn)如圖9-8所示的“表結(jié)構(gòu)”對(duì)話框,利用該對(duì)話框可以建立數(shù)據(jù)表的結(jié)構(gòu)。首先建立班級(jí)基本情況表。在“表名稱”文本框中輸入“班級(jí)基本情況表”,然后添加班級(jí)基本情況表的字段,單擊“添加字段”按鈕,在此對(duì)話框中輸入“姓名”字段的信息,主要包括字段的名稱、類型、大小長度等。按順序輸入“姓名”、“學(xué)號(hào)”、“出生年月”、“性別”、“專業(yè)”、“相片”、“備注”以及“家庭住址”和“聯(lián)系電話”字段,然后單擊“關(guān)閉”按鈕返回到“表
12、結(jié)構(gòu)”對(duì)話框中,最后還可以繼續(xù)建立多張表結(jié)構(gòu)。添加的字段屬性如表9-2所示。 上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 建立了表的結(jié)構(gòu)后就可以建立此表的索引了,這樣可以加快檢索速度。單擊“添加索引”按鈕,會(huì)出現(xiàn)圖9 -9所示的對(duì)話框,通過此對(duì)話框?qū)?shù)據(jù)表的某些字段設(shè)置為索引。在“名稱”文本框中輸入索引的名稱,然后從下邊的“可用字段”列表框中選擇作為索引的字段,這里選擇的是“學(xué)號(hào)”。最后返回到“表結(jié)構(gòu)”對(duì)話框中,單擊“生成表”按鈕,會(huì)在“數(shù)據(jù)庫窗口”中出現(xiàn)“班級(jí)基本信息表”選項(xiàng)。 如果需要建立多個(gè)索引,則每建立完一項(xiàng)索引后,單擊“確定”按鈕,然后繼續(xù)下一個(gè)索引的設(shè)置。設(shè)置完畢后,單擊“關(guān)閉”按鈕返回到
13、“表結(jié)構(gòu)”對(duì)話框。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) 3.添加Microsoft Access表記錄 數(shù)據(jù)表建立好之后,就可以向表中輸入數(shù)據(jù)添加Microsoft Access表記錄了,數(shù)據(jù)管理器提供了簡單的數(shù)據(jù)錄入功能。 首先在工具欄上單擊DBGrid顯示風(fēng)格的按鈕,在數(shù)據(jù)庫窗口中選擇要添加數(shù)據(jù)的表,右擊,如圖9-10所示,選擇“打開”命令,則出現(xiàn)以“網(wǎng)格風(fēng)格”顯示數(shù)據(jù)的數(shù)據(jù)錄入界面窗口,如果此表中已有數(shù)據(jù),則此時(shí)會(huì)顯示出此表中的全部數(shù)據(jù);若此表中無數(shù)據(jù),則會(huì)顯示出一個(gè)空表。如圖9-11所示,這里以班級(jí)基本情況為例,并且是輸入了部分?jǐn)?shù)據(jù)后的情況。在此表上可以實(shí)現(xiàn)數(shù)據(jù)記錄的增加、刪除、修改和保
14、存等。上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) VB的數(shù)據(jù)管理器提供了一個(gè)圖形化的設(shè)置查詢條件的窗口查詢生成器,數(shù)據(jù)表建立好之后,可以對(duì)表中的數(shù)據(jù)進(jìn)行有條件或無條件的查詢。 選擇“實(shí)用程序”菜單中的“查詢生成器”按鈕,或在“數(shù)據(jù)庫窗口”區(qū)域右擊,然后在彈出的菜單中選擇“新查詢”命令,即可出現(xiàn)“查詢生成器”對(duì)話框,如圖9-12所示。 假設(shè)要查詢所有男生的“姓名”、“學(xué)號(hào)”和“專業(yè)”情況。操作步驟如下。 上一頁下一頁返回任務(wù)1 數(shù)據(jù)庫基礎(chǔ) (1)首先選擇要進(jìn)行查詢的數(shù)據(jù)表,此處為“班級(jí)基本情況表”。 (2)在“字段名稱”下拉列表框中選擇“班級(jí)基本情況.姓名”。 (3)選擇“運(yùn)算符”下拉列表框中的“=”。
15、 (4)單擊“列出可能的值”按鈕,在“值”下拉列表框中輸入“False (5)單擊“將And加入條件”按鈕,將條件加入“條件”對(duì)話框中。 (6)在“要顯示的字段”列表框中,選定所要顯示的字段。 (7)單擊“運(yùn)行”按鈕,在隨后出現(xiàn)的對(duì)話框中,單擊“否”按鈕,查詢結(jié)果如圖9-13所示。上一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 在Visual Basic中,應(yīng)用程序并不直接訪問數(shù)據(jù)庫中的數(shù)據(jù)信息,而是通過特定的接口技術(shù),根據(jù)需要在數(shù)據(jù)庫的基礎(chǔ)上先生成記錄集(Recordset)對(duì)象,再以此為數(shù)據(jù)源并借助數(shù)據(jù)綁定控件對(duì)記錄進(jìn)行瀏覽與操作。 Data控件是Visual Basic用來建立和進(jìn)行數(shù)據(jù)庫訪
16、問的標(biāo)準(zhǔn)內(nèi)部控件(已經(jīng)在控件工具箱中),用Data控件可以訪問Access , dBase , FoxPro , Paradox等數(shù)據(jù)庫。內(nèi)在的Data控件通過使用Microsoft的.Jet數(shù)據(jù)庫引擎來實(shí)現(xiàn)數(shù)據(jù)庫訪問,與Microsoft Access所用的數(shù)據(jù)庫引擎相同。使用這種內(nèi)在的Data控件創(chuàng)建的應(yīng)用程序,可以實(shí)現(xiàn)顯示、編輯和更新來自多種已有的數(shù)據(jù)庫的信息。 下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 數(shù)據(jù)控件提供了一種方便地訪問數(shù)據(jù)庫中數(shù)據(jù)的方法,使用數(shù)據(jù)控件無須編寫代碼就可以對(duì)VB所支持的各種類型的數(shù)據(jù)庫執(zhí)行大部分?jǐn)?shù)據(jù)訪問操作,Data控件只能承擔(dān)連接數(shù)據(jù)庫并負(fù)責(zé)提供應(yīng)用程序數(shù)據(jù)
17、源的工作,數(shù)據(jù)庫執(zhí)行大部分?jǐn)?shù)據(jù)訪問操作,Data控件只能承擔(dān)連接數(shù)據(jù)庫并負(fù)責(zé)提供相關(guān)數(shù)據(jù)源的工作,數(shù)據(jù)控件本身不能顯示和直接修改記錄,只能在與數(shù)據(jù)控件相關(guān)聯(lián)的數(shù)據(jù)綁定中顯示各個(gè)記錄。要想觀察數(shù)據(jù)庫中的數(shù)據(jù)信息,必須通過相應(yīng)的數(shù)據(jù)綁定控件才能實(shí)現(xiàn)。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫9. 2. 1 Data常用屬性 1. Connect屬性 Visual Basic 6. 0默認(rèn)的數(shù)據(jù)庫類型是Access的MDB文件??勺R(shí)別的數(shù)據(jù)庫包括: (1)Borland dBasc,Microsoft Foxpro的DBF文件。 (2)Borland Paradox的DB文件。 (3)Nove
18、ll Btrieve的DDF文件。 (4)Microsoft Excel的XLS文件。 (5)Lotus的WKS文件。 (6) Open DataBasc Connectivity ( ODBC)數(shù)據(jù)庫。 如圖9一14所示,通過屬性窗口設(shè)置Connect屬性,單擊Connect屬性右邊的按鈕,在出現(xiàn)的下拉菜單中進(jìn)行選擇即可。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 2. DatabaseName屬性 指定具體使用的數(shù)據(jù)庫文件名,包括所有的路徑名。 例如,要連接一個(gè)Microsoft Access的數(shù)據(jù)庫C ; vbbjgl. mdb,則設(shè)置DatabaseName=C : vb bjg
19、l. mdb, Access數(shù)據(jù)庫的所有表都包含在一個(gè)MDB文件中。 要在運(yùn)行時(shí)設(shè)置,可以用如下代碼: Data1 .databasename= C:vbbjgl. mdb上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 3. RecordSource屬性 用于確定具體可訪問的數(shù)據(jù)。該數(shù)據(jù)可以是數(shù)據(jù)庫中的整張表的數(shù)據(jù)。例如,要指定bjgl. mdb數(shù)據(jù)庫中的基本信息表,則在屬性窗口中單擊RecordSource屬性右邊的按鈕,出現(xiàn)下拉菜單后選擇“班級(jí)基本情況表”即可;也可以是某張表中的部分?jǐn)?shù)據(jù),使用SQL查詢語言的一個(gè)查詢字符串。例如,RecordSource = Select * From班
20、級(jí)基本情況表Where性別=-1 ,則表示要訪問班級(jí)基本情況表中所有男生的數(shù)據(jù)。 Connect , DatabaseName , RecordSource這3個(gè)基本屬性是利用數(shù)據(jù)訪問控件訪問數(shù)據(jù)庫時(shí)必須設(shè)置的。它們可以通過屬性窗口進(jìn)行設(shè)置,也可以通過運(yùn)行時(shí)在Formload事件中設(shè)置。若在運(yùn)行時(shí)設(shè)置,可以用如下代碼: Datal .connect=“Access”上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 4. Recordest屬性 在用戶設(shè)計(jì)時(shí),在屬性窗口見不到它, Recordest.指數(shù)據(jù)庫中所有數(shù)據(jù)的集合。對(duì)數(shù)據(jù)庫操作的許多方法都作用到這個(gè)屬性上。 5. ReadOnly屬性
21、 它有兩種取值,示例如下: Data1. ReadOnly = True:此時(shí),用戶不能對(duì)數(shù)據(jù)記錄進(jìn)行修改。 Data1. ReadOnly = False:表示用戶對(duì)數(shù)據(jù)記錄的任何修改都是有效的。 ReadOnly屬性的默認(rèn)值是False 6. Exclusive屬性 用法如下: Data1. Exclusive = True:禁止其他用戶使用數(shù)據(jù)庫。 Data1. Exclusive = False:允許其他用戶使用數(shù)據(jù)庫。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 7. Exclusive的默認(rèn)值是False 需要注意的是,當(dāng)使用Data1. Exclusive = True語句禁
22、止其他用戶使用數(shù)據(jù)庫以后,如果又允許其他用戶使用數(shù)據(jù)庫,僅有Data1. Exclusive = False一個(gè)語句是不行的,必須在它后面使用Data1. Refresh語句,其設(shè)置才有效。 8. EofAction和BofAction屬性 當(dāng)記錄指牛l一指向Recordest對(duì)象的開始(第一個(gè)記錄前)或結(jié)束(最后一個(gè)記錄后)處時(shí),數(shù)據(jù)控件的EofAction和BofAction屬性的設(shè)置或返回值決定了數(shù)據(jù)控件要采取的操作。屬性的取值如表9-3所示。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫9. 2. 2 Data數(shù)據(jù)控件的事件 1. Reposition事件 在數(shù)據(jù)控件中移動(dòng)記錄指針,
23、當(dāng)一條記錄成為當(dāng)前記錄時(shí)觸發(fā)Reposition。通常,可以在這個(gè)事件中顯示當(dāng)前指針的位置。 例如,在Data1 Reposition事件中加入代碼: Private Sub Data1 Reposition() Data1.Caption=Data1.Recordset. AbsolutePosition +1 End Sub 這里Reposition可以定位記錄集對(duì)象,AbsolutePosition屬性指示當(dāng)前指針值(從0開始)。當(dāng)單擊數(shù)據(jù)控件對(duì)象上的箭頭按鈕時(shí),數(shù)據(jù)控件的標(biāo)題區(qū)內(nèi)(Data1處)會(huì)顯示記錄的序號(hào)。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 2. Validata事
24、件 如果移動(dòng)數(shù)據(jù)控件中的記錄指針,當(dāng)綁定控件中的內(nèi)容被修改時(shí),對(duì)應(yīng)的數(shù)據(jù)庫當(dāng)前記錄的內(nèi)容將被更新,此時(shí)觸發(fā)該事件。 Validata事件檢查被數(shù)據(jù)控件綁定的控件內(nèi)的數(shù)據(jù)是否發(fā)生變化,并通過Save參數(shù)(True或False)判斷是否有數(shù)據(jù)發(fā)生變化,Action參數(shù)判斷哪一種操作觸發(fā)了Validata事件,如表9-4所示。 例如,如果不允許用戶在數(shù)據(jù)瀏覽時(shí)一般可用Validata事件來檢查數(shù)據(jù)的有效性空性別數(shù)據(jù)上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 可使用代碼: Private Sub Data1 Validate( Action As Integer,Save As Integer)
25、 If Save And Len( Trim(text3)=0 Then Action=0 MsgBox“勝別不能為空!” End If Fnd Sub 此代碼檢查被數(shù)據(jù)控件綁定的控件Tex l3內(nèi)的數(shù)據(jù)是否被清空。如果Tex t3內(nèi)的數(shù)據(jù)發(fā)生變化,則Save參數(shù)返回True,若性別對(duì)應(yīng)的文本框Text3被置空,則通過Action =0取消對(duì)數(shù)據(jù)控件的操作。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫9. 2. 3 Data數(shù)據(jù)控件的方法 1. Refresh方法 如果DatabaseName , ReadOnly , Exclusive或Conned屬性設(shè)置的值發(fā)生改變,可以使用Refr
26、esh方法打開或重新打開數(shù)據(jù)庫,用Refresh方法可以更新數(shù)據(jù)控件的集合內(nèi)容。 2. UpdateControls方法 UpdateControls方法可以從數(shù)據(jù)控件的記錄集中再取回原先的記錄內(nèi)容,即恢復(fù)原先值。當(dāng)在與數(shù)據(jù)控件鏈接的控件中修改了記錄內(nèi)容,可以用UpdateControls 方法使這些控件顯示恢復(fù)原來的值。 3. UpdateRecord方法 強(qiáng)制數(shù)據(jù)控件將綁定控件內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫9. 2. 4 Data數(shù)據(jù)控件上的對(duì)象 1. Database對(duì)象 在Data控件中,DatabaseName屬性用來連接到一個(gè)具體的數(shù)據(jù)庫,并通
27、過它的Dalabasc屬性表現(xiàn)出來。 2.記錄集Recordset對(duì)象 由Recordset確定的具體訪問的數(shù)據(jù)構(gòu)成的記錄集, Recordset也是對(duì)象,因而,它和其他對(duì)象一樣具有屬性和方法。一個(gè)Recordset對(duì)象可代表一個(gè)數(shù)據(jù)庫表里的記錄,或運(yùn)行依次查詢所得的記錄結(jié)果。在Data控件中可有3類Recordset對(duì)象,即Table(表類型)、Dynaset(動(dòng)態(tài)類型)和Snapshot(快照類型),默認(rèn)為Dynaset類型。 在實(shí)際操作中使用了什么記錄集關(guān)鍵取決于要完成的任務(wù)。表類型的記錄集適合更新數(shù)據(jù),其搜索速度不及動(dòng)態(tài)類型??煺疹愋偷挠涗浖瘍?nèi)存開銷最小,適合顯示只讀數(shù)據(jù)。上一頁下一頁
28、返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 下面列出記錄集常用的屬性和方法。 (1)AbsolutePosition屬性。 AbsolutePosition返回當(dāng)前指針值,如果是第一條記錄,其值是0,該屬性為只讀屬性。 (2)Bof和Eof屬性。 Bof判定記錄指針是否在首記錄之前,若Bof為True,則當(dāng)前位置位于記錄集的第一條記錄之前。與此類似,Eof判定記錄指牛l一是否在末記錄之后。 (3)Bookmark屬性。 Bookmark屬性的值采用字符串類型,用于設(shè)置或返回當(dāng)前指伸一的標(biāo)簽。在程序中可以使用Bookmark屬性重定位記錄的指針時(shí),不能使用AbsolutePosition屬性。 (4)
29、Nomatch屬性。 在記錄集中進(jìn)行查找時(shí),如果找到相匹配的記錄,則Recordset的Nomatch屬性為False;否則,為True該屬性常與Bookmark屬性一起使用。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 (5)RecordCount屬性。 RecordCount屬性對(duì)Recordset對(duì)象中的記錄計(jì)數(shù),該屬性為只讀屬性。在多用戶環(huán)境下,RecordCount屬性值可能不準(zhǔn)確,為了獲得準(zhǔn)確值,在讀取RecordCount屬性值之前,可使用MoveLast方法將記錄指針移至最后一條記錄上。 (6) Move方法。 使用Move方法可代替對(duì)數(shù)據(jù)控件對(duì)象的4個(gè)箭頭操作而遍歷整個(gè)記
30、錄集。5種Move方法如下。 MoveFirsl方法:移至第一條記錄。 MoveLasl方法:移至最后一條記錄。 MoveNexl方法:移至下一條記錄。 MovePrevious方法:移至上一條記錄。 Moven方法:向前或向后移n條記錄,n為指定的數(shù)值。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫9. 2. 5實(shí)現(xiàn)數(shù)據(jù)庫記錄的操作方法 對(duì)數(shù)據(jù)庫記錄的操作,可通過Recordset對(duì)象的方法實(shí)現(xiàn)。 1. Addnew方法 在語句Datal. Recordset. Addnew中,表示向數(shù)據(jù)控件所連接的數(shù)據(jù)庫中增加一個(gè)空的記錄。新記錄的每個(gè)字段如果有默認(rèn)值將以默認(rèn)值表示,如果沒有則為空白。例
31、如,給Datal的記錄集添加新記錄: Datal. Recordset. Addnew 這一功能在執(zhí)行了Datal. Recordset. Update后生效。 2. Update方法 用在語句Datal. Recordset. Update中,表示向系統(tǒng)發(fā)送一個(gè)更新數(shù)據(jù)庫的命令。上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 3. MoveLast方法 用在語句Datal. Recordset. MovcLast中,表示把數(shù)據(jù)庫記錄指牛l一指向最后一記錄。 4. Delete方法 Delete用于刪除當(dāng)前記錄的內(nèi)容,在刪除后應(yīng)將當(dāng)前記錄移到下一個(gè)記錄。 5. Edit方法 Edit用于對(duì)可
32、更新的當(dāng)前記錄進(jìn)行編輯修改。 6. Seek方法 Seek方法適用于數(shù)據(jù)表類型(Table)記錄集,通過一個(gè)已被設(shè)置為索引(Index)的字段,查找符合條件的記錄,并使該記錄為當(dāng)前記錄。 格式:記錄集. Seek比較式,key 1 , key2 , , key 13 例如,當(dāng)索I為“學(xué)號(hào)”字段時(shí),查找學(xué)號(hào)為“2002110020”的記錄:Datal. Recordset. Seek “:”,2002110020 上一頁下一頁返回任務(wù)2 用Data控件訪問數(shù)據(jù)庫 7. Find方法 Find方法用于查找記錄,包含F(xiàn)indFirst, FindLast, FindNext和FindPrevious
33、方法。例如,查找“學(xué)號(hào)”字段為“2002110021”的記錄: Datal. Recordset. FindFirst 學(xué)號(hào)=2002110021 If Datal. Recordset. NoMatch then Msgbox 找不到2002110021號(hào)學(xué)生 End if 通常當(dāng)查找不到符合條件的記錄時(shí),需要顯示信息提示用戶,因此使用NoMatch屬性,當(dāng)使用Find或Seek方法找不到相符的記錄時(shí)NoMatch屬性值為True 8. Move方法 Move方法群組是用于移動(dòng)記錄,包含MoveFirst, MoveLast, MovcNext和MovcPrevious 4種方法,分別是移到
34、第一條記錄、移到最后一條記錄、移到下一條記錄和移到前一條記錄。當(dāng)在最后一個(gè)記錄時(shí),如果使用了MovcNext方法時(shí),EOF的值會(huì)變?yōu)門rue,如果再使用MovcNext方法就會(huì)出錯(cuò)。對(duì)于MovcPrevious方法,如果前移,結(jié)果也是同樣。 9. Update方法 Update方法用于將修改的記錄內(nèi)容保存到數(shù)據(jù)庫中。上一頁返回任務(wù)3 使用ADO控件訪問數(shù)據(jù)庫9. 3. 1 ADO的數(shù)據(jù)庫訪問技術(shù) 數(shù)據(jù)庫使用的數(shù)據(jù)源可能像文本文件一樣簡單,也可能非常復(fù)雜,或者是尚未定義類型的某種數(shù)據(jù)。需要一個(gè)簡單、一致的數(shù)據(jù)訪問窗口,訪問和修改眾多類型的數(shù)據(jù)源。 在VB中,用戶可使用3種數(shù)據(jù)訪問接口,即Acti
35、ve X數(shù)據(jù)對(duì)象(ADO)、數(shù)據(jù)訪問對(duì)象(DAO)和遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO),這3種接口代表了數(shù)據(jù)訪問技術(shù)的3個(gè)發(fā)展時(shí)代,其中最新的是ADO,它最簡單也最靈活,因此用戶最好采用ADO作為數(shù)據(jù)訪問接口。 ADO又稱為OLE自動(dòng)化接口,是訪問由Microsoft推出的最新、功能最強(qiáng)的應(yīng)用程序接口。ADO Data控件是ActiveX數(shù)據(jù)對(duì)象,ADO Data控件和Data控件在概念上很相似,都是將一個(gè)數(shù)據(jù)源連接到一個(gè)數(shù)據(jù)感知控件,也都有相同的外觀(共4個(gè)按鈕)。不過,ADO的適用性更強(qiáng),在應(yīng)用程序中也可直接使用ADO。下一頁返回任務(wù)3 使用ADO控件訪問數(shù)據(jù)庫9. 3. 2 ADO Data控件 ADO Data控件是與D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 呼風(fēng)喚雨說課稿
- 合理利用網(wǎng)絡(luò)說課稿
- 海上日出的說課稿精讀
- 實(shí)驗(yàn)室用電安全注意事項(xiàng)
- 員工網(wǎng)絡(luò)安全協(xié)議
- 交通行業(yè)網(wǎng)絡(luò)施工合同范本
- 餐飲業(yè)制服管理要點(diǎn)
- 歷史建筑內(nèi)套房租賃協(xié)議
- 汽車租賃:租賃合同培訓(xùn)
- 06-2018泥石流災(zāi)害防治工程勘查規(guī)范(試行)
- 洛陽市女職工生育保險(xiǎn)待遇申報(bào)表
- 2023年旅行社經(jīng)營管理教案
- 扁桃體炎-課件
- 蘇教版五年級(jí)數(shù)學(xué)上冊《小數(shù)乘小數(shù)》說課稿
- 探放水操作工安全風(fēng)險(xiǎn)管控措施
- 體育與健康 五禽戲(2022年秋2021級(jí))學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- DBJ-T13-368-2021 福建省陶粒增強(qiáng)型輕質(zhì)墻板應(yīng)用技術(shù)標(biāo)準(zhǔn)
- Unit 5 Dinners ready A Lets spell(說課稿)人教PEP版英語四年級(jí)上冊
- 藝術(shù)設(shè)計(jì)專業(yè)人才需求報(bào)告
- 中醫(yī)醫(yī)療技術(shù)手冊目錄(普及版)
評(píng)論
0/150
提交評(píng)論