visual basic程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
visual basic程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
visual basic程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
visual basic程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
visual basic程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1visualbasic程序設(shè)計(jì)基礎(chǔ)1.VB中的數(shù)據(jù)訪問(wèn)VB提供的數(shù)據(jù)庫(kù)引擎叫Jet。VB提供了兩種與Jet數(shù)據(jù)庫(kù)引擎接口的方法:Data控件(DataControl)和數(shù)據(jù)訪問(wèn)對(duì)象(DAO)。這兩種方法可以同時(shí)使用。

6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

Data控件提供了有限的不需編程就能訪問(wèn)現(xiàn)存數(shù)據(jù)庫(kù)的功能DAO模型是全面控制數(shù)據(jù)庫(kù)的完整編程接口第1頁(yè)/共93頁(yè)VB通過(guò)DAO、ADO和Jet引擎可以識(shí)別三類數(shù)據(jù)庫(kù):(1)VB數(shù)據(jù)庫(kù)

也稱本地?cái)?shù)據(jù)庫(kù),本地?cái)?shù)據(jù)庫(kù)文件格式與MicrosoftAccess相同。Jet引擎直接創(chuàng)建和操作這些數(shù)據(jù)庫(kù)。(2)外部數(shù)據(jù)庫(kù)

訪問(wèn)符合“索引順序訪問(wèn)文件方法(ISAM)”數(shù)據(jù)庫(kù),包括:dBaseIII、dBaseIV、Foxpro2.0和2.5以及Paradox3.x和4.x。(3)ODBC數(shù)據(jù)庫(kù)

訪問(wèn)符合ODBC標(biāo)準(zhǔn)的客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù),如MicrosoftSQLServer。6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

第2頁(yè)/共93頁(yè)2.VB數(shù)據(jù)庫(kù)體系結(jié)構(gòu)Jet引擎負(fù)責(zé)處理存儲(chǔ)、檢索、更新數(shù)據(jù)的結(jié)構(gòu),并提供了功能強(qiáng)大的面向?qū)ο蟮腄AO編程接口。(1)

VB數(shù)據(jù)庫(kù)應(yīng)用程序的組成VB數(shù)據(jù)庫(kù)應(yīng)用程序包含三部分,如圖6.1所示。圖6.1VB數(shù)據(jù)庫(kù)應(yīng)用程序的組成6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

用戶界面Jet引擎數(shù)據(jù)庫(kù)第3頁(yè)/共93頁(yè)①用戶界面和應(yīng)用程序代碼用戶界面是用戶所看見(jiàn)的用于交互的界面,它包括顯示數(shù)據(jù)并允許用戶查看或更新數(shù)據(jù)的窗體。驅(qū)動(dòng)這些窗體的是應(yīng)用程序的VB代碼,包括用來(lái)請(qǐng)求數(shù)據(jù)庫(kù)服務(wù)的數(shù)據(jù)訪問(wèn)對(duì)象和方法,比如添加或刪除記錄,或執(zhí)行查詢等。

6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

第4頁(yè)/共93頁(yè)②Jet引擎Jet引擎實(shí)際是一組動(dòng)態(tài)鏈接庫(kù)(DLL)文件。在運(yùn)行時(shí),這些文件被鏈接到VB程序。它把應(yīng)用程序的請(qǐng)求翻譯成.mdb(Access文件后綴)文件或其他數(shù)據(jù)庫(kù)的物理操作。Jet引擎真正讀取、寫入和修改數(shù)據(jù)庫(kù),并處理所有內(nèi)部事務(wù),如索引、鎖定、安全性和引用完整性。Jet引擎包含一個(gè)查詢處理器,接收并執(zhí)行SQL查詢,實(shí)現(xiàn)所需的數(shù)據(jù)操作。6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

第5頁(yè)/共93頁(yè)③數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)是包含數(shù)據(jù)庫(kù)表的一個(gè)或多個(gè)文件。本地VB或Access數(shù)據(jù)庫(kù)文件后綴為.mdb文件。(2)數(shù)據(jù)庫(kù)應(yīng)用程序的存放在單系統(tǒng)機(jī)中數(shù)據(jù)庫(kù)、數(shù)據(jù)引擎和用戶界面集中存放。在客戶機(jī)/服務(wù)器系統(tǒng)中,數(shù)據(jù)庫(kù)引擎和數(shù)據(jù)庫(kù)一起被放置在服務(wù)器上。數(shù)據(jù)庫(kù)引擎可以同時(shí)對(duì)多個(gè)客戶機(jī)的應(yīng)用程序提供服務(wù)、操作數(shù)據(jù)庫(kù)并對(duì)每個(gè)本地應(yīng)用程序返回所請(qǐng)求的記錄。6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

第6頁(yè)/共93頁(yè)6.1數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)

數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)引擎用戶界面服務(wù)器客戶機(jī)客戶機(jī)/服務(wù)器引擎,通過(guò)ODBC方式使用。在VB中,通過(guò)連接到ODBC數(shù)據(jù)源,如MicrosoftSQLServer等,可直接把查詢傳遞給服務(wù)器數(shù)據(jù)庫(kù)引擎。第7頁(yè)/共93頁(yè)

VB中創(chuàng)建和訪問(wèn)數(shù)據(jù)庫(kù)的途徑主要有3個(gè):可視化數(shù)據(jù)管理器使用可視化數(shù)據(jù)管理器,不需要編程就可以創(chuàng)建Jet數(shù)據(jù)庫(kù)。DAO使用VB的DAO部件通過(guò)編程的方法創(chuàng)建數(shù)據(jù)庫(kù)。ISAM或ODBC

VB可通過(guò)ISAM或ODBC驅(qū)動(dòng)程序來(lái)訪問(wèn)外部數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)。6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)第8頁(yè)/共93頁(yè)1.可視化數(shù)據(jù)管理器數(shù)據(jù)管理器(DataManager)是VB的一個(gè)傳統(tǒng)成員;用于快速地建立數(shù)據(jù)庫(kù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)內(nèi)容??梢酝瓿捎嘘P(guān)數(shù)據(jù)庫(kù)的操作,比如數(shù)據(jù)庫(kù)結(jié)構(gòu)的建立、記錄的添加及修改以及用ODBC連接到服務(wù)器端的數(shù)據(jù)庫(kù)如SQLServer等。啟動(dòng)數(shù)據(jù)管理器選擇“外接程序”菜單下的“可視化數(shù)據(jù)管理器”項(xiàng)就可以啟動(dòng)數(shù)據(jù)管理器,打開(kāi)“VisData”窗口。6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)第9頁(yè)/共93頁(yè)

2)工具欄按鈕6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)數(shù)據(jù)庫(kù)窗口SQL語(yǔ)句窗口顯示數(shù)據(jù)庫(kù)的結(jié)構(gòu),包括表名、列名、索引可輸入SQL命令,對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行查詢操作VisData窗口

第10頁(yè)/共93頁(yè)6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)設(shè)置記錄集的訪問(wèn)方式指定數(shù)據(jù)表中數(shù)據(jù)的顯示方式進(jìn)行事務(wù)處理第11頁(yè)/共93頁(yè)6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)表類型記錄集按鈕,允許直接對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行增、刪、改、查等操作。動(dòng)態(tài)集類型記錄集按鈕,將指定的數(shù)據(jù)打開(kāi)并讀入到內(nèi)存中,進(jìn)行數(shù)據(jù)編輯操作??煺疹愋陀涗浖?只能讀數(shù)據(jù)不能修改,適用于只查詢的情況第12頁(yè)/共93頁(yè)6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)指定數(shù)據(jù)表中數(shù)據(jù)的顯示方式,在新窗體上使用DATA控件指定數(shù)據(jù)表中數(shù)據(jù)的顯示方式,在新窗體上不使用DATA控件指定數(shù)據(jù)表中數(shù)據(jù)的顯示方式,在新窗體上使用DBGrid控件進(jìn)入第13頁(yè)/共93頁(yè)2.具體實(shí)現(xiàn)1)建立數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)student.mdb(學(xué)生數(shù)據(jù)庫(kù))中的表定義:

學(xué)生成績(jī)表(學(xué)號(hào),課程,成績(jī),學(xué)期)。6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)

學(xué)生成績(jī)表結(jié)構(gòu)字段名類型寬度學(xué)號(hào)Text6課程Text10成績(jī)Long4學(xué)期Text2第14頁(yè)/共93頁(yè)基本情況表(學(xué)號(hào),姓名,性別,專業(yè),出生年月,照片,備注)6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)學(xué)生基本情況表結(jié)構(gòu)字段名類型寬度學(xué)號(hào)Text6姓名Text10性別Text2專業(yè)Text10出生年月Date8照片Binary0備注Memo0第15頁(yè)/共93頁(yè)2)錄入數(shù)據(jù)照片的輸入:靜態(tài)設(shè)置:通過(guò)一個(gè)圖片編輯程序?qū)⒄掌b入剪貼板,等待從剪貼板復(fù)制到Picture1控件。動(dòng)態(tài)設(shè)置:通過(guò)Picture1_DblClick事件來(lái)完成剪貼板到Picture1控件的復(fù)制,當(dāng)移動(dòng)記錄指針時(shí),Picture1控件內(nèi)的照片存入數(shù)據(jù)庫(kù)。PrivateSubPicture1_DblClick()Picture1.Picture=Clipboard.GetDataEndSub6.3.1數(shù)據(jù)控件屬性第16頁(yè)/共93頁(yè)3)建立查詢VB的數(shù)據(jù)管理器提供了一個(gè)圖形化的設(shè)置查詢條件的窗口——查詢生成器。例如:查詢AuthorsID=10或AuthorsID=1的情況6.2本地?cái)?shù)據(jù)庫(kù)設(shè)計(jì)(ACCESS)進(jìn)入第17頁(yè)/共93頁(yè)Data控件數(shù)據(jù)控件提供有限的不需編程而能訪問(wèn)現(xiàn)存數(shù)據(jù)庫(kù)的功能,允許將VisualBasic的窗體與數(shù)據(jù)庫(kù)方便地進(jìn)行連接。使用數(shù)據(jù)控件獲取數(shù)據(jù)庫(kù)中記錄的集合,先在窗體上畫出控件,再通過(guò)它的三個(gè)基本屬性Connect、DatabaseName和RecordSource設(shè)置要訪問(wèn)的數(shù)據(jù)資源。6.3數(shù)據(jù)控件第18頁(yè)/共93頁(yè)1.Connect屬性Connect屬性指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫(kù)類型,VisualBasic默認(rèn)的數(shù)據(jù)庫(kù)是Access的MDB文件,也可連接ODBC等類型的數(shù)據(jù)庫(kù)。Access數(shù)據(jù)庫(kù)的所有表都包含在一個(gè)MDB文件中。6.3.1數(shù)據(jù)控件屬性第19頁(yè)/共93頁(yè)2.DatabaseName屬性DatabaseName屬性指定具體使用的數(shù)據(jù)庫(kù)文件名,包括文件所在的路徑名。數(shù)據(jù)庫(kù)中的基本表名可由RecordSource屬性指定。例如,要連接一個(gè)MicrosoftAccess的數(shù)據(jù)庫(kù)存放在C:\Student.mdb.設(shè)置DatabaseName=”C:\Student.mdb“,該方法可以通過(guò)屬性欄設(shè)置,或在過(guò)程中指定.在過(guò)程中可以使用相對(duì)路徑來(lái)描述,DatabaseName=”..\Student.mdb“。6.3.1數(shù)據(jù)控件屬性第20頁(yè)/共93頁(yè)3.RecordSource屬性RecordSource確定具體可訪問(wèn)的記錄集對(duì)象Recordset。該屬性值可以是數(shù)據(jù)庫(kù)中的單個(gè)表名或者是使用SQL查詢語(yǔ)言的一個(gè)查詢。例如,指定Student.mdb數(shù)據(jù)庫(kù)中的基本情況表:RecordSource=”基本情況”。例如,訪問(wèn)基本情況表中所有物理系學(xué)生的數(shù)據(jù)。RecordSource=”SelectFrom基本情況Where專業(yè)=’物理’

”,6.3.1數(shù)據(jù)控件屬性第21頁(yè)/共93頁(yè)4.RecordsetType屬性RecordsetType屬性確定記錄集類型,可靜態(tài)或動(dòng)態(tài)設(shè)定。(1)Table:表記錄集類型,一個(gè)記錄集(單個(gè)表)(2)Dynaset:動(dòng)態(tài)集類型,一個(gè)動(dòng)態(tài)記錄集(多個(gè)表),默認(rèn)值。(3)Snapshot:快照類型,一個(gè)記錄集靜態(tài)副本(不可改)6.3.1數(shù)據(jù)控件屬性第22頁(yè)/共93頁(yè)5.EofAction和BofAction屬性可靜態(tài)或動(dòng)態(tài)設(shè)定。當(dāng)記錄指針指向Recordset對(duì)象的開(kāi)始(第一個(gè)記錄前)或結(jié)束(最后一個(gè)記錄后)時(shí),BofAction和EofAction屬性的設(shè)置或返回值決定了數(shù)據(jù)控件要采取的操作。操作屬性的取值如表6.1所示。6.3.1數(shù)據(jù)控件屬性第23頁(yè)/共93頁(yè)6.3.1數(shù)據(jù)控件屬性屬性值設(shè)置操作BofAction0vbBOFActionMoveFirst控件重定位到第1個(gè)記錄(缺省)1vbBOFActionBOF移過(guò)Recordset的開(kāi)始位,定位到一個(gè)無(wú)效記錄;將在第一個(gè)記錄上觸發(fā)Data控件的Validate事件,緊跟著是非法(BOF)記錄上的Reposition事件。此刻禁止Data控件上的MovePrevious按鈕。焦點(diǎn)將從一個(gè)記錄轉(zhuǎn)換到另一個(gè)記錄之前,Validate事件發(fā)生

該事件發(fā)生在某行變?yōu)楫?dāng)前行之后

第24頁(yè)/共93頁(yè)6.3.1數(shù)據(jù)控件屬性屬性值設(shè)置操作EofAction0vbEOFActionMoveLast控件重定位到最后一個(gè)記錄(缺省)1vbEOFActionEOF移過(guò)Recordset的結(jié)尾,定位到一個(gè)無(wú)效記錄;在最后一個(gè)記錄上觸發(fā)Data控件的Validate事件,緊跟著是在非法(EOF)記錄上的事件

Reposition.此刻禁止Data控件上的MoveNext按鈕.2vbEOFActionAddNew移過(guò)最后一個(gè)記錄,在當(dāng)前記錄上觸發(fā)Data控件的Validate事件,緊跟著是自動(dòng)的AddNew,向記錄集加入新的空記錄,接下來(lái)是在新記錄上的Reposition事件,移動(dòng)記錄指針,新記錄寫入數(shù)據(jù)庫(kù).第25頁(yè)/共93頁(yè)6.與數(shù)據(jù)控件綁定數(shù)據(jù)控件本身不能直接顯示記錄集中的數(shù)據(jù),必須通過(guò)能與它綁定的控件來(lái)實(shí)現(xiàn)??膳c數(shù)據(jù)控件綁定的控件對(duì)象有:文本框、標(biāo)簽、圖像框、圖形框、列表框、組合框、復(fù)選框、網(wǎng)格、DB列表框、DB組合框、DB網(wǎng)格和OLE容器等。要使綁定控件能被數(shù)據(jù)庫(kù)約束,必需在靜態(tài)或動(dòng)態(tài)時(shí)對(duì)上述控件的兩個(gè)屬性進(jìn)行設(shè)置:DataSource屬性該屬性通過(guò)指定—個(gè)有效的數(shù)據(jù)控件連接到一個(gè)數(shù)據(jù)庫(kù)上。DataField屬性該屬性設(shè)置數(shù)據(jù)庫(kù)有效的字段與綁定控件建立聯(lián)系。6.3.1數(shù)據(jù)控件屬性第26頁(yè)/共93頁(yè)數(shù)據(jù)控件在裝入數(shù)據(jù)庫(kù)時(shí),它把記錄集的第一個(gè)記錄作為當(dāng)前記錄。當(dāng)上述控件與數(shù)據(jù)控件綁定后,VB將當(dāng)前記錄的字段值賦給控件。綁定控件、數(shù)據(jù)控件和數(shù)據(jù)庫(kù)三者的關(guān)系如圖下示。6.3.1數(shù)據(jù)控件屬性綁定控件數(shù)據(jù)庫(kù)第27頁(yè)/共93頁(yè)例6.2設(shè)計(jì)一個(gè)窗體用以顯示建立的student.mdb數(shù)據(jù)庫(kù)中基本情況表的內(nèi)容。要顯示基本情況表中除了備注字段外的6個(gè)字段,故需要用6個(gè)綁定控件與之對(duì)應(yīng)。這里用一個(gè)圖形框顯示照片和5個(gè)文本框顯示學(xué)號(hào)、姓名等數(shù)據(jù)。6.3.1數(shù)據(jù)控件屬性進(jìn)入第28頁(yè)/共93頁(yè)數(shù)據(jù)控件Data1屬性設(shè)置Connect屬性指定為Access類型DatabaseName屬性連接數(shù)據(jù)庫(kù)Student.mdbRecordSource屬性設(shè)置為“基本情況”表。圖片框和5個(gè)文本框控件屬性設(shè)置Text1~Text5的DataSource屬性設(shè)置成Data1。Text1~Text5的DataField屬性分別選擇與其對(duì)應(yīng)的字段學(xué)號(hào)、姓名、性別、專業(yè)和出生年月。Picture1的DataField屬性選擇字段照片6.3.1數(shù)據(jù)控件屬性進(jìn)入第29頁(yè)/共93頁(yè)例6.3用數(shù)據(jù)網(wǎng)格控件MsFlexGrid顯示Student.mdb數(shù)據(jù)庫(kù)中基本情況表的內(nèi)容。6.3.1數(shù)據(jù)控件屬性進(jìn)入第30頁(yè)/共93頁(yè)MsFlexGrid控件不是VisualBasic工具箱內(nèi)的默認(rèn)控件,需要在開(kāi)發(fā)環(huán)境中選擇“工程|部件”菜單命令,并在隨即出現(xiàn)的對(duì)話框中選擇“MicrosoftFlexGridControl6.0”選項(xiàng),將其添加到工具箱中。數(shù)據(jù)網(wǎng)格控件的DataSource屬性設(shè)置為一個(gè)Data控件,運(yùn)行時(shí)網(wǎng)格控件的列標(biāo)題會(huì)用Data控件的記錄集里的數(shù)據(jù)自動(dòng)地設(shè)置。6.3.1數(shù)據(jù)控件屬性第31頁(yè)/共93頁(yè)

DataSource=Data1FixedCols=0MSFlexGrid1DatabaseName=”c:\student.mdb”RecordsetType=1RecordSource=”基本情況”Data1其它屬性設(shè)置默認(rèn)控件名表6.4控件屬性本例所用控件的屬性設(shè)置如下表所示。6.3.1數(shù)據(jù)控件屬性注意:不可卷動(dòng)列屬性FixedCols=0與FixedCols=1的區(qū)別進(jìn)入第32頁(yè)/共93頁(yè)1.Reposition事件Reposition事件激活的條件:當(dāng)記錄集指針從一條記錄移到另一條記錄,會(huì)產(chǎn)生Reposition事件。Reposition事件作用:顯示當(dāng)前指針的位置。6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubData1_Reposition()Data1.Caption=Data1.Recordset.AbsolutePosition+1EndSubAbsolutePosition屬性指示當(dāng)前指針值(從0開(kāi)始)。當(dāng)單擊數(shù)據(jù)控件對(duì)象上的箭頭按鈕時(shí),數(shù)據(jù)控件的標(biāo)題區(qū)會(huì)顯示記錄的序號(hào)第33頁(yè)/共93頁(yè)2.Validate事件Validate事件激活的方法:在焦點(diǎn)轉(zhuǎn)換到一個(gè)(第二個(gè))控件之前發(fā)生。該控件CausesValidation屬性默認(rèn)值設(shè)置為True。Validate事件的作用:用于檢查被數(shù)據(jù)控件綁定控件的狀態(tài),例如,由一個(gè)記錄移到另一個(gè)記錄;或者焦點(diǎn)由一個(gè)文本框移到另一個(gè)文本框.6.3.2數(shù)據(jù)控件的事件和常用方法第34頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法例題:在窗體中放置一個(gè)CommandButton和兩個(gè)TextBox控件,來(lái)演示Validate

事件和CausesValidation屬性的使用。限制條件為:如果Text1沒(méi)有包含日期或Text2沒(méi)有包含一個(gè)小于10的數(shù)字,將阻止焦點(diǎn)的轉(zhuǎn)換。兩個(gè)TextBox控件的CausesValidation屬性在缺省情況為True,這樣當(dāng)把焦點(diǎn)從一個(gè)TextBox轉(zhuǎn)換到另一個(gè)時(shí),Validate事件發(fā)生。進(jìn)入第35頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法部分屬性方法的使用:(1)控件對(duì)象.SetFocus為控件對(duì)象設(shè)置焦點(diǎn),例如:Text1.SetFocus(2)KeepFocus保持或取消焦點(diǎn),例如:KeepFocus

=True(3)Show顯示指定的窗體或控件,可以配合KeepFocus方法設(shè)置控件的焦點(diǎn)。(4)Val(Text2.Text)將控件對(duì)象的字符屬性轉(zhuǎn)換為數(shù)值屬性(5)NotIsDate(控件對(duì)象.Text)判斷對(duì)象的屬性是否為日期類型,如是返回Ture(6)NotIsNumeric

(控件對(duì)象.Text)判斷對(duì)象的屬性是否為數(shù)值,如是返回Ture第36頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubForm_Load()Command1.CausesValidation=False

‘設(shè)置該屬性為False,當(dāng)用戶單擊按鈕時(shí)Validate事件不發(fā)生。Command1.Caption="Help"Show'顯示FromText1.SetFocus

'。EndSub為Text1設(shè)置焦點(diǎn)第37頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubCommand1_Click()

‘當(dāng)單擊此按鈕時(shí)給出用戶幫助信息。MsgBox_

"Text1必須為日期類型的數(shù)"&vbCrLf&_"Text2必須為小于或等于10的數(shù)."EndSub回車換行第38頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubText1_Validate(KeepFocusAsBoolean)

‘如果值不是一個(gè)日期,則保持焦點(diǎn),除非用戶單擊Help。IfNotIsDate(Text1.Text)ThenKeepFocus=TrueMsgBox"請(qǐng)?jiān)谶@里輸入日期.",,"Text1"EndifEndSub返回Boolean值指明某表達(dá)式是否為日期類型。

第39頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubText2_Validate(KeepFocusAsBoolean)

‘如果值是一個(gè)大于10的數(shù)字,保持焦點(diǎn)。

IfNotIsNumeric(Text2.Text)OrVal(Text2.Text)>10ThenKeepFocus=TrueMsgBox_"請(qǐng)輸入一個(gè)小于或等于10的數(shù).",,"Text2"EndIfEndSub返回Boolean值指明表達(dá)式的值是否為數(shù)字。進(jìn)入第40頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法Validate事件的檢查方法:在一條不同的記錄成為當(dāng)前記錄之前,Update、Delete、Unload、Find或Close方法操作之前會(huì)均會(huì)發(fā)生Validate事件。通過(guò)Save參數(shù)(True或False)判斷被連接的數(shù)據(jù)(被綁定的控件)

是否發(fā)生變化。Action是一個(gè)整數(shù),用來(lái)指示引發(fā)Validate事件的操作。通過(guò)Action參數(shù)判斷哪一種操作觸發(fā)了Validate事件。第41頁(yè)/共93頁(yè)

6.3.2數(shù)據(jù)控件的事件和常用方法

Validate事件的Action參數(shù)

常數(shù)值描述vbDataActionCancel0Sub退出時(shí)取消操作vbDataActionMoveFirst1MoveFirst方法。vbDataActionMovePrevious2MovePrevious方法vbDataActionMoveNext3MoveNext方法vbDataActionMoveLast4MoveLast方法。vbDataActionAddNew5AddNew方法第42頁(yè)/共93頁(yè)

6.3.2數(shù)據(jù)控件的事件和常用方法

Validate事件的Action參數(shù)

常數(shù)值描述vbDataActionUpdate6Update操作。vbDataActionDelete7Delete方法vbDataActionFind8Find方法vbDataActionBookmark9Bookmark屬性已被設(shè)置vbDataActionClose10Close的方法vbDataActionUnload11窗體正在卸載。保存對(duì)Recorded對(duì)象的當(dāng)前記錄所做的所有更改。第43頁(yè)/共93頁(yè)例如,不允許用戶在數(shù)據(jù)瀏覽時(shí)清空性別數(shù)據(jù),可使用下列代碼:6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubData1_Validate(ActionAsInteger,_SaveAsInteger)IfSaveAndLen(Trim(Text3.Text))=0ThenAction=0'取消本次移動(dòng)記錄指針的操作MsgBox"性別不能為空!"EndIfEndSub

檢查控件Text3內(nèi)的數(shù)據(jù)是否被清空。如果Text3內(nèi)數(shù)據(jù)發(fā)生變化,則Save參數(shù)返回True,若性別對(duì)應(yīng)的文本框Text3被置空,則通過(guò)Action=0取消對(duì)數(shù)據(jù)控件指針移動(dòng)的操作去除前導(dǎo)空格和末尾空格第44頁(yè)/共93頁(yè)3.?dāng)?shù)據(jù)控件的常用方法數(shù)據(jù)控件的內(nèi)置功能很多,可以在代碼中用數(shù)據(jù)控件的方法訪問(wèn)這些屬性。1)Refresh方法當(dāng)RecordSource在運(yùn)行時(shí)被改變時(shí),使用Refresh方法,將當(dāng)前指定RecordSource中的數(shù)據(jù)裝入內(nèi)存工作區(qū),達(dá)到激活數(shù)據(jù)庫(kù)中一個(gè)表的作用。6.3.2數(shù)據(jù)控件的事件和常用方法第45頁(yè)/共93頁(yè)6.3.2數(shù)據(jù)控件的事件和常用方法PrivateSubForm_Load()DimMpathAsStringMpath=App.Path’獲取當(dāng)前路徑Data1.DatabaseName=mpath+”/”+”Student.mdb”

’連接Student數(shù)據(jù)庫(kù)

Data1.RecordSource=‘基本情況’

’連接基本情況表

Data1.Refresh’激活數(shù)據(jù)控件所連接的表EndSubApp

對(duì)象是通過(guò)關(guān)鍵字App訪問(wèn)的全局對(duì)象。它指定如下信息:應(yīng)用程序的標(biāo)題、版本信息、可執(zhí)行文件的路徑及名稱以及是否運(yùn)行前一個(gè)應(yīng)用程序的示例。Path返回或設(shè)置當(dāng)前路徑,在編程時(shí)無(wú)效,運(yùn)行時(shí)有效。第46頁(yè)/共93頁(yè)2)UpdateControls方法UpdateControls方法從數(shù)據(jù)庫(kù)中重新讀數(shù)據(jù)送到被數(shù)據(jù)控件綁定的控件內(nèi)。6.3.2數(shù)據(jù)控件的事件和常用方法控件DATA控件數(shù)據(jù)庫(kù)控件DATA控件數(shù)據(jù)庫(kù)

3)UpdateRecord方法對(duì)綁定控件內(nèi)的數(shù)據(jù)修改后,數(shù)據(jù)控件需要移動(dòng)記錄集的指針才能保存修改。如果使用UpdateRecord方法,可強(qiáng)制數(shù)據(jù)控件將綁定控件內(nèi)的數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中,而不再觸發(fā)Validate事件。第47頁(yè)/共93頁(yè)記錄集Recordset常用的屬性和方法。1.AbsolutePosition屬性AbsolutePosition返回當(dāng)前指針值,如果是第1條記錄,其值為0,該屬性為只讀屬性。2.Bof和Eof的屬性Bof判定記錄指針是否在首記錄之前,若Bof為True,則當(dāng)前位置位于記錄集的第1條記錄之前。Eof判定記錄指針是否在末記錄之后,若Eof為True,則當(dāng)前位置位于記錄集的最后1條記錄之后。6.3.3記錄集的屬性和方法6.3.2數(shù)據(jù)控件的事件和常用方法第48頁(yè)/共93頁(yè)3.Bookmark屬性Bookmark屬性的值采用字符串類型,用于設(shè)置或返回當(dāng)前指針的標(biāo)簽。在程序中可使用Bookmark屬性重定位記錄集的指針。4.Nomatch屬性在記錄集中進(jìn)行查找時(shí),如果找到相匹配的記錄,則Recordset的NoMatch屬性為False,否則為True。5.RecordCount屬性RecordCount屬性對(duì)Recordset對(duì)象中的記錄計(jì)數(shù),使用RecordCount屬性可確定Recordset對(duì)象中記錄的數(shù)目。6.3.3記錄集的屬性和方法第49頁(yè)/共93頁(yè)6.Move方法

五種Move方法是:MoveFirst將控件移動(dòng)到第1條記錄。MoveLast

將控件移動(dòng)到最后一條記錄。MoveNext

將控件移動(dòng)到后一條記錄。MovePrevious

將控件移動(dòng)到前一條記錄。Move[n]

向前或向后移n條記錄,n為指定的數(shù)值。6.3.3記錄集的屬性和方法第50頁(yè)/共93頁(yè)例6.4設(shè)計(jì)一個(gè)窗體用以顯示建立的student.mdb數(shù)據(jù)庫(kù)中基本情況表的內(nèi)容。在窗體上用4個(gè)命令按鈕實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。圖6.10用按鈕代替數(shù)據(jù)控件對(duì)象的箭頭按鈕6.3.3記錄集的屬性和方法第51頁(yè)/共93頁(yè)命令按鈕Command1_Click事件移至第1條記錄,代碼如下:6.3.3記錄集的屬性和方法命令按鈕Command4_Click事件移至最后一條記錄,代碼如下:PrivateSubCommand4_Click()Data1.Recordset.MoveLastEndSubPrivateSubCommand1_Click()Data1.Recordset.MoveFirstEndSub第52頁(yè)/共93頁(yè)使用Move方法需要考慮Recordset對(duì)象的邊界狀態(tài)。如果越界,則用MoveFirst方法定位到第1條記錄或用MoveLast方法定位到最后一條記錄。使用MoveFirst方法定位到第1條記錄:6.3.3記錄集的屬性和方法PrivateSubCommand2_Click()Data1.Recordset.MovePreviousIfData1.Recordset.BOFThenData1.Recordset.MoveFirstEndSub第53頁(yè)/共93頁(yè)使用MoveLast方法定位到最后一條記錄:6.3.3記錄集的屬性和方法PrivateSubCommand3_Click()Data1.Recordset.MoveNextIfData1.Recordset.EOFThenData1.Recordset.MoveLastEndSub第54頁(yè)/共93頁(yè)7.Find方法使用Find方法可在Recordset對(duì)象中查找與指定條件相符的一條記錄,并使之成為當(dāng)前記錄。四種Find方法是:FindFirst方法從記錄集的開(kāi)始查找滿足條件的第1條記錄。FindLast方法從記錄集的尾部向前查找滿足條件的第l條記錄。FindNext方法從當(dāng)前記錄開(kāi)始查找滿足條件的下一條記錄。FindPrevious方法從當(dāng)前記錄開(kāi)始查找滿足條件的上一條記錄。6.3.3記錄集的屬性和方法第55頁(yè)/共93頁(yè)Find方法的語(yǔ)法格式:4種格式相同

數(shù)據(jù)集.Find方法條件表達(dá)式條件表達(dá)式:是一個(gè)指定字段與常量關(guān)系的字符串表達(dá)式。在構(gòu)造表達(dá)式時(shí),除了用普通的關(guān)系運(yùn)算外,還可以用Like運(yùn)算符例如,查找專業(yè)=物理的紀(jì)錄

“Data1.Recordset.FindFirst專業(yè)=’物理’”查找下一條符合條件的記錄,可繼續(xù)使用語(yǔ)句:

”Data1.Recordset.FindNext專業(yè)=’物理’”。6.3.3記錄集的屬性和方法“=”用于精確查找第56頁(yè)/共93頁(yè)例如,要在記錄集內(nèi)查找專業(yè)名稱中帶有“建”字的專業(yè):

Data1.Recordset.FindFirst專業(yè)Like‘%建%’如果Find方法找不到相匹配的記錄,則記錄保持在查找的始發(fā)處,Recordset的NoMatch屬性為True。如果Find方法找到相匹配的記錄,則記錄定位到該記錄,Recordset的NoMatch屬性為False。6.3.3記錄集的屬性和方法“Like”用于模糊查找第57頁(yè)/共93頁(yè)6.3.3記錄集的屬性和方法PrivateSubCommand1_Click()Data1.Recordset.FindFirst“

course=‘English’”IfData1.Recordset.NoMatchThenMsgBox“Nosuchrecordfound”ElseMsgBoxData1.Recordset.Fields(“course”)EndIfEndSub第58頁(yè)/共93頁(yè)8.Seek方法Seek方法:是根據(jù)索引字段的值,查找與指定索引規(guī)則相符的第1條記錄,并使之成為當(dāng)前記錄。其語(yǔ)法格式為:

數(shù)據(jù)表對(duì)象.seekcomparison,keyl,key2…比較運(yùn)算符comparison,可用的比較運(yùn)算符有:=、>=、>、<>、<、<=Seek允許接受多個(gè)參數(shù)keyl,key2,…;在使用Seek方法定位記錄時(shí),必須打開(kāi)索引文件,通過(guò)Index屬性設(shè)置索引文件。若在記錄集中多次使用同樣的Seek方法(參數(shù)相同),那么找到的總是同一條記錄。6.3.3記錄集的屬性和方法第59頁(yè)/共93頁(yè)例如,假設(shè)數(shù)據(jù)庫(kù)Student內(nèi)基本情況表的索引字段為學(xué)號(hào),滿足學(xué)號(hào)字段值大于等于200301的第1條記錄可使用以下程序代碼:6.3.3記錄集的屬性和方法

DimDbAsDatabase,RsAsRecordset'定義變量

SetDb=OpenDatabase("student.mdb")SetRs=Db.OpenRecordset("基本情況表")SetData1.Recordset=Rs'為Recordset賦值

Data1.Recordset.Index="學(xué)號(hào)"'打開(kāi)名稱為“學(xué)號(hào)”的索引

Data1.Recordset.Seek">","200301"IfData1.Recordset.NoMatchThenMsgBox"Nosuchrecordfound"ElseMsgBoxData1.Recordset.Fields("學(xué)號(hào)")EndIf第60頁(yè)/共93頁(yè)數(shù)據(jù)庫(kù)記錄的增、刪、改操作需要使用AddNew、Delete、Edit和Update方法。它們的語(yǔ)法格式為:

數(shù)據(jù)控件.記錄集.方法名1.增加記錄

①調(diào)用AddNew方法。②給各字段賦值。給字段賦值格式為:Recordset.Fields(”字段名”)=值。③調(diào)用Update方法,將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第61頁(yè)/共93頁(yè)1.增加記錄PrivateSubcmdadd_Click()

Data1.Recordset.AddNewFori=0To5Text1(i).Enabled=TrueText1(i).Text=""NextiText1(0).SetFocusEndSub注:控件對(duì)象.EnabledEnabled是設(shè)置激活或者禁用控件對(duì)象,=True表示激活,=false表示禁止6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作增加新記錄第62頁(yè)/共93頁(yè)P(yáng)rivateSubcmdsave_Click()IfText1(0).Text=""ThenMsgBox“學(xué)號(hào)不能為空!"Text1(0).SetFocusExitSubEndIfData1.Recordset.Fields(“學(xué)號(hào)")=Text1(0).TextData1.Recordset.Fields(“姓名")=Text1(1).TextData1.Recordset.Fields(“性別")=Text1(2).TextData1.Recordset.Fields(“年齡")=Text1(3).TextData1.Recordset.Fields(“系別")=Text1(4).TextData1.Recordset.Fields(“入學(xué)成績(jī)")=Text1(5).TextData1.Recordset.UpdateEndSub

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作給各字段賦值調(diào)用Update方法第63頁(yè)/共93頁(yè)

如果使用AddNew方法添加新的記錄,但是沒(méi)有使用Update方法而移動(dòng)到其他記錄,或者關(guān)閉記錄集,那么所做的輸入將全部丟失,而且沒(méi)有任何警告。當(dāng)調(diào)用Update方法寫入記錄后,記錄指針自動(dòng)返回到添加新記錄前的位置上,而不顯示新記錄。因此,需要在調(diào)用Update方法后,使用MoveLast方法將記錄指針再次移到新記錄上。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第64頁(yè)/共93頁(yè)2.刪除記錄

①定位被刪除的記錄使之成為當(dāng)前記錄。②調(diào)用Delete方法。③移動(dòng)記錄指針。在使用Delete方法時(shí),當(dāng)前記錄立即刪除,不加任何的警告或者提示。刪除一條記錄后,被數(shù)據(jù)庫(kù)所約束的綁定控件仍舊顯示該記錄的內(nèi)容。因此,必須移動(dòng)記錄指針?biāo)⑿陆壎丶话悴捎靡浦料乱挥涗浀奶幚矸椒?。在移?dòng)記錄指針后,應(yīng)該檢查Eof屬性6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第65頁(yè)/共93頁(yè)2.刪除記錄PrivateSubcmddelete_Click()

DimmyvalAsStringmyval=MsgBox("是否要?jiǎng)h除該記錄?",vbYesNo)Ifmyval=vbYesThenData1.Recordset.DeleteData1.Recordset.MoveNextEndIfIfData1.Recordset.EOFThenData1.Recordset.MoveLastEndIfEndSub6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作刪除記錄第66頁(yè)/共93頁(yè)3.編輯記錄數(shù)據(jù)控件自動(dòng)提供了修改現(xiàn)有記錄的能力,當(dāng)直接改變被數(shù)據(jù)庫(kù)所約束的綁定控件的內(nèi)容后,需單擊數(shù)據(jù)控件對(duì)象的任一箭頭按鈕來(lái)改變當(dāng)前記錄,確定所做的修改。使用程序代碼修改當(dāng)前記錄步驟的為:

①調(diào)用Edit方法。②給各字段賦值。③調(diào)用Update方法,確定所做的修改。如果要放棄對(duì)數(shù)據(jù)的所有修改,可用updatecontrols方法,重讀數(shù)據(jù)庫(kù)的數(shù)據(jù),沒(méi)有調(diào)用Update方法,數(shù)據(jù)的修改沒(méi)有寫入數(shù)據(jù)庫(kù)的表中。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第67頁(yè)/共93頁(yè)3.編輯記錄PrivateSubcmdedit_Click()Fori=0To5Text1(i).Enabled=TrueNextIData1.Recordset.Edit;EndSub6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作編輯當(dāng)前記錄第68頁(yè)/共93頁(yè)P(yáng)rivateSubcmdsave_Click()Data1.Recordset.Fields(“學(xué)號(hào)")=Text1(0).TextData1.Recordset.Fields(“姓名")=Text1(1).TextData1.Recordset.Fields(“性別")=Text1(2).TextData1.Recordset.Fields(“年齡")=Text1(3).TextData1.Recordset.Fields(“系別")=Text1(4).TextData1.Recordset.Fields(“入學(xué)成績(jī)")=Text1(5).TextData1.Recordset.UpdateEndSub

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作給各字段賦值調(diào)用Update方法第69頁(yè)/共93頁(yè)4.放棄編輯記錄如果要放棄對(duì)數(shù)據(jù)的所有修改,可用updatecontrols方法,重讀數(shù)據(jù)庫(kù)的數(shù)據(jù),沒(méi)有調(diào)用Update方法,數(shù)據(jù)的修改沒(méi)有寫入數(shù)據(jù)庫(kù),所以這樣的記錄會(huì)在刷新記錄集時(shí)丟失。PrivateSubcmdcancel_Click()

Data1.UpdateControlsData1.Recordset.MoveFirstEndSub6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作放棄修改第70頁(yè)/共93頁(yè)圖6.11編程建立增、刪、改、查功能例6.5設(shè)計(jì)一個(gè)窗體用以顯示建立的student.mdb數(shù)據(jù)庫(kù)中基本情況表的內(nèi)容。并加入“新增”、“刪除”、“修改”、“放棄”和“查找”鈕,通過(guò)對(duì)5個(gè)按紐的編程建立增、刪、改、查功能。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作進(jìn)入第71頁(yè)/共93頁(yè)Command1_Click事件的功能:當(dāng)按鈕提示為“新增”時(shí)調(diào)用AddNew方法,并將提示文字改為“確認(rèn)”,同時(shí)使“刪除”按鈕Command2、“修改”按鈕Command3和“查找”按鈕Command5不可用,而使“放棄”按鈕Command4可用。新增記錄后,需再次單擊Command1調(diào)用Update方法確認(rèn)添加的記錄,再將提示文字改為“新增”,并使“刪除”、“修改”和“查找”按鈕可用,而使“放棄”按鈕不可用。OnErrorResumeNext語(yǔ)句表示在程序運(yùn)行時(shí)發(fā)生錯(cuò)誤,忽略錯(cuò)誤行,繼續(xù)執(zhí)行下一語(yǔ)句。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第72頁(yè)/共93頁(yè)

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubCommand1_Click()OnErrorResumeNext。Command2.Enabled=NotCommand2.EnabledCommand3.Enabled=NotCommand3.EnabledCommand4.Enabled=NotCommand4.EnabledCommand5.Enabled=NotCommand5.Enabled第73頁(yè)/共93頁(yè)

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作IfCommand1.Caption="新增"ThenCommand1.Caption=“確認(rèn)”

Data1.Recordset.AddNewText1.SetFocusElseCommand1.Caption="新增"

Data1.Recordset.UpdateData1.Recordset.MoveLastEndIfEndSub第74頁(yè)/共93頁(yè)命令按鈕Command2_Click事件功能:調(diào)用方法刪除當(dāng)前記錄。當(dāng)記錄集中的記錄全部被刪除后,再執(zhí)行Move語(yǔ)句將發(fā)生錯(cuò)誤,這時(shí)由OnErrorResumeNext語(yǔ)句處理錯(cuò)誤。

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubCommand2_Click()

OnErrorResumeNextData1.Recordset.DeleteData1.Recordset.MoveNext

IfData1.Recordset.EOFThenData1.Recordset.MoveLastEndSub第75頁(yè)/共93頁(yè)命令按鈕Command3_Click事件的功能:根據(jù)按鈕提示文字調(diào)用Edit方法進(jìn)入編輯狀態(tài)或調(diào)用Update方法將修改后的數(shù)據(jù)寫入到數(shù)據(jù)庫(kù),并控制其他3個(gè)按鈕的可用性,代碼如下:

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubCommand3_Click()OnErrorResumeNextCommand1.Enabled=NotCommand1.EnabledCommand2.Enabled=NotCommand2.EnabledCommand4.Enabled=NotCommand4.EnabledCommand5.Enabled=NotCommand5.Enabled第76頁(yè)/共93頁(yè)

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作IfCommand3.Caption="修改"ThenCommand3.Caption="確認(rèn)"

Data1.Recordset.EditText1.SetFocusElseCommand3.Caption="修改"

Data1.Recordset.UpdateEndIfEndSub第77頁(yè)/共93頁(yè)命令按鈕Command4_Click事件的功能:使用UpdateControls方法放棄操作,代碼如下:6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubCommand4_Click()OnErrorResumeNextCommand1.Caption="新增"

Command3.Caption="修改"第78頁(yè)/共93頁(yè)

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作Command1.Enabled=TrueCommand2.Enabled=TrueCommand3.Enabled=TrueCommand4.Enabled=falseCommand5.Enabled=TrueData1.UpdateControlsDala1.Recordset.MoveNextEndSub第79頁(yè)/共93頁(yè)命令按鈕Command5_Click事件的功能:根據(jù)輸入專業(yè)使用SQL語(yǔ)句查找記錄,代碼如下:6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubCommand5_Click()DimmzyAsStringmzy=InputBox$("請(qǐng)輸入專業(yè)","查找窗")

Data1.RecordSource="Select*From基本情況_Where專業(yè)='"&mzy&"'"Data1.Refresh第80頁(yè)/共93頁(yè)上面的代碼給出了數(shù)據(jù)表內(nèi)數(shù)據(jù)處理的基本方法6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作

IfData1.Recordset.EOFThenMsgBox"無(wú)此專業(yè)!",,"提示"

Data1.RecordSource=“基本情況”

Data1.RefreshEndIfEndSub第81頁(yè)/共93頁(yè)使用Data1_Validate事件過(guò)濾無(wú)效記錄單擊數(shù)據(jù)控件的箭頭按鈕可改變當(dāng)前記錄,完成添加新記錄或?qū)σ延杏涗浀男薷?。單擊?shù)據(jù)控件的箭頭按鈕時(shí)會(huì)觸發(fā)Validate事件,在該事件中,可以根據(jù)Action取值(14)來(lái)判斷單擊了數(shù)據(jù)控件哪一個(gè)箭頭按鈕。例如,對(duì)學(xué)號(hào)字段進(jìn)行測(cè)試,如果學(xué)號(hào)為空則輸入無(wú)效。在例6.5中被學(xué)號(hào)字段所約束的綁定控件是Text1,可用Text1.DataChanged屬性檢測(cè)Text1控件所對(duì)應(yīng)的當(dāng)前記錄中的字段值的內(nèi)容是否發(fā)生了變化,Action=6表示Update操作。6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作第82頁(yè)/共93頁(yè)6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作PrivateSubData1_Validate(ActionAsInteger,SaveAsInteger)IfText1.Text=""And_(Action=6OrText1.DataChanged)

‘Action=6表示Update操作ThenMsgBox"數(shù)據(jù)不完整,必須要有學(xué)號(hào)!"

Data1.UpdateControls‘讀回原數(shù)據(jù)EndIf第83頁(yè)/共93頁(yè)

6.3.4數(shù)據(jù)庫(kù)記錄的增刪改操作IfAction>=1AndAction<=4ThenCommand1.Caption="新增"

Command3.Caption="修改"

Command1.Enabled=TrueCommand2.Enabled=Tru

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論