在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù)_第1頁(yè)
在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù)_第2頁(yè)
在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù)_第3頁(yè)
在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù)_第4頁(yè)
在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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)介

在這里我們學(xué)習(xí)怎樣建立數(shù)據(jù)庫(kù),首先需要確定要建立數(shù)據(jù)庫(kù)的類型。在VisualBasic中通過(guò)數(shù)據(jù)訪問(wèn)控件或數(shù)據(jù)訪問(wèn)對(duì)象(DAO)可以訪問(wèn)下列數(shù)據(jù)庫(kù):1.JET數(shù)據(jù)庫(kù),即MicrosoftAccessISAM數(shù)據(jù)庫(kù),如:dBase,FoxPro等ODBC數(shù)據(jù)庫(kù),凡是遵循ODBC標(biāo)準(zhǔn)的客戶/服務(wù)器數(shù)據(jù)庫(kù)。如:MicrosoftSQLServer、Oracle一般來(lái)說(shuō),如果要開發(fā)個(gè)人的小型數(shù)據(jù)庫(kù)系統(tǒng),用Access數(shù)據(jù)庫(kù)比較合適,要開發(fā)大、中型的數(shù)據(jù)庫(kù)系統(tǒng)用ODBC數(shù)據(jù)庫(kù)更為適宜。而dBase和FoxPro數(shù)據(jù)庫(kù)由于已經(jīng)過(guò)時(shí),除非特別的情況,否則不要使用。在我們的例子中,當(dāng)然選用Access數(shù)據(jù)庫(kù)了。建立Access數(shù)據(jù)庫(kù)有兩種方法:一是在MicrosoftAccess中建立數(shù)據(jù)庫(kù)。點(diǎn)擊“新建”按鈕就可以建立新的表了(如圖1)。這里我們主要介紹第二種方法:使用可視化數(shù)據(jù)管理器,不需要編程就可創(chuàng)建數(shù)據(jù)庫(kù)??梢暬瘮?shù)據(jù)管理器是一個(gè)非常有用的應(yīng)用程序,它是VB企業(yè)版和專業(yè)版附帶的,在目錄..DevStudiovbsamplesVisdata下,其界面如下圖。點(diǎn)擊菜單“文件”項(xiàng)下噺建”子項(xiàng)“MicrosoftACCESS”子項(xiàng)的“版本7.0MDB”項(xiàng)。在彈出窗口中輸入新建數(shù)據(jù)庫(kù)的名稱“登記”,出現(xiàn)下面圖3所示窗口:要生成新的表,右鍵單擊數(shù)據(jù)庫(kù)窗口彈出菜單,然后選擇“新表”命令,在隨后出現(xiàn)的“表結(jié)構(gòu)”對(duì)話框中建立所要的字段。每次向表中加入新的字段,單擊“增加字段”按鈕,會(huì)出現(xiàn)圖4的“增加字段”對(duì)話框?!霸黾幼侄巍睂?duì)話框中的選項(xiàng)如表10所示,根據(jù)字段的類型,有些選項(xiàng)是無(wú)效的,無(wú)法讀取。在我們建立的登記數(shù)據(jù)庫(kù)中,各個(gè)字段的類型如表11。要注意的是,由于字段登記號(hào)用來(lái)唯一標(biāo)志記錄的,因此,它不能由用戶輸入。所以在定義該字段時(shí)需要定義為L(zhǎng)ong數(shù)據(jù)類型,“自動(dòng)生成字段”項(xiàng)有效,并選中這一項(xiàng)。這樣當(dāng)用戶每輸入一條新記錄時(shí),系統(tǒng)就會(huì)在該字段上自動(dòng)輸入一個(gè)與其它記錄不同的值。在ACCESS數(shù)據(jù)庫(kù)中,關(guān)鍵字是用索引實(shí)現(xiàn)的,作為編程人員在對(duì)表類型的記錄集編程時(shí),只需調(diào)用索引名。在查詢時(shí),Rushmore技術(shù)自動(dòng)用索引信息優(yōu)化查詢。完成表定義后,點(diǎn)擊“增加索引”按鈕,彈出如圖5所示窗口。在窗口中右邊有三個(gè)選項(xiàng),其意義如表12。添加索引對(duì)話框選項(xiàng)完成之后如圖6。當(dāng)然,學(xué)會(huì)數(shù)據(jù)庫(kù)的建立也并非一朝一夕的事,讀者不妨多練習(xí)一下。下面你就可以運(yùn)行VB開始我們的編程了。四、千里相會(huì)VisualBasic數(shù)據(jù)庫(kù)應(yīng)用程序有三個(gè)部分,如圖7所示。用戶程序是程序員開發(fā)的,也是我們即將用VB來(lái)編寫的部分。數(shù)據(jù)庫(kù)引擎是數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,使用它程序員可以用統(tǒng)一的格式訪問(wèn)各種數(shù)據(jù)庫(kù),不管這個(gè)數(shù)據(jù)庫(kù)是本地的VisualBasic數(shù)據(jù)庫(kù),還是所支持的其它任何格式的數(shù)據(jù)庫(kù)格式,所使用的數(shù)據(jù)訪問(wèn)對(duì)象和編程技術(shù)都是相同的。數(shù)據(jù)庫(kù)則是我們上面完成的部分。從這個(gè)結(jié)構(gòu)可以看出用戶與正在訪問(wèn)的特定數(shù)據(jù)庫(kù)無(wú)關(guān)。那我們?cè)谟肰B編寫數(shù)據(jù)庫(kù)程序時(shí),就需要使程序能夠訪問(wèn)指定的數(shù)據(jù)庫(kù)。如果是簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用,可以使用Data控件來(lái)執(zhí)行大部分?jǐn)?shù)據(jù)訪問(wèn)操作,而根本不用編寫代碼。與Data控件相捆綁的控件自動(dòng)顯示來(lái)自當(dāng)前記錄的一個(gè)或多個(gè)字段的數(shù)據(jù)。DATA數(shù)據(jù)控件屬性CONNECT屬性指定打開的數(shù)據(jù)庫(kù)類型,并且包括參數(shù),如用戶和口令等。例如:打開Access數(shù)據(jù)庫(kù)(缺省)CONNECT=“ACCESS”打開ODBC數(shù)據(jù)庫(kù)CONNECT=“ODBC;DATABASE=??;UID=??;PWD=??;DSN=??”DATABASENAME屬性確定數(shù)據(jù)控件訪問(wèn)哪一個(gè)數(shù)據(jù)庫(kù)。對(duì)于多表數(shù)據(jù)庫(kù)它為具體的數(shù)據(jù)庫(kù)文件名,例如:ACCESS數(shù)據(jù)庫(kù)DATABASENAME=“D:...DEMO.MDB"對(duì)于單表數(shù)據(jù)庫(kù)它為具體的數(shù)據(jù)庫(kù)文件所在的目錄,而具體文件名放在RECORDSOURCE屬性中,例如:訪問(wèn)FOXPRO數(shù)據(jù)庫(kù)文件D:FOXDEMO.DBFDATABASENAME=“D:FOX”RECORDSOURCE=“DEM0”不帶文件擴(kuò)展名RECORDSOURCE屬性確定數(shù)據(jù)控件的記錄集,即:所要訪問(wèn)的數(shù)據(jù)內(nèi)容。它可以是一個(gè)表名、存儲(chǔ)查詢名或SQL語(yǔ)句。例如:訪問(wèn)Register表所有數(shù)據(jù):RECORDSOURCE=“Register”訪問(wèn)RC表中1973年以前出生的數(shù)據(jù):RECORDSOURCE=“SELECT*FROMRegisterWHERE[BIRTHDAY]<#1/1/1973#"注意:當(dāng)我們?cè)谶\(yùn)行時(shí)修改了該屬性后,需要調(diào)用REFRESH方法刷新記錄集。方法REFRESH方法當(dāng)我們?cè)谶\(yùn)行時(shí)修改了RecordSource屬性后,需要調(diào)用該方法刷新記錄集。UPDATERECORD方法將綁定在數(shù)據(jù)控件上的控件的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)中。即:當(dāng)我們修改了數(shù)據(jù)后調(diào)用該方法確定修改。CANCELUPDATE方法將數(shù)據(jù)庫(kù)中的數(shù)據(jù)重新讀到綁定在數(shù)據(jù)控件上的控件中。即:當(dāng)我們修改了數(shù)據(jù)后調(diào)用該方法放棄修改。事件VALIDATE事件當(dāng)我們移動(dòng)記錄集記錄指針時(shí)發(fā)生。例如:我們將記錄集記錄指針從A移動(dòng)到記錄B時(shí)當(dāng)產(chǎn)生VALIDATE事件時(shí),記錄指針仍在記錄A上。SubXXXX_Validate(ActionAsinteger,SaveAsinteger)其中:Action指出如何產(chǎn)生了該事件,如:移動(dòng),增加,查詢等。Save表示是否保存已修改的數(shù)據(jù)。當(dāng)我們修改了綁定在數(shù)據(jù)控件的數(shù)據(jù),又沒(méi)有UPDATERECORD,貝U移動(dòng)指針時(shí),Save=True。如果在事件中令Save=False,則放棄修改。例如:SubXXXX_Validate(ActionAsinteger,SaveAsinteger)IfSavethenI=MsgBox("Dadachanged,Save?",vbYesNo)IfI=vbNothenSave=FalseEndifEndifEndSubReposition事件當(dāng)我們移動(dòng)記錄集指針時(shí)發(fā)生。例如:我們將記錄集記錄指針從A移動(dòng)到記錄B時(shí),當(dāng)產(chǎn)生Reposition事件時(shí),記錄指針已移動(dòng)到B上。通常我們?cè)谠撌录酗@示當(dāng)前的指針位置。例如:SubXXXX_Reposition()XXXX.Caption=??XXXX.RecordSet.AbsolutePosition+1EndSub了解了DATA控件之后我們就可以連接數(shù)據(jù)庫(kù)了。現(xiàn)在我們可以編寫一個(gè)應(yīng)用程序。因?yàn)殡m然我們建立了Register數(shù)據(jù)庫(kù),但是數(shù)據(jù)庫(kù)中卻沒(méi)有數(shù)據(jù),我們程序的目的就是向數(shù)據(jù)庫(kù)中輸入數(shù)據(jù)。它的運(yùn)行情況如圖8。各個(gè)文本框正好對(duì)應(yīng)著表Register的各個(gè)字段,在文本框中輸入數(shù)據(jù),點(diǎn)擊"增加”按鈕,就完成了一條記錄的輸入。我們看一下,DATA控件是怎樣和數(shù)據(jù)庫(kù)連接起來(lái)的,各個(gè)文本框又是怎樣和DATA控件捆綁起來(lái)的。在DATA控件的CONNECT屬性中,選中“ACCESS”項(xiàng),在DatabaseName屬性中,輸入"C:TEMP登記.mdb”,在RecordSource屬性中,選中"Register”,這樣就完成了數(shù)據(jù)庫(kù)與DATA控件的連接,也就是完成了與應(yīng)用程序的連接。數(shù)據(jù)庫(kù)中各個(gè)字段又是怎樣和文本框連接起來(lái)的呢?在VB中,我們可以將普通控件綁定在數(shù)據(jù)控件上,來(lái)完成自動(dòng)地顯示、更新記錄集的數(shù)據(jù)。常用的可綁定的控件有:Label,Text,checkBox,lmage等。通過(guò)設(shè)置這些控件的DataSource和DataField屬性來(lái)完成綁定。DataSource屬性表示綁定到哪一個(gè)數(shù)據(jù)控件上,程序中我們可能使用多個(gè)數(shù)據(jù)控件。DataField屬性表示綁定到記錄集的哪一個(gè)記錄上。現(xiàn)在我們需要把Textl與表“登記”中的姓名字段連接起來(lái)。完成DATA控件的連接之后,在Textl控件的DataSource屬性中,選中"DataT”,在DataField屬性中,選中“姓名”值。用同樣的方法,將各個(gè)文本框分別綁定到對(duì)應(yīng)的字段上,就完成了文本框的捆綁。下面我們編寫兩個(gè)按鈕命令,完成其相應(yīng)的操作了。喂!別著急,還有一個(gè)重要的對(duì)象沒(méi)講呢!當(dāng)應(yīng)用程序啟動(dòng)時(shí),Data控件被自動(dòng)地初始化。如果Connect、DatabaseName、Options、RecordSource、Exclusive、ReadOnly和RecordsetType屬性是合法的,MicrosoftJet數(shù)據(jù)庫(kù)引擎就會(huì)試圖創(chuàng)建一個(gè)新的基于這些屬性的Recordset記錄集對(duì)象。Recordset對(duì)象可以表示表中的記錄或者作為查詢結(jié)果的記錄,使用Recordset對(duì)象可以在記錄一級(jí)上對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行處理。這在數(shù)據(jù)庫(kù)編程中是一個(gè)十分重要的,也是比較復(fù)雜的對(duì)象。Recordset對(duì)象有三種類型:表、動(dòng)態(tài)集、快照,它們之間存在明顯的區(qū)別。表類型的Recordset對(duì)象是指當(dāng)前數(shù)據(jù)庫(kù)中的表在創(chuàng)建表類型的記錄集時(shí),數(shù)據(jù)庫(kù)引擎打開的表。后續(xù)的數(shù)據(jù)操作都是直接對(duì)表進(jìn)行的。只能對(duì)單個(gè)的表打開表類型的記錄集,而不能對(duì)聯(lián)接或者聯(lián)合查詢打開表類型的記錄集。與其它類型的Recordset對(duì)象相比,表類型的搜索與排序速度最快。動(dòng)態(tài)集類型的Recordset對(duì)象可以是本地的表,也可以是返回的行查詢結(jié)果。它實(shí)際上是對(duì)一個(gè)或者幾個(gè)表中的記錄的一系列引用??捎脛?dòng)態(tài)集從多個(gè)表中提取和更新數(shù)據(jù),其中包括鏈接的其它數(shù)據(jù)庫(kù)中的表。動(dòng)態(tài)集類型具有一種與眾不同的特點(diǎn):不同數(shù)據(jù)庫(kù)的可更新聯(lián)接。利用這種特性,可以對(duì)不同類型的數(shù)據(jù)庫(kù)中的表進(jìn)行可更新的聯(lián)接查詢。動(dòng)態(tài)集和它的基本表可以互相更新。如果動(dòng)態(tài)集中的記錄發(fā)生改變,同樣的變化也將在基本表中反映出來(lái)。在打開動(dòng)態(tài)集的時(shí)候,如果其他的用戶修改了基本表,那么動(dòng)態(tài)集中也將反映出被修改過(guò)的記錄。動(dòng)態(tài)集類型是最靈活的Recordset類型,也是功能最強(qiáng)的。不過(guò),它的搜索速度與其它操作的速度不及表類型的Recordset??煺疹愋偷腞ecordset對(duì)象包含的數(shù)據(jù)是固定的,它反映了在產(chǎn)生快照的一瞬間數(shù)據(jù)庫(kù)的狀態(tài)。從MicrosoftJet數(shù)據(jù)源得到的快照是不可更新的,從開放數(shù)據(jù)庫(kù)互連(ODBC)數(shù)據(jù)源得到的某些快照是可以更新的,這取決于數(shù)據(jù)庫(kù)系統(tǒng)本身的能力。與動(dòng)態(tài)集類型和表類型的Recordset對(duì)象相比,快照的處理開銷較少。因此,它執(zhí)行查詢和返回?cái)?shù)據(jù)的速度更快,特別是在使用ODBC數(shù)據(jù)源時(shí)??煺疹愋捅4媪吮碇兴杏涗浀耐暾麖?fù)本,因此,如果記錄的個(gè)數(shù)很多,快照的性能將比動(dòng)態(tài)集慢得多。為了確定快照與動(dòng)態(tài)集哪一個(gè)更快,可以先以動(dòng)態(tài)集方式打開記錄集,然后再以快照方式打開它。具體使用什么記錄集,取決于需要完成的任務(wù):是要更改數(shù)據(jù)呢,還是簡(jiǎn)單地查看數(shù)據(jù)。例如,如果必須對(duì)數(shù)據(jù)進(jìn)行排序或者使用索引,可以使用表。因?yàn)楸眍愋偷腞ecordset對(duì)象是做了索引的,它定位數(shù)據(jù)的速度是最快的。如果希望能夠?qū)Σ樵冞x定的一系列記錄進(jìn)行更新,可以使用動(dòng)態(tài)集。如果在特殊的情況下不能使用表類型的記錄集,或者只須對(duì)記錄進(jìn)行掃描,那么使用快照類型可能會(huì)快一些。—10一般來(lái)說(shuō),盡可能地使用表類型的Recordset對(duì)象,它的性能通??偸亲詈玫?。為選擇特定的Recordset類型,把Data控件的RecordsetType屬性設(shè)成:RecordSet記錄集屬性BOF屬性當(dāng)記錄集記錄指針指向第一條記錄時(shí)返回TrueEOF屬性當(dāng)記錄集記錄指針指向最后一條記錄時(shí)返回TrueAbsloutePosition屬性返回當(dāng)前記錄集記錄指針,第一條記錄為0,是只讀屬性Bookmark屬性String類型,返回或設(shè)置當(dāng)前記錄集記錄指針的書簽,是可讀寫屬性。每一條記錄都有自己唯一的書簽,它與記錄在記錄集中的順序無(wú)關(guān)。將Bookmark屬性存放到變量中,后面可以通過(guò)將該變量賦值給Bookmark屬性,并返回到這個(gè)記錄。注意:程序中使用BookMark屬性重定位記錄指針,而不能使用AbsloutepositionNoMatch屬性當(dāng)我們使用Find方法查詢時(shí)如果未找到則返回True。常與BookMark屬性同時(shí)使用。例如:查找[NAME]字段中第一個(gè)姓李的人DimSAsStringWithXXXX.RecordSetS=.BookMark.FindFirst"[NAME]Like'李*'"if.NoMatchthenMsgBox"數(shù)據(jù)未找到“.BookMark=SEndifEndWith記錄集方法AddNew方法向記錄集增加一條新記錄Delete方法從記錄集中將當(dāng)前記錄刪除。在刪除后常使用MoveNext方法移動(dòng)指針。例如:WithXXXX.RecordSet.Delete.MoveNextif.EOFthen.MoveLastEndWithMoveXXXX方法MoveFirst將記錄集指針移動(dòng)到第一條記錄上MoveLast將記錄集指針移動(dòng)到最后一條記錄上MovePrevious將記錄集指針移動(dòng)到前一條記錄上MoveNext將記錄集指針移動(dòng)到下一條記錄上FindXXXX方法FindFirst在記錄集中查詢符合條件的第一條記錄FindLast在記錄集中查詢符合條件的最后一條記錄FindPrevious在記錄集中查詢符合條件的前一條記錄FindNext在記錄集中查詢符合條件的下一條記錄好了,有了這么充分的知識(shí)了,編寫兩個(gè)按鈕命令簡(jiǎn)直是小菜一碟,先來(lái)試一下,添一個(gè)“增加”命令按鈕吧。PrivateSubCommand1_Click()Data1.Recordset.AddNewEndSub哇!怎么這么簡(jiǎn)單,再看一下“刪除”命令按鈕PrivateSubCommand2_Click()Data1.Recordset.DeleteData1.Recordset.AddNewEndSub就這樣行了嗎?運(yùn)行程序吧,0K!—切正常,迫不及待地輸入一條記錄,點(diǎn)擊“增加”按鈕,怎么?出問(wèn)題了!因?yàn)槟阒挥性谶M(jìn)行了AddNew方法后才可以輸入數(shù)據(jù),好吧,在窗口的初始化時(shí)就增加一條新記錄吧。PrivateSubForm_Initialize()Data1.Recordset.AddNewEndSub輸入完了數(shù)據(jù),我們打算退出程序,很自然的我們執(zhí)行關(guān)閉窗口操作,就順利地結(jié)束了輸入工作。真的很順利嗎?打開數(shù)據(jù)庫(kù),看看數(shù)據(jù)庫(kù)中的數(shù)據(jù),我們發(fā)現(xiàn)剛才輸入的最后一條記錄沒(méi)有存入數(shù)據(jù)庫(kù)中。這個(gè)很好解釋,每當(dāng)我們調(diào)用AddNew方法時(shí),它就將輸入的記錄存入數(shù)據(jù)庫(kù)中,而當(dāng)我們關(guān)閉窗口時(shí),剛輸入的記錄并沒(méi)有保存到數(shù)據(jù)庫(kù)中,那么在關(guān)閉窗口之前對(duì)DATA控件進(jìn)行一次刷新就可以將數(shù)據(jù)存入數(shù)據(jù)庫(kù)中了。PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)Data1.RefreshEndSub到了這里,我們似乎可以稍稍輕松了一點(diǎn),這個(gè)窗口的功能差不多完成了。但是我不得不給你提出一個(gè)忠告:在數(shù)據(jù)庫(kù)系統(tǒng)中,應(yīng)盡量將錯(cuò)誤在應(yīng)用級(jí)上處理。這句話看起來(lái)似乎有點(diǎn)抽象,實(shí)際上用在這個(gè)程序中就簡(jiǎn)單多了。在表Register中,我們將出生日期定義為Date/Time類型,如果在程序運(yùn)行時(shí),在該字段對(duì)應(yīng)的文本框中輸入的不是Date/Time格式,在向數(shù)據(jù)庫(kù)提交數(shù)據(jù)時(shí)會(huì)出現(xiàn)什么情況呢?數(shù)據(jù)庫(kù)會(huì)向用戶報(bào)告錯(cuò)誤信息。然而這樣對(duì)應(yīng)用程序并不好,這樣的錯(cuò)誤應(yīng)該由用戶程序處理,而不是交給數(shù)據(jù)庫(kù)去處理,所以在數(shù)據(jù)提交之前就應(yīng)該檢查該字段的輸入是否合法。PrivateSubText3_LostFocus()IfIsDate(Text3.Text)OrText3.Text=""Then'檢查是否輸入合法數(shù)據(jù)ExitSubEndIfMsgBox("輸入錯(cuò)誤,請(qǐng)輸入你出生的年月日!"),將選取不合法的數(shù)據(jù),以便重新輸入,并使控制焦點(diǎn)不動(dòng)Text3.SetFocusText3.SelStart=0Text3.SelLength=Len(Text3.Text)EndSub上面雖是應(yīng)用程序處理錯(cuò)誤的一個(gè)小例子,可是這種在應(yīng)用級(jí)處理錯(cuò)誤的思想是十分重要的。五、尋尋覓覓在數(shù)據(jù)庫(kù)管理系統(tǒng)中,輸入和查詢就象兩個(gè)孿生姐妹不可或缺,下面將介紹如何創(chuàng)建查詢窗口。查詢窗口的設(shè)計(jì)分為兩部分:查詢結(jié)果和查詢條件。查詢結(jié)果是指用戶所需要的數(shù)據(jù),它包括根據(jù)查詢條件查詢出來(lái)的記錄,但并非表中每個(gè)字段里的數(shù)據(jù)都需要提供給用戶。比如在我們這個(gè)例子中,登記表中的登記號(hào)的值是用戶不感興趣的,所以在查詢結(jié)果中,我們不希望顯示RegID字段的值。查詢條件是用戶提出的查詢要求。比如在我們這個(gè)系統(tǒng)中,可以有姓名條件,當(dāng)用戶想知道某個(gè)人的具體情況,他可以輸入此人的姓名,就查詢出此人各方面的情況;也可以有年齡條件,當(dāng)用戶輸入某個(gè)年齡段,就會(huì)查詢出處于這個(gè)年齡段的所有人的信息。到底采用哪些查詢條件,這需要開發(fā)者根據(jù)用戶和系統(tǒng)的要求進(jìn)行設(shè)計(jì),其具體實(shí)現(xiàn)過(guò)程大都大同小異。為了節(jié)省篇幅,我們就僅以年齡為條件進(jìn)行查詢。查詢窗口運(yùn)行情況如圖9。在這個(gè)程序中我們使用了一個(gè)控件DBGrid,這個(gè)控件用來(lái)顯示查詢結(jié)果,選中VB的“工程”菜單下的“部件……”項(xiàng),在控件標(biāo)簽中,選中“MicrosoftDataBoundGridControl5.0”即可,在工具箱中就會(huì)出現(xiàn)DBGrid控件的小圖標(biāo)。其使用和其它控件一樣。為了和數(shù)據(jù)庫(kù)連接,DATA控件是不可少的,回憶一下,該怎樣設(shè)置它的屬性,0K!同輸入窗口一樣,在CONNECT屬性中,選中“ACCESS”項(xiàng)。在DatabaseName屬性中,輸入"C:TEMP登記.mdb”。在RecordSource屬性中,選中 嘿,嘿,這里稍微有點(diǎn)不同,如果按輸入窗口那樣的設(shè)置,查詢結(jié)果中就會(huì)包含登記號(hào)字段了。在此屬性中我們應(yīng)該輸入SQL語(yǔ)句:selectnameas姓名,sexas性另1」,hometownas籍貫,ageas年齡,birthdayas生日,companyas單位,addressas地址,zipas由E編,telephoneas電話faxas傳真fromRegister。別著急,盡管這條語(yǔ)句有點(diǎn)長(zhǎng),實(shí)際上卻比較簡(jiǎn)單。這條語(yǔ)句的語(yǔ)法是:SELECT字段名,字段名,……FROM表名WHERE條件;對(duì)照語(yǔ)法,我們可以看出輸入的SQL語(yǔ)句的含義:從表Register中查詢姓名,性別,籍費(fèi),……字段的值。只要在字段列表中不選中登記號(hào)字段,在查詢結(jié)果中,就不會(huì)顯示登記號(hào)的值了。如果你夠細(xì)心

溫馨提示

  • 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)論