Visual Basic 程序設(shè)計(jì)教程第7章_第1頁
Visual Basic 程序設(shè)計(jì)教程第7章_第2頁
Visual Basic 程序設(shè)計(jì)教程第7章_第3頁
Visual Basic 程序設(shè)計(jì)教程第7章_第4頁
Visual Basic 程序設(shè)計(jì)教程第7章_第5頁
已閱讀5頁,還剩166頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章數(shù)據(jù)庫訪問技術(shù)

7.1數(shù)據(jù)庫基礎(chǔ)

7.1.1數(shù)據(jù)庫理論基礎(chǔ)知識

7.1.2VisualBasic6.0數(shù)據(jù)庫訪問技術(shù)的發(fā)展7.2可視化數(shù)據(jù)管理器VISDATA7.3Data控件

7.3.1Data控件的常用屬性

7.3.2Data控件的常用事件和方法

7.3.3記錄集對象(Recordset)7.4數(shù)據(jù)綁定控件

7.4.1數(shù)據(jù)綁定控件

7.4.2使用高級數(shù)據(jù)綁定控件訪問數(shù)據(jù)庫7.5ADO對象模型

7.5.1ADO對象模型簡介

7.5.2ADODC控件7.6SQL語言返回第7章數(shù)據(jù)庫訪問技術(shù)

本章目的:通過本章學(xué)習(xí)了解和掌握有關(guān)VB的數(shù)據(jù)庫訪問技術(shù)及應(yīng)用。本章的重點(diǎn)是VB訪問數(shù)據(jù)庫的方法。難點(diǎn)是ADO對象模型和SQL語言的應(yīng)用。7.1數(shù)據(jù)庫基礎(chǔ)7.1.1數(shù)據(jù)庫理論基礎(chǔ)知識數(shù)據(jù)庫:簡單地說就是存儲數(shù)據(jù)的倉庫。類型:按著組織數(shù)據(jù)的方式不同分為三種類型,分別是層次模型數(shù)據(jù)庫、網(wǎng)狀模型數(shù)據(jù)庫和關(guān)系模型數(shù)據(jù)庫。(層次模型數(shù)據(jù)庫和網(wǎng)狀模型數(shù)據(jù)庫統(tǒng)稱為非關(guān)系模型數(shù)據(jù)庫)關(guān)系數(shù)據(jù)庫是以關(guān)系模型為基礎(chǔ)的數(shù)據(jù)庫,它利用關(guān)系來描述不同的對象。學(xué)號姓名性別年齡成績1王楠男185372李麗女205923張飛男19489……

7.1.1數(shù)據(jù)庫理論基礎(chǔ)知識關(guān)系實(shí)質(zhì)上就是一張二維表,表的每一行稱為一條記錄,每一列稱為一個字段,每個記錄由若干字段組成,用于描述一個對象。如下表所示。在數(shù)據(jù)庫中經(jīng)常用到以下幾個概念:視圖、鍵、外來鍵、索引等等。

7.1.2VisualBasic6.0數(shù)據(jù)庫訪問技術(shù)的發(fā)展VisualBasic從發(fā)表之初到現(xiàn)在,其數(shù)據(jù)庫訪問技術(shù)主要經(jīng)歷了以下幾個重要階段:

1.DataAccessObjects(DAO)DAO數(shù)據(jù)訪問對象是VisualBasic最先采用的面向?qū)ο蟮臄?shù)據(jù)庫訪問接口。VisualBasic通過DAO對象來訪問MicrosoftJet數(shù)據(jù)庫引擎(MicrosoftJetDataBaseEngine),從而實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。

7.1.2VisualBasic6.0數(shù)據(jù)庫訪問技術(shù)的發(fā)展2.RemoteDataObjects(RDO)遠(yuǎn)程數(shù)據(jù)對象RDO依賴ODBCAPI、ODBC驅(qū)動程序以及后端數(shù)據(jù)庫引擎實(shí)現(xiàn)大部分的功能。RDO是從DAO派生出來的,但兩者的數(shù)據(jù)庫模式有很大的不同。DAO是訪問MicrosoftJet數(shù)據(jù)庫引擎的接口,而RDO是訪問ODBC的接口。

7.1.2VisualBasic6.0數(shù)據(jù)庫訪問技術(shù)的發(fā)展3.ActiveXDataObject(ADO)ADO通過OLEDB對各種數(shù)據(jù)源進(jìn)行訪問,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫、電子郵件和文件系統(tǒng)、文本和圖形等等。ADO具有對象模型簡單,使用方便的特點(diǎn).UDA(UniversalDataAccess一致數(shù)據(jù)訪問技術(shù))是一種數(shù)據(jù)訪問技術(shù),它為關(guān)系型和非關(guān)系型數(shù)據(jù)訪問提供了一致的訪問接口。UDA技術(shù)包括OLEDB和ADO兩層接口:(1)OLEDB是系統(tǒng)級的編程接口,(2)ADO是應(yīng)用層的編程接口。如圖所示。

7.2可視化數(shù)據(jù)管理器VISDATA

可視化數(shù)據(jù)管理器,可以生成多種類型的數(shù)據(jù)庫,如MicrosoftAccess、Dbase、FoxPro、Paradox、ODBC等。利用可視化數(shù)據(jù)管理器可以建立數(shù)據(jù)庫表,對建立的數(shù)據(jù)庫表進(jìn)行添加、刪除、編輯、過濾、排序等基本操作。下面以建立“職工檔案”數(shù)據(jù)庫為例來介紹可視化數(shù)據(jù)管理器的使用方法。“職工檔案”數(shù)據(jù)庫中有一“職工信息”表,結(jié)構(gòu)如下表所示。字段名稱類型長度字段名稱類型長度職工編號整型缺省職稱文本20姓名文本8工資單精度缺省性別文本2電話號碼文本15出生日期日期缺省家庭住址文本507.2可視化數(shù)據(jù)管理器VISDATA

1.創(chuàng)建數(shù)據(jù)庫(步驟如下)(1)單擊VisualBasic6.0“外接程序”菜單中的“可視化數(shù)據(jù)管理器”菜單項(xiàng),如圖所示。7.2可視化數(shù)據(jù)管理器VISDATA

(2)單擊“文件”菜單下的“新建”菜單項(xiàng),出現(xiàn)數(shù)據(jù)庫類型選擇菜單。單擊數(shù)據(jù)庫類型菜單中的MicrosoftAccess將出現(xiàn)版本子菜單,在版本子菜單中選擇要創(chuàng)建的數(shù)據(jù)庫版本,如圖所示。7.2可視化數(shù)據(jù)管理器VISDATA

(4)輸入數(shù)據(jù)庫名稱以后,在可視化數(shù)據(jù)庫管理器窗口中出現(xiàn)“數(shù)據(jù)庫窗口”和“SQL語句”窗口,如圖所示。7.2可視化數(shù)據(jù)管理器VISDATA“數(shù)據(jù)庫窗口”以樹形結(jié)構(gòu)顯示數(shù)據(jù)庫中的所有對象,可以單擊鼠標(biāo)右鍵激活快捷菜單,執(zhí)行“新建表”、“刷新列表”等菜單項(xiàng);“SQL語句”窗口用來執(zhí)行任何合法的SQL語句,并可保存。用戶可使用窗口上方的“執(zhí)行”、“清除”、“保存”按鈕對SQL語句操作。7.2可視化數(shù)據(jù)管理器VISDATA

2.添加數(shù)據(jù)庫表步驟如下:(1)在“數(shù)據(jù)庫窗口”中單擊鼠標(biāo)右鍵,在快捷菜單中選擇“新建表”菜單項(xiàng)便可為數(shù)據(jù)庫添加一個新表。在“表結(jié)構(gòu)”對話框中,可輸入新表的名稱并添加字段,也可從表中刪除字段,還可以添加或刪除作為索引的字段。(2)單擊“添加字段”按鈕打開如下圖所示的“添加字段”對話框。7.2可視化數(shù)據(jù)管理器VISDATA在“添加字段”對話框中的“名稱”文本框中輸入字段名;單擊“類型”下拉列表框,選擇所需類型;在“大小”文本框中輸入字段長度,然后單擊“確定”按鈕。所有字段添加結(jié)束,單擊“關(guān)閉”按鈕,回到如圖所示的表結(jié)構(gòu)對話框。完成添加索引步驟后,在“表結(jié)構(gòu)”對話框中單擊“生成表”按鈕,就會在“數(shù)據(jù)庫窗口”中出現(xiàn)“職工信息”表。7.2可視化數(shù)據(jù)管理器VISDATA3.添加索引在“表結(jié)構(gòu)”對話框中,單擊“添加索引”按鈕,如下圖所示,選擇索引字段為“職工編號”,輸入索引字段名為“編號”,再單擊“確定”按鈕。在添加索引窗口中可建立復(fù)合索引,即選擇“職工編號”作為第一索引后,還可選擇第二、第三索引字段。它們在“索引的字段”列表框中以“:”分隔顯示。所有索引添加完成后,單擊“關(guān)閉”按鈕,回到“表結(jié)構(gòu)”對話框。

7.2可視化數(shù)據(jù)管理器VISDATA

4.數(shù)據(jù)庫維護(hù)(1)添加記錄建成一個新表后,它僅有一個空的數(shù)據(jù)庫結(jié)構(gòu),還需添加記錄。步驟如下:①在數(shù)據(jù)庫窗口中,用鼠標(biāo)右鍵單擊“職工信息”表,彈出快捷菜單。②單擊“打開”菜單項(xiàng),出現(xiàn)如下圖所示的Dynaset“記錄操作”對話框。③可以直接在對話框的各文本框中輸入字段值。不同的字段之間可用Tab鍵進(jìn)行切換。也可以對記錄進(jìn)行添加、刪除、查找、排序等操作。

7.2可視化數(shù)據(jù)管理器VISDATA5.數(shù)據(jù)窗體設(shè)計(jì)器“數(shù)據(jù)窗體設(shè)計(jì)器”用以創(chuàng)建數(shù)據(jù)窗體,使用這個工具,不必編寫任何代碼,就能創(chuàng)建用于瀏覽、修改和查詢數(shù)據(jù)的應(yīng)用程序。創(chuàng)建數(shù)據(jù)窗體的步驟如下:(1)在可視化數(shù)據(jù)管理器窗口中選擇“實(shí)用程序”菜單項(xiàng)并選中“數(shù)據(jù)窗體設(shè)計(jì)器”,出現(xiàn)如下圖所示的“數(shù)據(jù)窗體設(shè)計(jì)器”對話框。(只有建立或打開一個數(shù)據(jù)庫后,“實(shí)用程序”菜單項(xiàng)才有效)

7.2可視化數(shù)據(jù)管理器VISDATA(2)在數(shù)據(jù)窗體設(shè)計(jì)器對話框中,“窗體名稱”選項(xiàng)用來設(shè)置窗體的名稱;“記錄源”選項(xiàng)用來選擇創(chuàng)建窗體所需的記錄源;“可用的字段”列表框列出了在選定表中可用的數(shù)據(jù)字段;“包括的字段”列表框列出要在窗體上顯示的字段??墒褂么绑w中間部分的按鈕,在“可用的字段”和“包括的字段”兩個列表框之間逐條地或全部地移動字段。(3)單擊“生成窗體”按鈕,數(shù)據(jù)窗體被加入到當(dāng)前的工程中。(4)單擊“關(guān)閉”按鈕,關(guān)閉“數(shù)據(jù)窗體設(shè)計(jì)器”對話框。(5)在“工程資源管理器”中選擇“frm職工信息”,并運(yùn)行它,結(jié)果如下圖所示。

7.3

Data控件

7.3.1Data控件的常用屬性(1)Connect屬性用于指定與Data控件連接的數(shù)據(jù)庫類型。(2)DataBaseName屬性用于指定與Data控件連接的數(shù)據(jù)庫,它是一個包含完整路徑和數(shù)據(jù)庫名的標(biāo)識符。例如:Data1.DatabaseName=“c:\zgda.mdb”對于單表數(shù)據(jù)庫,它是具體的數(shù)據(jù)庫文件所在的目錄。而具體的數(shù)據(jù)庫名放在RecordSource屬性中。例如:DataBaseName=“c:\foxprow26”,RecordSource=“foxpro.dbf”

數(shù)據(jù)庫類型文件格式Connect屬性值A(chǔ)ccess.mdbAccessDbase.dbfDBASEⅢ,DbaseParadox.pdxParadox3.x,Paradox4.x,Paradox5.xFoxpro.dbfFoxpro2.0,Foxpro2.5,Foxpro2.6等Excel.xlsExcel3.0,Excel4.0,Excel5.0,Excel8.0Lotus.wk1,.wk3,.wk4,.wk5Lotuswk1,Lotuswk3,Lotuswk4Text.txtText

7.3.1Data控件的常用屬性(3)RecordSource屬性用于設(shè)置與Data控件連接的記錄集。例如:RecordSource=“select職工編號,姓名from職工信息where性別=‘女’”(4)RecordsetType屬性用于指定與Data控件連接的記錄集類型。記錄集主要有3種:表類型記錄集(0.Table),動態(tài)集類型(1.Dynaset),快照類型(2.snapshot)。默認(rèn)為動態(tài)集類型。(5)Readonly屬性用于指定是否可以對與Data控件連接的記錄集進(jìn)行編輯。設(shè)置為True時,不允許編輯;設(shè)置為False時,允許編輯。默認(rèn)為False。

7.3.1Data控件的常用屬性(6)BOFAction屬性用于指定當(dāng)記錄指針移動到記錄集頂部時再單擊向前移動記錄按鈕,Data控件所要采取的操作。取值0代表MoveFirst;而1代表BOF。(7)EOFAction屬性用于指定當(dāng)記錄指針移動到尾部時再單擊向后移動按鈕,Data控件所要進(jìn)行的操作。其中0對應(yīng)MoveLast;1對應(yīng)EOF;2對應(yīng)AddNew。

(8)Exclusive屬性用于指定是否允許用戶共享數(shù)據(jù)庫。設(shè)置為True時,表示某應(yīng)用程序獨(dú)占數(shù)據(jù)庫,不允許共享。設(shè)置為False時,表示允許多用戶共享數(shù)據(jù)庫,默認(rèn)為False。

7.3.2Data控件的常用事件和方法1.Data控件的事件

Validate事件:通過該事件可以實(shí)現(xiàn)對數(shù)據(jù)的有效性檢查,從而保證輸入數(shù)據(jù)的正確性。觸發(fā)條件:Validate事件可由當(dāng)前記錄的改變觸發(fā),如Updata、Delete、Unload或Close等方法之前都可能觸發(fā)Validate事件。Validate事件的語法格式為:

PrivateSubobject_Validate([indexAsInteger,]actionAsInteger,saveAsInteger)……EndSub

7.3.2Data控件的常用事件和方法參數(shù)說明:可選參數(shù)index用于指定Data控件在控件數(shù)組中的索引值;save參數(shù)用于說明與該data控件綁定的控件內(nèi)容是否發(fā)生了改變。save參數(shù)的取值為Boolean類型,如果Data控件的綁定數(shù)據(jù)發(fā)生了變化,save參數(shù)的值為True,否則為False.

action參數(shù)用于說明觸發(fā)Validate事件的操作。7.3.2Data控件的常用事件和方法例如:PrivateSubData1_Validate(ActionAsInteger,SaveAsInteger)IfText1.DataChangedAnd(Text1.Text<"a"OrText1.Text>"z")Then

MsgBox"inputerror"Text1.DataChanged=FalseEndIfEndSub該例子用來控制輸入數(shù)據(jù)必須是小寫英文字母,否則提示錯誤信息“inputerror”7.3.2Data控件的常用事件和方法2.Data控件中的常用方法

(1)Refresh方法用于刷新與Data控件相連接的記錄集。它的語法格式為:Data1.Refresh(2)UpdateRecord方法用于將綁定控件的當(dāng)前內(nèi)容寫入到數(shù)據(jù)庫中。即在修改數(shù)據(jù)后調(diào)用該方法保存數(shù)據(jù)。(3)UpdateControls方法用于將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到綁定控件中。即在修改數(shù)據(jù)后調(diào)用該方法放棄修改操作。

7.3.2Data控件的常用事件和方法Data控件本身不能直接顯示記錄集中的數(shù)據(jù),必須通過與它綁定的控件來實(shí)現(xiàn)。數(shù)據(jù)綁定控件就是具有DataSource屬性并對數(shù)據(jù)敏感的控件。例如:Label、ListBox、TextBox、DBList、DBCombo和DBGrid等;利用綁定控件顯示記錄集信息,通過設(shè)置綁定控件的DataSource屬性來實(shí)現(xiàn)與Data控件的綁定,通過設(shè)置DataField屬性指定要顯示的字段名稱。當(dāng)利用Data控件訪問數(shù)據(jù)庫時,會生成一個Recordset對象,它是一個記錄集,有三種類型:表類型、動態(tài)類型和快照類型。Data控件對數(shù)據(jù)的操作都是通過Recordset對象進(jìn)行的。7.3.2Data控件的常用事件和方法例7.1利用Data控件訪問數(shù)據(jù)庫“職工檔案”,并顯示“職工信息”表中的“姓名”字段信息。具體操作步驟如下:(1)建立新的標(biāo)準(zhǔn)EXE工程,并在窗體中添加一個Data控件、一個Label控件及一個TextBox控件。(2)設(shè)置各控件屬性如下表所示

控件名稱屬性屬性值Data1

DataBase“c:\職工檔案.mdb”Data1RecordSource“職工信息”Label1Caption“姓名”Text1

DataSource“Data1”Text1

DataField“Xm”7.3.2Data控件的常用事件和方法(3)運(yùn)行程序,結(jié)果如下圖所示。說明:Data控件有四個按鈕,從左向右分別代表移動記錄指針到第一條記錄;到前一條記錄;到后一條記錄;到最后一條記錄。通過這四個按鈕,可以移動記錄指針到不同位置,并在TextBox控件中顯示該記錄的姓名。

7.3.3記錄集對象(Recordset)

1.記錄集對象(Recordset)的類型(1)表類型(DbOpenTable)是一個記錄集合,代表能用來添加、更新或刪除記錄的單個數(shù)據(jù)庫表。(2)動態(tài)集類型(DbOpenDynaset)是一個記錄的動態(tài)集合,它可以是一個數(shù)據(jù)庫表也可以是從一個或多個表中得到的查詢結(jié)果。(3)快照類型(DbOpenSnapshot)是一個記錄集合的靜態(tài)副本,可用于尋找數(shù)據(jù)或生成報表。

7.3.3記錄集對象(Recordset)

2.記錄集對象的常用屬性及方法

(1)

Recordset對象的屬性①AbsolutePosition屬性能夠返回記錄集中當(dāng)前記錄的序號位置。從1開始計(jì)數(shù)。②RecordCount屬性能夠獲得記錄集中的記錄總數(shù)(只讀),多用戶環(huán)境下該屬性可能是一個不準(zhǔn)確的數(shù),這與Recordset對象被更新的頻率有關(guān)。為了獲得一個準(zhǔn)確值,可以在讀取RecordCount之前先執(zhí)行一次MoveLast方法。語句如下:

Data1.Recordset.MoveLastMsgBox“Records:”&Data1.Recordset.RecordCount7.3.3記錄集對象(Recordset)

③Nomatch屬性用于返回?cái)?shù)據(jù)查詢結(jié)果,成功返回False,失敗則返回True。④BOF屬性和EOF屬性用來指示當(dāng)前記錄指針的位置,如果記錄指針指向記錄集的第一個記錄之前。則BOF屬性為True,否則為False。如果記錄指針指向記錄集的最后一個記錄之后。則EOF屬性值為True,否則為False。7.3.3記錄集對象(Recordset)(2)Recordset對象的常用方法①M(fèi)ove方法用于移動記錄指針,它可以使不同的記錄成為當(dāng)前記錄,常用于瀏覽數(shù)據(jù)。MoveFirst

移動記錄指針到第一條記錄,使第一條記錄成為當(dāng)前記錄。例如:Data1.Recordset.MoveFirstMovelast將指針移到最后一條記錄,使最后一條記錄成為當(dāng)前記錄。MoveNext將記錄指針下移一條記錄,使下一條記錄成為當(dāng)前記錄。Moveprevious將記錄指針上移一條記錄,使上一條記錄成為當(dāng)前記錄。

7.3.3記錄集對象(Recordset)

②Find方法用于在記錄集中查找符合條件的記錄,如果存在符合條件的記錄,則將記錄指針定位在找到的記錄上,否則將指針定位在記錄集的末尾。Find方法包括:FindFirst查找符合條件的第一個記錄。例如查找“姓名”為“王楠”的的記錄。語句如下:

Data1.Recordset.FindFirst“姓名”=“王楠”FindLast查找符合條件的最后一個記錄FindPrevious查找符合條件的上一條記錄FindNext查找符合條件的下一條記錄

7.3.3記錄集對象(Recordset)

③AddNew方法用于增加新記錄,它將一條空記錄添加到記錄集的末尾,并將記錄指針定位到該記錄上。例如:Data1.Recordset.AddNew輸入數(shù)據(jù)后,要使用Update方法將數(shù)據(jù)保存到數(shù)據(jù)庫中。④Delete方法用于刪除當(dāng)前記錄。例如:Data1.Recordset.Delete

在使用了Delete方法以后,要移動記錄指針來清除被刪除記錄的顯示,否則,被刪除記錄仍顯示在綁定控件中。

7.3.3記錄集對象(Recordset)

⑤Update方法用于提交數(shù)據(jù)以確認(rèn)修改。該方法的格式為:

Data1.Recordset.Update⑥Close方法主要用于關(guān)閉記錄集對象。該方法的格式為:

Data1.Recordset.Close7.4數(shù)據(jù)綁定控件(Boundcontrol)

7.4.1數(shù)據(jù)綁定控件1.數(shù)據(jù)綁定控件的種類所謂數(shù)據(jù)綁定:是指控件的數(shù)據(jù)顯示和操作的結(jié)果與數(shù)據(jù)庫保持實(shí)時一致性。當(dāng)改變控件中的數(shù)據(jù)時,數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)也會發(fā)生同樣的變化。種類:內(nèi)部標(biāo)準(zhǔn)控件、高級數(shù)據(jù)綁定控件,第三方提供的控件。在表7.6中列出了常用的標(biāo)準(zhǔn)數(shù)據(jù)綁定控件。

7.4.1數(shù)據(jù)綁定控件2.數(shù)據(jù)綁定控件的屬性利用數(shù)據(jù)綁控件顯示信息,必須對綁定控件設(shè)置適當(dāng)?shù)膶傩灾?。①DataChanged屬性用來指示綁定控件里的值是否被改變。如果被改變,則其值為True,否則為False。②DataSource屬性用于指定數(shù)據(jù)綁定控件所連接的數(shù)據(jù)控件的名稱。③DataField屬性用于指定要顯示的字段名。

7.4.1數(shù)據(jù)綁定控件3.使用綁定控件的方法要在應(yīng)用程序中使用數(shù)據(jù)綁定控件顯示數(shù)據(jù)的基本操作步驟如下:(1)添加data控件及綁定控件到窗體中(2)設(shè)置data控件的dataBaseName屬性及Recordsource屬性,連接數(shù)據(jù)庫(3)設(shè)置綁定控件的datasource屬性為data控件的名字(4)設(shè)置綁定控件的datafield屬性為要顯示的字段名。

7.4.1數(shù)據(jù)綁定控件例7.2應(yīng)用數(shù)據(jù)控件及綁定控件實(shí)現(xiàn)對數(shù)據(jù)庫的查詢、增加、刪除等。操作步驟如下:(1)創(chuàng)建一個新的標(biāo)準(zhǔn)EXE工程,并在窗體中加入如下圖所示的控件。7.4.1數(shù)據(jù)綁定控件(2)設(shè)置各控件主要屬性。(3)編寫代碼

①定義Form_Load事件過程Form_Load事件在一個窗體被裝載時發(fā)生?!跏蓟绑w及其上面的控件的屬性

PrivateSubForm_Load()

Picture1.Picture=LoadPicture("c:\handshak.bmp")‘調(diào)用圖片

Text1.Text=""‘清空文本框內(nèi)容

Text2.Text=""7.4.1數(shù)據(jù)綁定控件

Text3.Text=""Text4.Text=""Text5.Text=""Text6.Text=""Text7.Text=""Text8.Text=""EndSub7.4.1數(shù)據(jù)綁定控件②用FindFirst方法查詢記錄‘查詢符合條件的記錄

PrivateSubCommand1_Click()Dimstr1,str2AsStringstr1=Trim(InputBox("請輸入姓名:","查找姓名"))‘輸入姓名

Ifstr1<>""Thenstr2="xm='"&str1&"'"Data1.Recordset.FindFirststr2‘在數(shù)據(jù)庫中查找對應(yīng)記錄7.4.1數(shù)據(jù)綁定控件

IfData1.Recordset.NoMatchThen

MsgBox"無此人"

Data1.Recordset.MoveFirst

EndIfEndIfEndSub

7.4.1數(shù)據(jù)綁定控件③使用AddNew方法增加新記錄‘使用戶在應(yīng)用程序中增加新記錄

PrivateSubCommand2_Click()Dimstr1AsStringstr1=MsgBox("inputdata",vbOKCancel,"addnew")Ifstr1=vbOKThenData1.Recordset.AddNew‘增加一條新記錄

EndIfEndSub

7.4.1數(shù)據(jù)綁定控件④使用Delete方法刪除記錄‘刪除當(dāng)前記錄并把指針移到上一條記錄

PrivateSubCommand3_Click()Dimstr1AsStringstr1=MsgBox("y/n",vbOKCancel,"delete")‘提示是否刪除記錄

Ifstr1=vbOKThenData1.Recordset.Delete‘刪除記錄

Data1.Recordset.MoveFirst

EndIfEndSub

7.4.1數(shù)據(jù)綁定控件⑤結(jié)束程序的運(yùn)行

PrivateSubCommand4_Click()EndEndSub

(4)運(yùn)行程序程序,執(zhí)行后結(jié)果如下圖所示7.4.2使用高級數(shù)據(jù)綁定控件訪問數(shù)據(jù)庫高級數(shù)據(jù)綁定控件:DBCombo數(shù)據(jù)組合框控件、DBList數(shù)據(jù)列表控件、DBGrid數(shù)據(jù)表格控件。1.DBCombo控件和DBList控件

DBCombo控件和DBList控件功能基本相同,區(qū)別僅在于DBCombo控件是一個數(shù)據(jù)綁定下拉式列表框,而DBList控件是一個數(shù)據(jù)綁定列表框。7.4.2使用高級數(shù)據(jù)綁定控件訪問數(shù)據(jù)庫例7.3DBList控件的應(yīng)用。具體操作步驟如下:(1)建立一個新的工程,并在窗體上添加Data控件及DBList控件。(DBList控件要首先添加到當(dāng)前工程的工具箱中)(2)設(shè)置屬性。(3)編寫代碼:

PrivateSubDBList1_Click()Data1.Recordset.FindFirst“姓名=‘”&DBList1.Text&“’”EndSub

(4)運(yùn)行程序結(jié)果如下圖所示。

7.4.2使用高級數(shù)據(jù)綁定控件訪問數(shù)據(jù)庫2.DBGrid控件DBGrid控件是專門用來與Data控件配對使用,以實(shí)現(xiàn)對數(shù)據(jù)庫進(jìn)行訪問的控件,它比較靈活而且功能也較強(qiáng)。它以表格的形式顯示數(shù)據(jù),且可同時編輯及顯示多條記錄的多個字段。不必編寫任何代碼,就具備瀏覽、修改、增加和刪除記錄的功能,還能夠進(jìn)行大量的數(shù)據(jù)輸入。

DBGrid控件與DataGrid控件的功能及使用方法基本相同,DataGrid控件是在DBGrid控件的基礎(chǔ)上優(yōu)化專門用來與ADO綁定的。7.5ADO對象模型組成:ADO對象模型主要由Connection、Command、Parameter、Recordset、Field、Property和Error7個對象組成,另外還有4個集合對象,分別是:Fields、Properties、Parameters和Errors集合。數(shù)據(jù)庫訪問方法:使用ADO技術(shù)通常采用下面兩種方法實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,第一種方法是采用ADO對象編程的方式;第二種方法是采用ADODC控件來實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。7.5.1ADO對象模型簡介7.5.1ADO對象模型簡介1.Connection對象Connection對象用來與數(shù)據(jù)源建立連接,執(zhí)行查詢以及進(jìn)行事務(wù)處理。Connection對象的常用屬性如下:(1)ConnectionString

屬性ConnectionString

屬性設(shè)置或返回字符串值,這個字符串值包含與數(shù)據(jù)源連接的信息。它由一系列由分號隔開的“argument=value”語句構(gòu)成。

7.5.1ADO對象模型簡介例7.4設(shè)置ConnectionString屬性

PublicSubConnectionString_exampleDimcn1AsNewADODB.Connection‘定義Connection對象

Dimcn2AsNewADODB.ConnectionDimcn3AsNewADODB.ConnectionDimcn4AsNewADODB.Connectioncn1.ConnectionString=“DSN=nwind”‘1cn2.ConnectionString=“Filename=C:\nwind1.UDL”‘27.5.1ADO對象模型簡介

cn3ConnectionString=“Provider=MSDASQL.1;DataSource=nwind2”′3cn4ConnectionString=“Provider=Microsoft.JET.OLEDB.3.51;

DataSource=“C:\Programfiles\Microsoftvisualstudio\VB98\nwind.mdb”′4EndSub

說明:用第1種格式,則指定OLEDB數(shù)據(jù)源為nwind,但必須事先配置nwind數(shù)據(jù)源。7.5.1ADO對象模型簡介用第2種格式,則指定OLEDB數(shù)據(jù)源為nwind1.UDL數(shù)據(jù)鏈接文件。Nwind1.UDL數(shù)據(jù)鏈接文件也必須事先建立。用第3種格式則指定OLEDB數(shù)據(jù)源為缺省的ODBC數(shù)據(jù)提供者,并且指定數(shù)據(jù)源為nwind2,。用第4種格式則指定OLEDB數(shù)據(jù)源為Microsoftjet3.51,并且指定了將與Access數(shù)據(jù)庫nwind.mdb建立連接。在實(shí)際應(yīng)用中,由于所要連接的數(shù)據(jù)源的不同,ConnectionString屬性字符串中包含的參數(shù)及參數(shù)值會有所不同。

7.5.1ADO對象模型簡介(2)ConnectionTimeout屬性設(shè)置或返回等待連接打開的時間值。單位為秒,默認(rèn)值為15。(3)State屬性用來說明某對象狀態(tài)是打開的還是關(guān)閉的。該屬性是只讀的。返回下列常量值。Adstateclosed:指示對象是關(guān)閉的,值為0。Adstateopen:指示對象是打開的,值為1。Adstateconnecting指示Recordset對象正在連接,值為2。7.5.1ADO對象模型簡介AdstateExecuting指示Recordset對象正在執(zhí)行命令,值為4。AdstateFetching指示Recordset對象正在被讀取,值為8。例7.5ConnectionTimeout屬性及State屬性舉例

PrivateCommand1_click()DimcnAsNewADODB.Connection

cn.Connectionstring=“DataSource=nwind”

cn.ConnectionTimeout=30

cn.Open

MsgBoxcn.StateEndSub

7.5.1ADO對象模型簡介(Connection對象常用方法)(1)Open方法用于打開到數(shù)據(jù)源的連接格式為:Connection.OpenConnectionString,UserID,Password,OpenOptions說明:參數(shù)都為字符串,并且都是可選項(xiàng)。其中ConnectionString參數(shù)包含連接信息;UserID參數(shù)包含建立連接時所使用的用戶名稱;Password參數(shù)包含密碼信息;OpenOptions參數(shù)包含建立連接時所使用的連接方式。(2)Close方法用于關(guān)閉到數(shù)據(jù)源的連接。在關(guān)閉的同時,此連接所使用的任何資源都會被釋放。

7.5.1ADO對象模型簡介

(3)Execute方法用于執(zhí)行指定的查詢、SQL語句、存儲過程。其語法格式如下:

SetRecordset=Connection.ExecuteCommandText或

Connection.ExecuteCommandText說明:CommandText參數(shù)是包含SQL語句或存儲過程的字符串。

7.5.1ADO對象模型簡介例7.6Connection對象方法舉例

PrivateSubComand1.click()DimcnAsNewADODB.ConnectionDimrsAsADODB.Recordsetcn.Open“datasource=BiBlio”Setrs=cn.execute(“select*fromauthorswhereall.id=16001”)

MsgBoxrs.Fields(“authors”)cn.closeEndSub

7.5.1

ADO對象模型簡介2.Command對象Command對象用于執(zhí)行數(shù)據(jù)庫操作命令。Command對象常用屬性如下:(1)ActiveConnect屬性用于設(shè)置Command或Recordset對象當(dāng)前所屬的Connection對象。(2)CommandText屬性用于設(shè)置要執(zhí)行的命令字符串,這個字符串可以是一個SQL語句,也可以是一存儲過程等等。

7.5.1ADO對象模型簡介(3)CommandType屬性用于設(shè)置Command對象的類型。該屬性有四種不同的取值:adcmdText當(dāng)要執(zhí)行的字符串為SQL語句時,選擇adcmdTextadcmdTable

當(dāng)要執(zhí)行的字符串為一數(shù)據(jù)庫表時,選擇adcmdTableadcmdStoreproc當(dāng)要執(zhí)行的字符串為一個存儲過程時,選擇adcmdStoreprocadcmdUnknown

如果CommandType屬性設(shè)置為adcmdUnknown屬性值時,Command對象必須采用其它方法來決定要執(zhí)行的字符串的類型。

7.5.1ADO對象模型簡介(Command對象的常用方法)①Execute方法用于執(zhí)行在CommandText屬性中指定的查詢、SQL語句或存儲過程。其語法格式為:

SetRecordset=Command.Execute()或Cammand.Execute()

例7.7Execute方法舉例

PrivateSubCommand1.Click()Dimcnn1AsNewADODB.CommandDimcmd1AsNewADODB.CommandDimrs1AsADODB.Recordset

cnn1.Open“DataSource=nwind”7.5.1ADO對象模型簡介

cmd1.ActiveConnection=cnn1cmd1.CommandText=“Select*FromautherWhereAllid=16001”cmd1.CommandType=adcmdTextcmd1.CommandTimeout=15Setrs1=cmd1.Execute()MsgBoxrs1.Fields(“authors”)rs1.Closecnn1.CloseEndSub7.5.1ADO對象模型簡介3.Recordset對象Recordset對象是基本表或命令執(zhí)行結(jié)果的記錄集??梢栽谠撚涗浖刑砑?、刪除、修改和移動記錄。Recordset對象的常用屬性如下:(1)Absoluteposition屬性用于指定Recordset對象當(dāng)前記錄的序號。例如:

DimrsAsNewADODB.Recordset

DimkAsIntegerk=rs.Absoluteposition

7.5.1ADO對象模型簡介

(2)Activeconnection屬性用于設(shè)置或返回指定的Command或Recordset對象當(dāng)前所屬的Connection對象。(3)Bof屬性用于指示當(dāng)前記錄指針是否指向第一條記錄之前。(4)Eof屬性用于指示當(dāng)前記錄指針是否指向最后一條記錄之后。(5)CursorType屬性用于指示在Recordset對象中使用的游標(biāo)類型(AdOpenForwardOnly、AdOpenKeyset、AdOpenDynamic、AdOpenStatic)。例如:rs.CursorType=AdOpenKeyset7.5.1ADO對象模型簡介

(6)Filter屬性用于為Recordset中的數(shù)據(jù)指定篩選條件。例如:

DimrsAsNEWADODB.Recordsetrs.Filter=姓名=‘王楠’

(7)RecordCount屬性用于指示Recordset對象當(dāng)前的記錄數(shù)。例如:

DimrsAsNewADODB.Recordset

DimcountAsInterger

count=rs.RecordCount

7.5.1ADO對象模型簡介

(8)Source屬性用于指示Recordset對象中數(shù)據(jù)的來源。例如:

Dimrs1AsNewADODB.Recordset

Dimrs2AsNewADODB.Recordset

rs1.Open“zgdn”,,,,adCmdTable

rs2.Open“SELECTZGBH,XM”,,,,adCmdTextMsgBox“rs1Sourceis:”&vbCr&rs1.Source&vbCr&vbCr&_“rs2Sourceis:”&vbCr&rs2.Source(9)State屬性用于指示某對象狀態(tài)是打開的或是關(guān)閉的。

7.5.1ADO對象模型簡介(Recordset對象的常用方法)(1)AddNew方法用于創(chuàng)建新記錄。例如:

DimrsAsNewADODB.Recordsetrs.AddNew(2)Cancelupdate方法能夠取消在調(diào)用update方法前對當(dāng)前記錄所做的更改。(3)Delete方法用于刪除當(dāng)前記錄或記錄組。例如:rs.Delete

(4)Update方法用于保存對當(dāng)前記錄所做的修改。

7.5.1ADO對象模型簡介Update方法舉例:

DimrsAsNewADODB.Recordset

IfMsgBox(“請選擇:”,vbYesNo)=vbYesThen

rs.UpdateElse

rs.CancelUpdate

EndIf(5)MoveFirst、MoveLast、MovePrevious、MoveNest方法,分別表示移動記錄指針到指定Recordset對象中的第一個、最后一個、上一個或下一個記錄,并使該記錄成為當(dāng)前記錄。7.5.1ADO對象模型簡介例7.8Move方法舉例

PublicSubMove1(choiceAsInteger,rsAsRecordset)SelectCasechoiceCase1

rs.MoveFirst

Case2

rs.MoveLast

Case3

rs.MoveNext

Ifrs.EOFThen

MsBox“Alreadyatendofrecordset!”

rs.MoveLast

EndIf7.5.1ADO對象模型簡介

Case4

rs.MovePrevious

Ifrs.BOFThen

MsBox“Alreadyatbeginningofrecordset!”

rs.MoveFirst

EndIfEndSelectEndSub

7.5.1ADO對象模型簡介

(6)Resync方法用已連接數(shù)據(jù)庫中的數(shù)據(jù)刷新當(dāng)前Recordset對象中的數(shù)據(jù)。例如:

DimrsAsNewADODB.Recordset

rs.Resync

7.5.1ADO對象模型簡介4.

Field對象用來訪問當(dāng)前記錄中的每一列數(shù)據(jù)。5.Error對象包含對數(shù)據(jù)訪問時產(chǎn)生的錯誤詳細(xì)信息。任何涉及ADO對象的操作都有可能生成一個或多個錯誤。每個錯誤出現(xiàn)時,一個或多個Eorrer對象將被放到Connection對象的Errors集合中,當(dāng)另一個ADO操作產(chǎn)生錯誤時,Errors集合將被清空。并在其中放入新的Error對象集。

7.5.1ADO對象模型簡介6.Parameter對象包含與Command對象相關(guān)聯(lián)的參數(shù)。7.Property對象用于表示ADO對象的動態(tài)特性。ADO對象有兩種類型的屬性:一種是內(nèi)置的,另一種是動態(tài)的。內(nèi)置的屬性不出現(xiàn)在對象的Properties集合中。而動態(tài)的屬性是由OLEDB供應(yīng)者定義的。它們出現(xiàn)在相應(yīng)的ADO對象的Properties對象集合中。Properties集合包含Property對象。

7.5.1ADO對象模型簡介例7.9通過ADO連接Access數(shù)據(jù)庫“職工檔案”,并對數(shù)據(jù)庫進(jìn)行查詢、插入、更新等操作。具體操作步驟如下:(1)建立新工程,并通過“工程”菜單,引用“MicrosoftActiveXDataObject2.0Library”,以實(shí)現(xiàn)多ADO2.0的訪問。(2)在窗體中加入5個Label控件、5個TextBox控件、6個CommandButton控件、1個PictureBox控件和2個Fram控件。(3)設(shè)置各部件屬性。設(shè)置5個Label控件的Caption屬性分別為“編號”、“姓名”、“性別”、“出生日期”和“查詢條件”。

7.5.1ADO對象模型簡介(4)編寫代碼

PrivateconnAsADODB.ConnectionPrivatersAsADODB.Recordset

PrivateSubCommand1_Click()DimstrqueryAsStringSetrs.ActiveConnection=conn

If(Text9.Text="")Then

strquery="select*from職工信息"

Else

strquery="select*from職工信息"&"where編號="&CInt(Text9.Text)EndIf7.5.1ADO對象模型簡介

rs.Openstrquery

Ifrs.EOFThenMsgBox"無此記錄"

GoToend1EndIfText1.Text=rs.Fields("編號")

Text2.Text=rs.Fields("姓名")

Text3.Text=rs.Fields("性別")

Text4.Text=rs.Fields("出生日期")

end1:

rs.CloseEndSub7.5.1ADO對象模型簡介

PrivateSubCommand2_Click()DimstrqueryAsStringSetrs.ActiveConnection=connstrquery="select*from職工信息"

rs.Openstrquery

IfText1.Text<>""Then

rs.AddNew′增加一條空記錄

rs.Fields("編號")=CInt(Text1.Text)

rs.Fields("姓名")=Text2.Text

rs.Fields("性別")=Text3.Text7.5.1ADO對象模型簡介

rs.Fields("出生日期")=Text4.Text

rs.UpdateElseMsgBox"無數(shù)據(jù)"

EndIf

rs.CloseEndSub

PrivateSubCommand4_Click()DimstrqueryAsStringSetrs.ActiveConnection=connIf(Text9.Text="")Then7.5.1ADO對象模型簡介

MsgBox"必須指定要刪除記錄的編號"

GoToend2

Else

strquery="select*from職工信息"&"where編號="&CInt(Text9.Text)EndIf

rs.Openstrquery

Ifrs.EOFThen

MsgBox"無此記錄"

GoToend1EndIf7.5.1ADO對象模型簡介

Text1.Text=rs.Fields("編號")

Text2.Text=rs.Fields("姓名")

Text3.Text=rs.Fields("性別")

Text4.Text=rs.Fields("出生日期")

rs.Delete

rs.Updateend1:

rs.Closeend2:EndSub

7.5.1ADO對象模型簡介PrivateSubCommand7_Click()DimstrqueryAsStringSetrs.ActiveConnection=connstrquery="select*from職工信息"

rs.Openstrquery

IfNotrs.BOFThen

rs.Find("編號="&CInt(Text1.Text))

rs.MovePrevious

If(rs.BOF)Thenrs.MoveFirst

7.5.1ADO對象模型簡介

Text1.Text=rs.Fields("編號")

Text2.Text=rs.Fields("姓名")

Text3.Text=rs.Fields("性別")

Text4.Text=rs.Fields("出生日期")

EndIf

rs.CloseEndSub

PrivateSubCommand8_Click()DimstrqueryAsStringSetrs.ActiveConnection=conn

strquery="select*from職工信息"7.5.1ADO對象模型簡介

rs.Openstrquery

IfNotrs.EOFThen

rs.Find("編號="&CInt(Text1.Text))

rs.MoveNext

If(rs.EOF)Thenrs.MoveLast

Text1.Text=rs.Fields("編號")

Text2.Text=rs.Fields("姓名")

Text3.Text=rs.Fields("性別")

Text4.Text=rs.Fields("出生日期")

EndIf

rs.Close

EndIfEndSub

7.5.1ADO對象模型簡介PrivateSubCommand9_Click()

conn.CloseEndEndSub

PrivateSubForm_Load()Setconn=NewADODB.ConnectionSetrs=NewADODB.Recordset

Picture1.Picture=LoadPicture("c:\handshak.bmp")

conn.ConnectionString="dsn=職工檔案"

conn.Open

7.5.1ADO對象模型簡介

rs.LockType=adLockOptimisticrs.CursorType=adOpenKeyset

Text1.Text=""Text2.Text=""Text3.Text=""Text4.Text=""Text9.Text=""EndSub

(5)運(yùn)行應(yīng)用程序結(jié)果如下圖所示7.5.2ADODC控件1.

ADODC控件的屬性(1)ConnectionString屬性該屬性為字符串,包含用來建立與數(shù)據(jù)源連接的所有信息,每項(xiàng)信息用分號隔開。在ConnectString屬性中有四個主要參數(shù),它們是:①Provider:指定數(shù)據(jù)源的名稱②FileName:指定基于數(shù)據(jù)源的文件名稱③RemoteProvider:指定在打開一個客戶端連接時,使用的數(shù)據(jù)源名稱。④RemoteServer:指定打開一個客戶端連接時,使用的服務(wù)器的路徑與名稱。7.5.2ADODC控件1.ADODC控件的屬性(2)UserName屬性

UserName屬性是ADODC控件特有的屬性,在ADO對象模型中沒有。它用來指定用戶的名稱。(3)RecordSource屬性RecordSource屬性也是ADODC控件特有的屬性,該屬性通常是由一條SQL語句組成,用于決定從數(shù)據(jù)庫中檢索什么信息。

7.5.2ADODC控件2.ADODC控件的方法(1)Refresh方法用于刷新與ADODC控件連接的記錄集數(shù)據(jù)。(2)UpDateRecord方法通過此方法可以將數(shù)據(jù)綁定控件上的當(dāng)前內(nèi)容寫入到數(shù)據(jù)庫中。(3)Close方法主要用于關(guān)閉打開的對象及相關(guān)對象。

7.5.2ADODC控件3.ADODC控件的事件類型:Will事件和Complete事件。其中Will事件是在操作開始之前調(diào)用,而Complete事件是在操作完成之后調(diào)用。(1)WillMove和MoveComplete事件WillMove事件在執(zhí)行更改RecordSet中的當(dāng)前記錄操作之前調(diào)用。而MoveComplete事件則是在執(zhí)行更改RecordSet中的當(dāng)前記錄操作之后被調(diào)用。觸發(fā)條件:當(dāng)執(zhí)行RecordSet對象的Open、MoveNext、Move、MoveLast、MoveFirst、MovePrevious、BookMark、AddNew、Delete、Requery和Resync方法時觸發(fā)上述兩個事件。

7.5.2ADODC控件WillMove和MoveComplete事件語法為:

PrivateSubADODC1_MoveComplete(adReason,Perror,adStatus,PRecordSet)PrivateSubADODC1_WillMove(adReason,adStatus,PRecordSet)參數(shù)說明:adReason參數(shù)為該事件被觸發(fā)的原因,它的值可以是:adRsnmoveFirst、adRsnMoveLast、adRsnMoveNext、adRsnMovePrevious、adRsnMove或adRsnRequery;7.5.2ADODC控件

WillMove和MoveComplete事件參數(shù)說明:

adStatus參數(shù)為狀態(tài)值,當(dāng)調(diào)用WillMove時,如果引發(fā)事件的操作成功,則該參數(shù)設(shè)置為adStatusOK,如果該方法無法請求取消掛起的操作,則設(shè)置為adStatusCantDeny;PRecordSet參數(shù)用于指定發(fā)生該事件所針對的記錄集是一個RecordSet對象;Perror參數(shù)用于說明當(dāng)adStatus值為adStatuserrorsOccurred時所發(fā)生的錯誤。否則,將不對它進(jìn)行設(shè)置,Perror參數(shù)是一個Error對象。7.5.2ADODC控件(2)WillChangeField和FieldChangeComplete事件:WillChangeField事件發(fā)生在RecordSet對象中的Field對象的值被修改之前,而FieldChangedComplete事件則發(fā)生在被修改之后。觸發(fā)條件:執(zhí)行UpDate、Delete、CancelUpDate、UpDateBatch或CancelBatch方法之前或之后,這兩個事件將分別被觸發(fā)。7.5.2ADODC控件

WillChangeField和FieldChangeComplete事件語法為:

PrivateSubADODC_WillChangeField(CFields,Fields,adStatus,PRecordSet)

PrivateSubADODC_FieldChangeComplete(CFields,Fields,PError,adStatus,PRecordSet)參數(shù)說明:CFields參數(shù)表示被修改的字段個數(shù),F(xiàn)ields參數(shù)表示要修改的字段對象的名稱,其余幾個參數(shù)的含義與WillMove事件相同。7.5.2ADODC控件(3)WillChangeRecordSet和

RecordSetChangeComplete事件WillChangeRecordSet事件發(fā)生在對RecordSet對象進(jìn)行操作之前,而RecordSetChangeComplete事件則發(fā)生在對RecordSet對象進(jìn)行操作之后。語法為:

PrivateSubADODC1_WillChangeRecordSet(adReason,adStatus,PRecordSet)PrivateSubADODC1_RecordSetChangeComplete(adReason,adStatus,PRecordSet)其參數(shù)含義與WillMove事件相同。

7.5.2ADODC控件4.將ADODC控件及其綁定控件添加到工具箱中添加控件方法如下:按下Ctrl+T鍵或選擇“工程”菜單中的“部件”菜單項(xiàng),打開“部件”對話框,如下圖所示。7.5.2ADODC控件在“部件”對話框中分別選中“MicrosoftADODataControl6.0(OLEDB)”、“MicrosoftDataGridControl6.0(OLEDB)”、“MicrosoftDataListControl6.0(OLEDB)”和“MicrosoftHierarchicalFlexGridControl6.0(OLEDB)”,然后單擊“確定”按鈕,關(guān)閉對話框。在當(dāng)前工程的工具箱中會自動出現(xiàn)ADO及其綁定控件。如下圖所示。

7.5.2ADODC控件5.應(yīng)用ADODC控件創(chuàng)建應(yīng)用程序在應(yīng)用程序中使用ADODC控件,首先要將ADODC控件放置在窗體中,然后進(jìn)行屬性設(shè)置。(1)ConnectionString:用于設(shè)置ADODC控件與數(shù)據(jù)源的連接。

設(shè)置方法為:單擊“ConnectionString”屬性,打開“ConnectionString”屬性的“屬性頁”對話框。如下圖所示。7.5.2ADODC控件在“提供者”選項(xiàng)頁中,選擇希望連接的數(shù)據(jù),如圖所示。7.5.2ADODC控件單擊“下一步”按鈕后進(jìn)入“連接”選項(xiàng)頁。如圖所示。在“連接”選項(xiàng)頁中輸入或選擇所要連接的數(shù)據(jù)庫的名字及路徑。7.5.2ADODC控件

(2)RecordSource用于連接數(shù)據(jù)庫中的表。設(shè)置方法如下:單擊“RecordSource”屬性,打開“RecordSource”記錄源屬性頁對話框。如下圖所示。7.5.2ADODC控件

①在“命令類型”下拉列表框中選擇記錄集的類型。記錄集的類型有四種分別為:adCmdTable表adCmdTextSQL語句adCmdStoredProc存儲過程adCmdUnKnown其它類型②在“表或存儲過程名稱”下拉列表框中,設(shè)置具體的表名或存儲過程名。③在“命令文本”文本框中,可以輸入SQL語句,來具體設(shè)置要訪問的記錄集。7.5.2ADODC控件(3)UserName與PassWord屬性,用于設(shè)置用戶名稱和口令。當(dāng)然這兩個屬性只在必須時才輸入。

上述幾個屬性可以通過ADODC屬性頁來設(shè)置。打開ADODC屬性頁的方法是:用鼠標(biāo)右鍵單擊ADODC控件,從彈出的快捷菜單中選擇“屬性”菜單項(xiàng),如下圖所示,其中“通用”選項(xiàng)用于設(shè)置ConnectionString屬性的值,“記錄源”用于設(shè)置RecordSource屬性,“身份驗(yàn)證”用于設(shè)置UserName及PassWord屬性。

7.5.2ADODC控件6.使用ADODC數(shù)據(jù)綁定控件顯示數(shù)據(jù)能夠綁定到ADO控件上的數(shù)據(jù)綁定控件:ComBox、Label、TextBox、DataList、DataCombo、DataGridMicrosoft、HierarchicalFlexGrid、MicrosoftChar、DateTimePicker、ImageCombo、MonthView。常用的數(shù)據(jù)綁定控件(1)DataCombo控件和DataList控件DataList控件與DBList控件十分相似,只不過DataList控件被優(yōu)化專門用于與ADODC綁定。而DataCombo控件與DBCombo控件十分相似,同樣DataCombo控件也是專門用于ADODC的。

7.5.2ADODC控件例7.10

DataList控件應(yīng)用,步驟如下:①建立一個新的工程,并在窗體上添加ADODC控件及DataList控件。②設(shè)置屬性:如下表所示。

ADODCConnectionString連接數(shù)據(jù)源“職工檔案”RecordSource選擇“職工信息”表DataListListField選擇“姓名”字段RowSourceADODC17.5.2ADODC控件③運(yùn)行程序,結(jié)果如圖所示7.5.2ADODC控件(2)DataGrid

控件DataGrid控件是一種以表格的形式顯示數(shù)據(jù)的綁定控件。如下圖所示。利用DataGrid控件可以同時瀏覽和編輯多個記錄,多個字段的數(shù)據(jù),而且不用編程就能完成對數(shù)據(jù)庫的許多操作。利用DataGrid控件處理數(shù)據(jù),首先要在窗體上添加ADODC控件及DataGrid控件,并且還要設(shè)置好ADODC控件所連接的數(shù)據(jù)源及其它屬性。7.5.2ADODC控件對于DataGrid

控件,首先設(shè)置DataSource屬性,將其綁定到ADODC控件上,接下來要設(shè)置在DataGrid控件表格中顯示的字段,方法如下:首先,選中DataGrid控件,然后單擊鼠標(biāo)右鍵,從快捷菜單中選擇“檢索字段”,在出現(xiàn)對話框詢問“Y/N”時回答“Yes”,接著在DataGrid控件中就會顯示出全部的字段信息。其次,還要對DataGrid控件中顯示的字段及整體布局進(jìn)行調(diào)整。7.5.2ADODC控件要完成整體布局的調(diào)整有兩種方法:第一種方法:選中DataGrid控件,單擊鼠標(biāo)右鍵,從快捷菜單中選擇“編輯”菜單項(xiàng)。第二種方法:利用DataGrid控件的屬性頁來設(shè)置DataGrid控件的屬性。通過DataGrid控件的快捷菜單,如圖所示。打開DataGrid控件的屬性頁。如圖所示。7.5.2ADODC控件在DataGrid控件的屬性頁中有8個選項(xiàng),分別是:“通用”、“鍵盤”、“列”、“布局”、“顏色”、“字段”、“拆分”和“格式”。①“通用”選項(xiàng)可以用來設(shè)置在DataGrid控件中顯示的數(shù)據(jù)是否允許添加記錄、刪除記錄、更新記錄,是否允許顯示列標(biāo)題等。②“布局”選項(xiàng)用來設(shè)置是否顯示某個字段以及該字段的對齊方式、寬度等屬性,如下圖所示。7.5.2ADODC控件③“列”選項(xiàng)用來設(shè)置每一個字段的顯示標(biāo)題,如下圖所示。在“列”下拉列表框中選擇或輸入要修改標(biāo)題的字段。7.5.2ADODC控件④“格式”選項(xiàng)用于設(shè)置每個字段數(shù)據(jù)的顯示格式。⑤“拆分”標(biāo)簽用于設(shè)置每一個DataGrid控件拆分的顯示模式,當(dāng)有兩個拆分時則分別對應(yīng)Split0和Split1。⑥“字體”選項(xiàng)用于設(shè)置DataGrid控件中顯示的數(shù)據(jù)的字體及字號。⑦“顏色”選項(xiàng)用于設(shè)置DataGrid控件中顯示的數(shù)據(jù)的顏色。⑧“鍵盤”選項(xiàng)用于設(shè)置在程序運(yùn)行時是以“Tab”鍵移動光標(biāo),還是以箭頭鍵移動光標(biāo),或者二者都可。7.5.2ADODC控件例7.11Data

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論