版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、word.專業(yè)技術(shù)行業(yè)資料范文范例學習參考指導.VB-數(shù)據(jù)庫編程技術(shù)一 ODBC 概述在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中, 每個數(shù)據(jù)庫管理系統(tǒng)都有自己的應(yīng)用程序開發(fā)接口 (API) ,為了解決此問 題,微軟公司開發(fā)了 ODBC(Open DataBase Connectivity ,即開放數(shù)據(jù)庫互連 )。ODBC 是一套開放數(shù)據(jù)庫系統(tǒng)應(yīng)用程序接口規(guī)范, 目前它已成為一種工業(yè)標準, 它提供了統(tǒng)一的數(shù)據(jù) 庫應(yīng)用編程接口 (API) ,為應(yīng)用程序 提供了一套高層調(diào)用接口規(guī)范和基于動態(tài)連接庫的運行支持環(huán)境 。使用 ODBC 開發(fā)數(shù)據(jù)庫應(yīng)用時, 應(yīng)用程序調(diào)用的是標準的 ODBC 函數(shù)和 SQL 語句,屏蔽了 DB
2、MS 之間的差 異,數(shù)據(jù)庫底層操作由各個數(shù)據(jù)庫的驅(qū)動程序完成 。因此應(yīng)用程序有很好的適應(yīng)性和可移植性,并且具備 了同時訪問多種數(shù)據(jù)庫管理系統(tǒng)的能力,從而徹底克服了傳統(tǒng)數(shù)據(jù)庫應(yīng)用程序的缺陷。主要任務(wù)包括:建立與數(shù)據(jù)源的連接;向數(shù)據(jù)源發(fā)送 SQL 請求;斷開與數(shù)據(jù)源的連接數(shù)據(jù)源 數(shù)據(jù)源是指任一種可以通過 ODBC 連接的數(shù)據(jù)庫管理系統(tǒng), 它包括要訪問的數(shù)據(jù)庫和數(shù)據(jù)庫的運行平 臺。數(shù)據(jù)源名掩蓋了數(shù)據(jù)庫服務(wù)器或數(shù)據(jù)庫文件間的差別,通過定義多個數(shù)據(jù)源,每個數(shù)據(jù)源指向一個服 務(wù)器名,就可在應(yīng)用程序中實現(xiàn)同時訪問多個 DBMS 的目的。數(shù)據(jù)源(Data Source Name,簡稱DSN)是驅(qū)動程序與 DB
3、S連接的橋梁,數(shù)據(jù)源不是 DBS,而是用于表 達一個 ODBC 驅(qū)動程序和 DBMS 特殊連接的命名。在連接中,用數(shù)據(jù)源名來代表用戶名、服務(wù)器名、所 連接的數(shù)據(jù)庫名等,可以將數(shù)據(jù)源名看成是與一個具體數(shù)據(jù)庫建立的連接。數(shù)據(jù)源分為以下三類:(1) 用戶數(shù)據(jù)源:用戶創(chuàng)建的數(shù)據(jù)源,稱為 “用戶數(shù)據(jù)源 ”。此時 只有創(chuàng)建者才能使用,并且只能在所定 義的機器上運行 。任何用戶都不能使用其他用戶創(chuàng)建的用戶數(shù)據(jù)源。(2) 系統(tǒng)數(shù)據(jù)源:所有用戶和在 Windows NT 下以服務(wù)方式運行的應(yīng)用程序均可使用系統(tǒng)數(shù)據(jù)源。(3) 文件數(shù)據(jù)源:文件數(shù)據(jù)源是 ODBC3.0以上版本增加的一種數(shù)據(jù)源,可用于企業(yè)用戶,ODB
4、C驅(qū)區(qū)動程序也安裝在用戶的計算機上。 (與機器無關(guān) )二、SQL 語言基礎(chǔ)創(chuàng)建表格Create table 語句的使用格式如下:SQL語言中的create table語句被用來建立新的數(shù)據(jù)庫表格。create table tablename(column1 data type,colu mn2 data type,colu mn3 data type);如果用戶希望在建立新表格時規(guī)定列的限制條件,可以使用可選的條件選項:create table table name(colu mn1 data type con stra in t,colu mn2 data type con stra in
5、t,colu mn3 data type con stra in t);舉例如下:create table employee(first name varchar(15),last name varchar(20),age nu mber(3),address varchar(30),city varchar(20);簡單來說,創(chuàng)建新表格時,在關(guān)鍵詞create table后面加入所要建立的表格的名稱,然后在括號內(nèi)順次設(shè)定各列的名稱,數(shù)據(jù)類型,以及可選的限制條件等。注意,所有的SQL語句在結(jié)尾處都要使用“;”符號。使用SQL語句創(chuàng)建的數(shù)據(jù)庫表格和表格中列的名稱必須以字母開頭,后面可以使用字母,
6、數(shù)字或下劃線, 名稱的長度不能超過30個字符。注意,用戶在選擇表格名稱時不要使用SQL語言中的保留關(guān)鍵詞,如select,create, i nsert等,作為表格或列的名稱。數(shù)據(jù)類型用來設(shè)定某一個具體列中數(shù)據(jù)的類型。例如,在姓名列中只能采用varchar或char的數(shù)據(jù)類型,而不能使用number的數(shù)據(jù)類型。SQL語言中較為常用的數(shù)據(jù)類型為:char(size):固定長度字符串,其中括號中的size用來設(shè)定字符串的最大長度。Char類型的最大長度為255字節(jié)。varchar(size):可變長度字符串,最大長度由size設(shè)定。number(size):數(shù)字類型,其中數(shù)字的最大位數(shù)由size設(shè)
7、定。Date :日期類型。number(size,d):數(shù)字類型,size決定該數(shù)字總的最大位數(shù),而d則用于設(shè)定該數(shù)字在小數(shù)點后的位數(shù)。最后,在創(chuàng)建新表格時需要注意的一點就是表格中列的限制條件。所謂限制條件就是當向特定列輸入數(shù)據(jù) 時所必須遵守的規(guī)則。例如,unique這一限制條件要求某一列中不能存在兩個值相同的記錄,所有記錄的值都必須是唯一的。除unique之外,較為常用的列的限制條件還包括not null和primary key等。Not null用來規(guī)定表格中某一列的值不能為空。Primary key則為表格中的所有記錄規(guī)定了唯一的標識符。查詢簡單的SQL查詢只包括選擇列表、FROM子句和
8、 WHERE子句。它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。完整結(jié)構(gòu):Select All/Distinct From, WhereGroup by HavingOrder by Asc/DescGroup by :按列名1的值進行分組,屬性值相等的為一個組,如果帶Having短句,表示只有滿足指定條件的才輸出。例如,下面的語句查詢testtable表中姓名為 張三的nickname字段和email字段。word.專業(yè)技術(shù)行業(yè)資料SELECT n ick name,emailFROM testtableWHERE name=張三(一)選擇列表選擇列表(select_list)指出所
9、查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構(gòu)成。1選擇所有列例如,下面語句顯示 testtable表中所有列的數(shù)據(jù):SELECT *FROM testtable2、選擇部分列并指定它們的顯示次序查詢結(jié)果集合中數(shù)據(jù)的排列順序與選擇列表中所指定的列名排列順序相同。 例如:SELECT n ick name,emailFROM testtable3、更改列標題在選擇列表中,可重新指定列標題。定義格式為:列標題=列名列名列標題如果指定的列標題不是標準的標識符格式時,應(yīng)使用引號定界符,例如,下列語句使用漢字顯示列 標題:SELECT 昵稱=nickname,電子郵件=e
10、mailFROM testtable4、刪除重復(fù)行SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復(fù)的數(shù)據(jù)行,默 認為ALL。使用DISTINCT選項時,對于所有重復(fù)的數(shù)據(jù)行在SELECT返回的結(jié)果集合中只保留一行。5、限制返回的行數(shù)使用TOP n PERCENT選項限制返回的數(shù)據(jù)行數(shù),TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數(shù),指定返回的行數(shù)等于總行數(shù)的百分之幾。例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二)FROM 子句F
11、ROM子句指定SELECT語句查詢及與查詢相關(guān)的表或視圖。在FROM子句中最多可指定 256個表或視圖,它們之間用逗號分隔。在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應(yīng)使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在 cityid列,在查詢兩個表中的 cityid時應(yīng)使用下面語句格式加以限定:SELECT user name,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cityid在FROM子句中可用以下兩種格式為表或視圖指
12、定別名:表名as別名表名別名(二)FROM 子句FROM子句指定SELECT語句查詢及與查詢相關(guān)的表或視圖。在FROM子句中最多可指定 256個表或視圖,它們之間用逗號分隔。在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應(yīng)使用對象名限定這些列所屬的表或視圖。例如在 usertable和citytable表中同時存在 cityid列,在查詢兩個表中的cityid時應(yīng)使用下面語句格式加以限定:SELECT user name,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cit
13、yid在FROM子句中可用以下兩種格式為表或視圖指定別名:表名as別名表名別名例如上面語句可用表的別名格式表示為:SELECT user name,b.cityidFROM usertable a,citytable bWHERE a.cityid=b.cityidSELECT不僅能從表或視圖中檢索數(shù)據(jù),它還能夠從其它查詢語句所返回的結(jié)果集合中查詢數(shù)據(jù)。 例如:SELECT a.au_fname+a.au _ln ameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales10000)AS tW
14、HERE a.aud=ta.audAND ta.title_id=t.title_id此例中,將SELECT返回的結(jié)果集合給予一別名t,然后再從中檢索數(shù)據(jù)。(三)使用 WHERE子句設(shè)置查詢條件WHERE子句設(shè)置查詢條件,過濾掉不需要的數(shù)據(jù)行。例如下面語句查詢年齡大于20的數(shù)據(jù):SELECT *FROM usertableWHERE age20WHERE子句可包括各種條件運算符:比較運算符(大小比較):、=、=、=、!、!范圍運算符(表達式值是否在指定的范圍):BETWEE-NANO-NOT BETWEEN- AND列表運算符(判斷表達式是否為列表中的指定項):IN (項1,項2)NOT IN
15、 (項1,項2)模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL.范文范例學習參考指導.word.專業(yè)技術(shù)行業(yè)資料邏輯運算符(用于多條件的邏輯連接):NOT、AND、OR1 范圍運算符例:age BETWEEN 10 AND 30 相當于 age=10 AND age DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。這些新增綁定控件必須使用 ADO數(shù)據(jù)控件進行綁定。Visual Basic 6.0在綁定控件上不僅對 DataSource和DataFie
16、ld屬性在連接功能上作了改進,又增加了 DataMember與DataFormat屬性使數(shù)據(jù)訪問的隊列更加完整。DataMember屬性允許處理多個數(shù)據(jù)集,DataFormat屬性用于指定數(shù)據(jù)內(nèi)容的顯示格式。例9.6使用ADO數(shù)據(jù)控件和DataGrid數(shù)據(jù)網(wǎng)格控件瀏覽數(shù)據(jù)庫 Student.mdb,并使之具有編輯功能。 在窗體上放置 ADO數(shù)據(jù)控件,并按前面介紹的ADO數(shù)據(jù)控件屬性設(shè)置過程連接數(shù)據(jù)庫Student.mdb中的基本情況表。.范文范例學習參考指導.word.專業(yè)技術(shù)行業(yè)資料DataGrid控件允許用戶同時瀏覽或修改多個記錄的數(shù)據(jù)。在使用DataGrid控件前也必須先通過工程|部件”
17、菜單命令選擇 “Microsoft DataGridControl 6.0QLEDB)”選項,將 DataGrid控件添加到工具箱,再將DataGrid控件放置到窗體上。設(shè)置DataGrid網(wǎng)格控件的 DataSource屬性為Adodcl,就可將DataGridl綁定到數(shù)據(jù)控件 Adodc1上。顯示在 DataGrid 網(wǎng)格內(nèi)的記錄集,可以通過DataGrid 控件的 AllowAddNew、AllowDelete 和AllowUpdate屬性設(shè)置控制增,刪、改操作。如果要改變 DataGrid網(wǎng)格上顯示的字段,可用鼠標右鍵單擊DataGrid控件,在彈出的快捷菜單中選擇檢索字段”選項。Vi
18、sual Basic提示是否替換現(xiàn)有的網(wǎng)格布局,單擊是”按鈕就可將表中的字段裝載到DataGrid控件中。再次用鼠標右鍵單擊DataGrid控件,在彈出的快捷菜單中選擇編輯”選項,進入數(shù)據(jù)網(wǎng)格字段布局的編輯狀態(tài),此時,當鼠標指在字段名上時,鼠標指針變成黑色向下箭頭。用鼠標右鍵單擊需 要修改的字段名,在彈出的快捷菜單中選擇刪除”選項,就可從DataGrid控件中刪除該字段,也可選擇 屬性”選項修改字段的顯示寬度或字段標題。圖9.14所示為具有增、刪、改功能的數(shù)據(jù)網(wǎng)格綁定。標有號的記錄行表示允許增加新記錄。圖9.14 具有增、刪、改功能的數(shù)據(jù)網(wǎng)格綁定2、Data控件Data 控件是Visual B
19、asic訪問數(shù)據(jù)庫的一種利器,它能夠利用三種Recordset對象來訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)控件提供有限的不需編程而能訪問現(xiàn)存數(shù)據(jù)庫的功能,允許將Visual Basic的窗體與數(shù)據(jù)庫方便地進行連接。要利用數(shù)據(jù)控件返回數(shù)據(jù)庫中記錄的集合,應(yīng)先在窗體上畫出控件,再通過它的三個基本屬性Connect、DatabaseName和RecordSource設(shè)置要訪問的數(shù)據(jù)資源。2.1 Data控件屬性1. Connect 屬性Connect屬性指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫類型,Visual Basic默認的數(shù)據(jù)庫是 Access的MDB文件,此外,也可連接 DBF、XLS、ODBC等類型的數(shù)據(jù)庫。2.
20、DatabaseName屬性DatabaseName屬性指定具體使用的數(shù)據(jù)庫文件名,包括所有的路徑名。如果連接的是單表數(shù)據(jù)庫,則DatabaseName屬性應(yīng)設(shè)置為數(shù)據(jù)庫文件所在的子目錄名,而具體文件名放在RecordSource屬性中。.范文范例學習參考指導.word.專業(yè)技術(shù)行業(yè)資料例如,要連接一個 Microsoft Access 的數(shù)據(jù)庫 C:Student.mdb,則設(shè)置 DatabaseName= ” 0Student.mdb, Access數(shù)據(jù)庫的所有表都包含在一個 MDB文件中。如果連接一個 FoxPro數(shù)據(jù)庫如C:VB6 stu_fox.dbf, 則 DatabaseName
21、= C:VB6 , RecordSource=” stu_fox.dbf, stu_fox 數(shù)據(jù)庫只含有一個表。3. RecordSource 屬性RecordSource確定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構(gòu)成記錄集對象Recordset。該屬性值可以是數(shù)據(jù)庫中的單個表名,一個存儲查詢,也可以是使用SQL查詢語言的一個查詢字符串。例如,要指定Student.mdb數(shù)據(jù) 庫中的 基本情況表,則 RecordSource=”基本情 況”。而 RecordSource= ” SelecFrom基本情況 Where專業(yè)=物理,則表示要訪問基本情況表中所有物理系學生 的數(shù)據(jù)。4. RecordType 屬性
22、RecordType屬性確定記錄集類型。5. EofAction 和 BofAction 屬性當記錄指針指向Recordset對象的開始(第一個記錄前)或結(jié)束(最后一個記錄后)時,數(shù)據(jù)控件的EofAction和BofAction屬性的設(shè)置或返回值決定了數(shù)據(jù)控件要采取的操作。屬性的取值如表9.1所示。表 9.1 EofAction 和 BofAction 屬性屬性取值操作BofAction0控件重定位到第一個記錄1移過記錄集開始位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對第一個記錄的無效事件 ValidateEofAction0控件重定位到最后一個記錄1移過記錄集結(jié)束位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控
23、件對最后一個記錄的無效事件Validate2向記錄集加入新的空記錄,可以對新記錄進行編輯,移動記錄指 針,新記錄寫入數(shù)據(jù)庫在Visual Basic中,數(shù)據(jù)控件本身不能直接顯示記錄集中的數(shù)據(jù),必須通過能與它綁定的控件來實現(xiàn)??膳c數(shù)據(jù)控件綁定的控件對象有文本框、標簽、圖像框、圖形框、列表框、組合框、復(fù)選框、網(wǎng)格、DB列表框、DB組合框、DB網(wǎng)格和OLE容器等控件。要使綁定控件能被數(shù)據(jù)庫約束,必需在設(shè)計或運行時 對這些控件的兩個屬性進行設(shè)置:(1) DataSource 屬性DataSource屬性通過指定一個有效的數(shù)據(jù)控件連接到一個數(shù)據(jù)庫上。(2) DataField 屬性DataField屬性
24、設(shè)置數(shù)據(jù)庫有效的字段與綁定控件建立聯(lián)系。綁定控件、數(shù)據(jù)控件和數(shù)據(jù)庫三者的關(guān)系如圖9.7所示。數(shù)據(jù)控件數(shù)據(jù)庫綁定控件圖9.7綁定控件、數(shù)據(jù)控件和數(shù)據(jù)庫三者的關(guān)系當上述控件與數(shù)據(jù)控件綁定后,Visual Basic將當前記錄的字段值賦給控件。如果修改了綁定控件內(nèi)的數(shù)據(jù),只要移動記錄指針,修改后的數(shù)據(jù)會自動寫入數(shù)據(jù)庫。數(shù)據(jù)控件在裝入數(shù)據(jù)庫時,它把記錄集的第 一個記錄作為當前記錄。當數(shù)據(jù)控件的BofAction屬性值設(shè)置為2時,當記錄指針移過記錄集結(jié)束位,數(shù)據(jù)控件會自動向記錄集加入新的空記錄。例9.1建立student.mdb數(shù)據(jù)庫,它包含兩個表:基本情況”表和 學生成績表”。參見表9.2和表9.3。
25、表9.2學生基本情況表結(jié)構(gòu)字段名類型寬度學號Text6姓名Text10性別Text2專業(yè)Text10岀生年月Date8照片Binary0表9.3學生成績表結(jié)構(gòu)字段名類型寬度學號Text6課程Text10成績Long4學期Text2用可視化數(shù)據(jù)管理器建立以上設(shè)計的數(shù)據(jù)庫及其表,表中數(shù)據(jù)可自行錄入。例9.2設(shè)計一個窗體用以顯示建立的student.mdb數(shù)據(jù)庫中基本情況表的內(nèi)容?;厩闆r表包含了 6個字段,故需要用 6個綁定控件與之對應(yīng)。這里用一個圖形框顯示照片和5個文本框顯示學號、姓名等數(shù)據(jù)。本例中不需要編寫任何代碼,具體操作步驟如下:(1) 參考如圖9.8所示窗體,在窗體上放置1個數(shù)據(jù)控件,一
26、個圖形框、5個文本框和5個標簽控件。5個標簽控件分別給出相關(guān)的提示說明。圖9.8 顯示Student.mdb基本情況表的數(shù)據(jù)(2) 將數(shù)據(jù)控件 Datal的Connect屬性指定為 Access類型,DatabaseName屬性連接數(shù)據(jù)庫 Student.mdb, RecordSource屬性設(shè)置為基本情況表。(3) 圖形框和5個文本框控件 Text1Text5的DataSource屬性都設(shè)置成 Data1。通過單擊這些綁定控件的DataField屬性上的“按鈕,將下拉出基本情況表所含的全部字段,分別選擇與其對應(yīng)的字段照片、學號、姓名、性別、專業(yè)和出生年月,使之建立約束關(guān)系。運行該工程即可出現(xiàn)
27、圖9.8所示效果。5個文本框分別顯示基本情況表內(nèi)的字段:學號、姓名、性別、專業(yè)和出生年月的內(nèi)容,圖形框顯示每個學生的照片。使用數(shù)據(jù)控件對象的 4個箭頭按鈕可遍歷整個記錄集中的記錄。單擊最左邊的按鈕顯示第I條記錄;單擊其旁邊的按鈕顯示上一條記錄;單擊最右邊的按鈕顯示最后一條記錄;單擊其旁邊的按鈕顯示下一條記錄。數(shù)據(jù)控件除了可以瀏覽Recordset對象中的記錄外,同時還可以編輯數(shù)據(jù)。如果改變了某個字段的值,只要移動記錄,這時所作的改變存入數(shù)據(jù)庫中。Visual Basic 6.0提供了幾個比較復(fù)雜的網(wǎng)格控件,幾乎不用編寫代碼就可以實現(xiàn)多條記錄數(shù)據(jù)顯示。 當把數(shù)據(jù)網(wǎng)格控件的DataSource屬性
28、設(shè)置為一個 Data控件時,網(wǎng)格控件會被自動地填充,并且其列標題會用Data控件的記錄集里的數(shù)據(jù)自動地設(shè)置。2.2 data控件與MsFlexGrid控件結(jié)合顯示數(shù)據(jù)庫中信息例9.3用數(shù)據(jù)網(wǎng)格控件 MsFlexGrid顯示Student.mdb數(shù)據(jù)庫中基本情況表的內(nèi)容。MsFlexGrid控件不是Visual Basic工具箱內(nèi)的默認控件,需要在開發(fā)環(huán)境中選擇工程|部件”菜單命令,并在隨即出現(xiàn)的對話框中選擇“MicroSoft FlexGrid Control 6.0選項,將其添加到工具箱中。本例所用控件的屬性設(shè)置如表 9.4所示。請讀者自行比較不可卷動列屬性FixedCols=0與Fixed
29、Cols=1的區(qū)別。Form啟-n| X動后自動顯示如圖 9.9所示窗口。學號性別出生年月010001383 - 2-23010010010014丁保民19337-141932-11-110200031982-12-30020011慈敏紅女(1平丫耳福盞古機電1993-10-11iqno-1-R zi表9.4控件屬性默認控件名其它屬性設(shè)置DatalDatabaseName=w cstudent.mdb ”RecordsetType=0RecordSource=基本情況”MSFlexGridlDataSource=Data1FixCols=0椅阿格卿宇到數(shù)據(jù)庫范文范例學習參考指導nnIHKIEE
30、S圖9.9使用數(shù)據(jù)網(wǎng)格控件2.3數(shù)據(jù)控件的常用方法數(shù)據(jù)控件的內(nèi)置功能很多,可以在代碼中用數(shù)據(jù)控件的方法訪問這些屬性。1. Refresh 方法如果在設(shè)計狀態(tài)沒有為打開數(shù)據(jù)庫控件的有關(guān)屬性全部賦值,或當RecordSource在運行時被改變后,必須使用數(shù)據(jù)控件的Refresh方法激活這些變化。在多用戶環(huán)境下,當其他用戶同時訪問同一數(shù)據(jù)庫和表時,Refresh方法將使各用戶對數(shù)據(jù)庫的操作有效。例如:將例9.2的設(shè)計參數(shù)改用代碼實現(xiàn),使所連接數(shù)據(jù)庫所在的文件夾可隨程序而變化:Private Sub Form_Load()Dim mpath As Stri ngMpath=App.Path獲取當前路徑
31、If Right(mpath,1) ” /” Then mpath=mpath+ ” /”Data1.DatabaseName=mpath+ ” Student.mdb ” 連接數(shù)據(jù)庫 Data1.RecordSource=基本情況”構(gòu)成記錄集對象Datal.Refresh激活數(shù)據(jù)控件End Sub2. UpdateControls 方法UpdateControls方法可以將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到被數(shù)據(jù)控件綁定的控件內(nèi)。因而我們可使用 UpdateControls方法終止用戶對綁定控件內(nèi)數(shù)據(jù)的修改。例如:將代碼Datal.UpdateC on trots放在一個命令按鈕的Click事件中,就可
32、以實現(xiàn)對記錄修改的功能。3. UpdateRecord 方法當對綁定控件內(nèi)的數(shù)據(jù)修改后,數(shù)據(jù)控件需要移動記錄集的指針才能保存修改。如果使用 UpdateRecord方法,可強制數(shù)據(jù)控件將綁定控件內(nèi)的數(shù)據(jù)寫入到數(shù)據(jù)庫中,而不再觸發(fā)Validate事件。在代碼中可以用該方法來確認修改。2.4記錄集的屬性與方法由RecordSource確定的具體可訪問的數(shù)據(jù)構(gòu)成的記錄集Recordset也是一個對象,因而,它和其他對象一樣具有屬性和方法。下面列出記錄集常用的屬性和方法。1. AbsolutePosition屬性AbsolutePosition返回當前指針值,如果是第1條記錄,其值為 0,該屬性為只讀
33、屬性。2. Bof和Eof的屬性Bof判定記錄指針是否在首記錄之前,若Bof為True,則當前位置位于記錄集的第1條記錄之前。與此類似,Eof判定記錄指針是否在末記錄之后。3. Bookmark 屬性Bookmark屬性的值采用字符串類型,用于設(shè)置或返回當前指針的標簽。在程序中可以使用Bookmark屬性重定位記錄集的指針,但不能使用AbsolutePostion屬性。4. Nomatch 屬性在記錄集中進行查找時,如果找到相匹配的記錄,則Recordset的NoMatch屬性為False,否則為True。該屬性常與Bookmark屬性一起使用。5. RecordCount 屬性RecordC
34、ount屬性對Recordset對象中的記錄計數(shù), 該屬性為只讀屬性。在多用戶環(huán)境下,RecordCount屬性值可能不準確,為了獲得準確值,在讀取RecordCount屬性值之前,可使用MoveLast方法將記錄指針 移至最后一條記錄上。6. Move方法使用Move方法可代替對數(shù)據(jù)控件對象的4個箭頭按鈕的操作遍歷整個記錄集。5種Move方法是:MoveFirst方法:移至第1條記錄。(2) MoveLast方法:移至最后一條記錄。(3) MoveNext方法:移至下一條記錄。(4) MovePrevious方法:移至上一條記錄。(5) Move n方法:向前或向后移n條記錄,n為指定的數(shù)值
35、。例9.4在窗體上用4個命令按鈕代替例 9.2數(shù)據(jù)控件對象的4個箭頭按鈕的操作。在例9.2的基礎(chǔ)上,窗體上增加4個命令按鈕,將數(shù)據(jù)控件的Visible屬性設(shè)置為False,如圖9.10所示。通過對4個命令按鈕的編程代替對數(shù)據(jù)控件對象的4個箭頭按鈕的操作。圖9.10用按鈕代替數(shù)據(jù)控件對象的箭頭按鈕命令按鈕 Command1_Click事件移至第1條記錄,代碼如下:Private Sub Comma nd1_Click()Datal.Recordset.MoveFirstEnd Sub命令按鈕Command4_Click事件移至最后一條記錄,代碼如下:Private Sub Comma nd4_C
36、lick()Data1.Recordset.MoveLastEnd Sub另外兩個按鈕的代碼需要考慮Recordset對象的邊界的首尾,如果越界,則用MoveFirst方法定位到第1條記錄或用 MoveLast方法定位到最后一條記錄。程序代碼如下:Private Sub Comma nd2_Click()Data1.Recordset.MovePreviousIf Data1.Recordset.BOF The n Data1.Recordset.MoveFirstEnd SubPrivate Sub Comma nd3_Click()Data1.Recordset.MoveNextIf Da
37、ta1.Recordset.EOF The n Data1.Recordset.MoveLastEnd Sub7. Find方法使用Find方法可在指定的 Dynaset或Snapshot類型的Recordset對象中查找與指定條件相符的一條記 錄,并使之成為當前記錄。4種Find方法是:(1) FindFirst方法:從記錄集的開始查找滿足條件的第1條記錄。(2) FindLast方法:從記錄集的尾部向前查找滿足條件的第I條記錄。(3) FindNext方法:從當前記錄開始查找滿足條件的下一條記錄。(4) FindPrevious方法:從當前記錄開始查找滿足條件的上一條記錄。4種Find方法
38、的語法格式相同:數(shù)據(jù)集合.Find方法條件搜索條件是一個指定字段與常量關(guān)系的字符串表達式。在構(gòu)造表達式時,除了用普通的關(guān)系運算外,還可以用Like運算符。例如:語句 “ Data1.Recordset.FindFirst專業(yè)=物理表示在由Data1數(shù)據(jù)控件所連接的數(shù)據(jù)庫Student.mdb的記錄集內(nèi)查找專業(yè)為物理的第I條記錄。這里,專業(yè)為數(shù)據(jù)庫Student記錄集中的字段名,在該字段中存放專業(yè)名稱信息。要想查找下一條符合條件的記錄,可繼續(xù)使用語 句:” Data1.Recordset.FindNext 專業(yè)=物理。又例如:要在記錄集內(nèi)查找專業(yè)名稱中帶有建”字的專業(yè):Data1.Records
39、et.FindFirst 專業(yè) Like ”建* ”word.專業(yè)技術(shù)行業(yè)資料字符串“建* ”匹配字段專業(yè)中帶有建”字字樣的所有專業(yè)名稱字符串。需要指出的是 Find方法在找不到相匹配的記錄時,當前記錄保持在查找的始發(fā)處,NoMatch屬性為True。如果Find方法找到相匹配的記錄,則記錄定位到該記錄,Recordset的NoMatch屬性為False。8. Seek方法使用Seek方法必須打開表的索引,它在Table表中查找與指定索引規(guī)則相符的第1條記錄,并使之成為當前記錄。其語法格式為:數(shù)據(jù)表對象.seek comparison,keyl,key2Seek允許接受多個參數(shù),第1個是比較運
40、算符 comparison, Seek方法中可用的比較運算符有=、=、=等。Seek 方在使用Seek方法定位記錄時,必須通過Index屬性設(shè)置索引。若在記錄集中多次使用同樣的法(參數(shù)相同),那么找到的總是同一條記錄。110001 的第 1設(shè)置記錄集類型為 Table打開基本情況表單打開名稱為jbqk_no的索引例如:假設(shè)數(shù)據(jù)庫 Student內(nèi)基本情況表的索引字段為學號,滿足學號字段值大于等于 條記錄可使用以下程序代碼:Data1.RecordsetType = 0 Data1.RecordSource =基本情況”Data1.RefreshData1.Recordset.lndex = j
41、bqk _noData1.Recordset.Seek =, 1100012.5數(shù)據(jù)庫記錄的增、刪、改操作Data控件是瀏覽表格并編輯表格的好工具,但怎么輸入新信息或刪除現(xiàn)有記錄呢?這需要編寫幾行代碼,否則無法在Data控件上完成數(shù)據(jù)輸入。數(shù)據(jù)庫記錄的增、 刪、改操作需要使用 AddNew Delete、Edit、Update和Refresh方法。它們的語法格式為:數(shù)據(jù)控件.記錄集.方法名1 .增加記錄AddNew方法在記錄集中增加新記錄。增加記錄的步驟為:(1) 調(diào)用AddNew方法。(2) 給各字段賦值。給字段賦值格式為:Recordset.Fields(字段” ”)值。調(diào)用Update方
42、法,確定所做的添加,將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫。注意:如果使用 AddNew方法添加新的記錄,但是沒有使用Update方法而移動到其他記錄,或者關(guān)閉記錄集,那么所做的輸入將全部丟失,而且沒有任何警告。當調(diào)用Update方法寫入記錄后,記錄指針自動返回到添加新記錄前的位置上,而不顯示新記錄。為此,可在調(diào)用Update方法后,使用 MoveLast方法將記錄指針再次移到新記錄上。2 .刪除記錄要從記錄集中刪除記錄的操作分為三步:(1) 定位被刪除的記錄使之成為當前記錄。(2) 調(diào)用Delete方法。(3) 移動記錄指針。注意:在使用Delete方法時,當前記錄立即刪除,不加任何的警告或者提示。刪除一條記錄后,被數(shù) 據(jù)庫所約束的綁定控件仍舊顯示該記錄的內(nèi)容。因此,你必須移動記錄指針刷新綁定控件,一般采用移至下一記錄的處理方法。在移動記錄指針后,應(yīng)該檢查Eof屬性。3
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒園食品安全管理協(xié)議書
- 合作投資合同書示例
- 廣州市勞動合同范本參考
- 2024燈飾采購合同范文
- 安徽省淮南市七年級上學期語文期中試題3套【附答案】
- 提升機租賃合同樣式
- 2024抵押貸款合同協(xié)議書樣式
- 6.2 共筑生命家園(導學案) 2024-2025學年統(tǒng)編版道德與法治九年級上冊
- 購房合同協(xié)議書范本
- 倉庫租賃合同樣本
- 兩癌知識科普課件
- 食用菌現(xiàn)代高效農(nóng)業(yè)示范園區(qū)建設(shè)項目建議書
- 東營港加油、LNG加氣站工程環(huán)評報告表
- 2024年日歷(打印版每月一張)
- 車用動力電池回收利用 管理規(guī)范 第2部分:回收服務(wù)網(wǎng)點征求意見稿編制說明
- 新劍橋少兒英語第六冊全冊配套文本
- 科學預(yù)測方案
- 職業(yè)生涯規(guī)劃網(wǎng)絡(luò)與新媒體專業(yè)
- T-WAPIA 052.2-2023 無線局域網(wǎng)設(shè)備技術(shù)規(guī)范 第2部分:終端
- 市政管道開槽施工-市政排水管道的施工
- 人工智能在教育行業(yè)中的應(yīng)用與管理
評論
0/150
提交評論