版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 目目 錄錄第第1 1章章 Delphi 7 Delphi 7 集成開發(fā)環(huán)境(集成開發(fā)環(huán)境(IDEIDE)介紹)介紹第第2 2章章 Delphi 7Delphi 7數(shù)據(jù)庫系統(tǒng)概述數(shù)據(jù)庫系統(tǒng)概述第第3 3章章 Delphi 7Delphi 7和數(shù)據(jù)庫和數(shù)據(jù)庫第第4 4章章 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 第第5 5章章 讀寫字段值讀寫字段值 第第6 6章章 計算字段計算字段第第7 7章章 鏈接表鏈接表第第8 8章章 查找和確認(rèn)數(shù)據(jù)查找和確認(rèn)數(shù)據(jù)第第9 9章章 制作數(shù)據(jù)輸入窗體制作數(shù)據(jù)輸入窗體第第1010章章 列表和查找表列表和查找表第第1111章章 查詢和設(shè)定范圍查詢和設(shè)定范圍第第1212章章 多窗體和打
2、印窗體多窗體和打印窗體第第1313章章 制作報表制作報表第第1414章章 開發(fā)圖表開發(fā)圖表第第1515章章 將圖或文件存入數(shù)據(jù)庫將圖或文件存入數(shù)據(jù)庫第第1616章章 編寫多媒體數(shù)據(jù)庫應(yīng)用程序編寫多媒體數(shù)據(jù)庫應(yīng)用程序 第第1717章章 數(shù)據(jù)庫開發(fā)實例數(shù)據(jù)庫開發(fā)實例學(xué)生管理系統(tǒng)學(xué)生管理系統(tǒng)第1章 Delphi 7 Delphi 7 集成開發(fā)環(huán)境(集成開發(fā)環(huán)境(IDEIDE)介紹)介紹1. 1. Delphi 7 IDE Delphi 7 IDE 運(yùn)行界面運(yùn)行界面 通常,啟動通常,啟動Delphi 7Delphi 7的方法是:單擊的方法是:單擊“開始開始”按鈕,然后依次從級聯(lián)按鈕,然后依次從級聯(lián)菜菜
3、單中選擇單中選擇“程序程序”Borland Delphi 7Delphi 7Borland Delphi 7Delphi 7選項,就進(jìn)入了選項,就進(jìn)入了Delphi 7Delphi 7IDE IDE 運(yùn)行界面,如圖運(yùn)行界面,如圖1.11.1所示。其各組成部分的功能見教材所示。其各組成部分的功能見教材1.31.31.71.7節(jié)。節(jié)。 圖圖1.1 Delphi7 IDE 1.1 Delphi7 IDE 運(yùn)行界面的組成運(yùn)行界面的組成12453 主窗口主窗口 窗體窗口窗體窗口 代碼編輯窗口代碼編輯窗口 對象查看器對象查看器 對象樹形結(jié)構(gòu)瀏覽窗口對象樹形結(jié)構(gòu)瀏覽窗口1232. 2. Delphi 7 D
4、elphi 7 主窗口主窗口 主窗口是Delphi 7 IDE的核心,開發(fā)人員通過主窗口進(jìn)行創(chuàng)建工程、編寫程序、調(diào)試程序、運(yùn)行和維護(hù)應(yīng)用程序等一系列管理工作。 Delphi 7 主窗口由3個部分組成(其功能見教材1.3節(jié)),如下圖所示。 組件模板(Component Palette) 主菜單(Menu) 快捷工具條(Speed Bar) 3. 3. 組件模板及組件設(shè)置組件模板及組件設(shè)置 放置組件、設(shè)置屬性和為“終止”事件編寫代碼的步驟:單擊窗體空閑部分,放置一個按鈕。設(shè)置按鈕標(biāo)題為“終止”。在事件標(biāo)簽頁上雙擊OnClick右邊單元格。在代碼編輯窗口中編寫終止程序的代碼。在組件模板上選擇組件,例
5、如Ok按鈕。 第第2章章 Delphi 7數(shù)據(jù)庫系統(tǒng)概述數(shù)據(jù)庫系統(tǒng)概述1. Delphi 7 1. Delphi 7 數(shù)據(jù)庫特性數(shù)據(jù)庫特性 數(shù)據(jù)訪問組件(Data Access Components):主要用于說明數(shù)據(jù)庫的有關(guān)信息,如應(yīng)用程序要訪問(連接)的數(shù)據(jù)庫和要訪問數(shù)據(jù)庫中的具體的數(shù)據(jù)庫表,以及要訪問表中的哪些字段等。常用的數(shù)據(jù)訪問組件有TTable、TQuery、TDataSource等。 數(shù)據(jù)控制組件(Data Control Components):主要用于顯示瀏覽數(shù)據(jù)庫中的數(shù)據(jù)信息,為用戶提供可視化的界面,可以讓用戶對數(shù)據(jù)庫中的數(shù)據(jù)信息,進(jìn)行瀏覽、編輯、插入、刪除等操作。因而,數(shù)
6、據(jù)控制組件也被稱之為數(shù)據(jù)瀏覽組件。數(shù)據(jù)控制組件既能夠把數(shù)據(jù)庫中的數(shù)據(jù)顯示到窗體中,又能將其自身的經(jīng)過修改的數(shù)據(jù)寫回到數(shù)據(jù)庫中。常用的數(shù)據(jù)控制組件有TDBGrid、TDBEdit、TDBCheckBox等。BDEData Access Components 數(shù)據(jù)訪問組件TTableTDataSourceTQueryTDataSourceData Control Components 數(shù)據(jù)控制組件TDBGridTDBEditTDBCheckBoxTDBGridTDBEditTDBCheckBox(用戶接口)數(shù) 據(jù) 庫數(shù)據(jù)庫引擎: BDE數(shù)據(jù)訪問組件數(shù)據(jù)控制組件DBD窗口工具條DBD窗口菜單2. 2
7、. 數(shù)據(jù)庫桌面(數(shù)據(jù)庫桌面(DBDDBD:Database DesktopDatabase Desktop) 數(shù)據(jù)庫桌面DBD是數(shù)據(jù)庫維護(hù)和數(shù)據(jù)定義的工具,利用它可以完成查詢、連接、建立、重建結(jié)構(gòu)(簡稱重構(gòu))、索引、修改和復(fù)制數(shù)據(jù)庫表,而且在操作時,用戶不必?fù)碛蠵aradox或dBASE數(shù)據(jù)庫管理系統(tǒng)。使用數(shù)據(jù)庫桌面DBD還可以把一種格式的數(shù)據(jù)和數(shù)據(jù)字典拷貝為另一種格式,例如,將一個dBASE的表拷貝到遠(yuǎn)程的SQL服務(wù)器上的一個數(shù)據(jù)庫中去。另外,數(shù)據(jù)庫桌面DBD程序可以建立數(shù)據(jù)庫并執(zhí)行與數(shù)據(jù)庫有關(guān)的其他操作。例如,設(shè)置工作目錄、設(shè)置工作目錄別名、創(chuàng)建數(shù)據(jù)庫表、在數(shù)據(jù)庫表中輸入數(shù)據(jù)、對表中記錄排
8、序、移動記錄、用不同字體或其他形式顯示表中的數(shù)據(jù),以及用表來檢查和測試Delphi 7 程序等。3.3.部分?jǐn)?shù)據(jù)訪部分?jǐn)?shù)據(jù)訪 問組件的主問組件的主 要用途要用途 部分?jǐn)?shù)據(jù)訪問組件的主要用途組件名稱主 要 用 途TDataSource是數(shù)據(jù)集組件與數(shù)據(jù)控制組件之間傳送數(shù)據(jù)的通道TTable是存取數(shù)據(jù)庫表的媒介,通過BDE存取數(shù)據(jù)庫表中的數(shù)據(jù),再與TDataSource進(jìn)行對話,使得數(shù)據(jù)控制組件能在TTable中訪問數(shù)據(jù),以及顯示、編輯數(shù)據(jù)TQuery利用SQL語言訪問數(shù)據(jù)庫表中的數(shù)據(jù),并與TDataSource進(jìn)行對話以實現(xiàn)數(shù)據(jù)控制組件訪問數(shù)據(jù)庫TStoredProc在應(yīng)用程序中用于訪問遠(yuǎn)程服務(wù)
9、器中的存儲過程(它封裝了數(shù)據(jù)庫服務(wù)器上的存儲過程)TQuickRep在應(yīng)用程序中用于創(chuàng)建數(shù)據(jù)庫的輸出報表TSession這是一個全局的組件,用戶可以在程序中使用它的屬性和方法TDatabase它可以連接到單一數(shù)據(jù)庫上,例如,當(dāng)需要與數(shù)據(jù)庫持續(xù)連接、使用了定制的數(shù)據(jù)庫服務(wù)、使用事物處理組件或程序中確定了BDE別名時,就可以使用TDatabase組件。但最主要的用途是在SQL數(shù)據(jù)庫的應(yīng)用中4. 部分部分?jǐn)?shù)據(jù)數(shù)據(jù)控控 制制組件組件的主的主 要用途要用途 部分?jǐn)?shù)據(jù)控制組件的主要用途部分?jǐn)?shù)據(jù)控制組件的主要用途組件名稱組件名稱主主 要要 用用 途途TDBText是一個只讀的數(shù)據(jù)顯示組件,它顯示的是表中的當(dāng)
10、前記錄值,因此它的顯示是動態(tài)變化的 TDBEdit專門用來顯示和編輯數(shù)據(jù)庫表中的單個字段。通過它的DataSource屬性和DataField屬性來指定對應(yīng)的表和字段 TDBGrid以網(wǎng)格方式顯示數(shù)據(jù)庫中的數(shù)據(jù)并可以進(jìn)行編輯。利用字段編輯器(Field Editor)可以對數(shù)據(jù)庫中字段的顯示格式、順序或者是否顯示進(jìn)行控制 TDBCheckBox瀏覽數(shù)據(jù)庫中數(shù)據(jù)的復(fù)選框,用于顯示和編輯數(shù)據(jù)庫中布爾型字段的字段值 TDBNavigator稱為導(dǎo)航控件,可用來前后移動記錄指針,對單個記錄進(jìn)行編輯(包括插入、刪除、刷新顯示和取消等操作) TDBImage用于顯示、復(fù)制、粘貼數(shù)據(jù)庫表中的圖像類型的字段
11、第第3 3章章 Delphi 7Delphi 7和數(shù)據(jù)庫和數(shù)據(jù)庫 3.1 3.1 創(chuàng)建一個創(chuàng)建一個Delphi 7 Delphi 7 工程(工程(ProjectProject)的步驟)的步驟 3.2 3.2 定制窗體定制窗體(1 1)啟動)啟動Delphi 7Delphi 7,從,從FileFile菜單中選擇菜單中選擇FileNewApplicatin FileNewApplicatin 命令,創(chuàng)建一個新工程。命令,創(chuàng)建一個新工程。(2 2)保存新的工程。從)保存新的工程。從FileFile菜單中選擇菜單中選擇FileSave AsFileSave As命令命令, , 保存單元文件保存單元文件
12、CHello.pasCHello.pas和工程文件和工程文件Hello.dprHello.dpr。(3 3)執(zhí)行程序便生成一個可執(zhí)行的)執(zhí)行程序便生成一個可執(zhí)行的EXEEXE文件文件Hello.EXEHello.EXE。第3章第1節(jié)完成的定制窗體CdmHello清除歡迎終止執(zhí)行程序后單擊“歡迎”按鈕的程序窗口 歡迎清除終止3.3 3.3 編寫代碼編寫代碼為為“終止終止”按鈕編寫代碼的目的是,當(dāng)用戶單擊按鈕編寫代碼的目的是,當(dāng)用戶單擊“終止終止”按鈕按鈕時,可以終止時,可以終止CHello.EXECHello.EXE程序的運(yùn)行。那么,應(yīng)該為程序的運(yùn)行。那么,應(yīng)該為cmdExitClickcmdE
13、xitClick過程輸入下列代碼:過程輸入下列代碼:Application.Terminate;Application.Terminate;。這樣,當(dāng)用戶單擊這樣,當(dāng)用戶單擊“終止終止”按鈕時,程序執(zhí)行按鈕時,程序執(zhí)行“Application.Terminate;”Application.Terminate;”語句,即終止語句,即終止CHello.EXECHello.EXE程序。程序。3.4 Methods3.4 Methods(方法)(方法) 現(xiàn)在,我們來介紹有關(guān)現(xiàn)在,我們來介紹有關(guān)MethodsMethods(方法)的主題。(方法)的主題。 在在PascalPascal語言中,在對象中說明
14、的過程或函數(shù)稱為方法。它的語法是:語言中,在對象中說明的過程或函數(shù)稱為方法。它的語法是: 例如,例如,Application.Terminate; ,Application.Terminate; ,這個程序語句說明這個程序語句說明TerminateTerminate(終止)方(終止)方法被調(diào)用,或者說,法被調(diào)用,或者說,ApplicationApplication對象調(diào)用了對象調(diào)用了TerminateTerminate方法。當(dāng)程序執(zhí)行這個方法。當(dāng)程序執(zhí)行這個語句時,就實現(xiàn)這個語句時,就實現(xiàn)這個TerminateTerminate方法,即終止程序運(yùn)行。方法,即終止程序運(yùn)行。 又例如程序語句又例如
15、程序語句Memo1.CutToClipboard;Memo1.CutToClipboard;,表明調(diào)用一個名為,表明調(diào)用一個名為Memo1Memo1的的MemoMemo組件的組件的CutToClipboard(CutToClipboard(剪貼剪貼) )方法。其中,方法。其中,Memo1Memo1是一個對象的名稱,當(dāng)程序執(zhí)是一個對象的名稱,當(dāng)程序執(zhí)行這個語句時,就實現(xiàn)這個行這個語句時,就實現(xiàn)這個CutToClipboardCutToClipboard方法,即把方法,即把Memo1Memo1中的文本剪貼到剪中的文本剪貼到剪貼板上去。貼板上去。 舉例:作為一個例子,打開一個空窗體,加入一個舉例:作
16、為一個例子,打開一個空窗體,加入一個MemoMemo組件和一個按鈕,組件和一個按鈕,設(shè)置按鈕的設(shè)置按鈕的NameName屬性為屬性為CutCut,再將按鈕的,再將按鈕的CaptionCaption屬性設(shè)置為屬性設(shè)置為&Cut&Cut。以及雙擊按。以及雙擊按鈕 的鈕 的 O n C l i c kO n C l i c k 事 件 右 邊 單 元 格 , 彈 出 代 碼 編 輯 窗 口 , 輸 入 語 句事 件 右 邊 單 元 格 , 彈 出 代 碼 編 輯 窗 口 , 輸 入 語 句Memo1.CutToClipboard;Memo1.CutToClipboard;。這樣就為。
17、這樣就為C Cutut按鈕建立了按鈕建立了CutClickCutClick事件處理過程:事件處理過程:方法方法CutToClipboardCutToClipboard實現(xiàn)剪貼實現(xiàn)剪貼: : Procedure Tform1.CutClick(Sender:TObject);BeginMemo1.CutToClipboard;End;方法方法CopyToClipboardCopyToClipboard實現(xiàn)拷貝:實現(xiàn)拷貝: ProcedureTform1.CopyClick(Sender:TObject);BeginMemo1.CopyToClipboard;End;再再看看一一個個例例子子3.5
18、 3.5 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計Delphi開發(fā)數(shù)據(jù)庫應(yīng)用程序的一般步驟開發(fā)數(shù)據(jù)庫應(yīng)用程序的一般步驟 1. 1. 系統(tǒng)設(shè)計系統(tǒng)設(shè)計步驟步驟1 1:工作活動性質(zhì)鑒別:工作活動性質(zhì)鑒別 對設(shè)計者來說,當(dāng)他承擔(dān)了某個部門建立數(shù)據(jù)庫的任務(wù)時,首先應(yīng)當(dāng)鑒別該部門的需要和用戶的需求。對設(shè)計者來說,當(dāng)他承擔(dān)了某個部門建立數(shù)據(jù)庫的任務(wù)時,首先應(yīng)當(dāng)鑒別該部門的需要和用戶的需求。并做出下列決策:并做出下列決策: (1 1) 決定該部門數(shù)據(jù)處理的一般策略。決定該部門數(shù)據(jù)處理的一般策略。 (2 2) 估算現(xiàn)有數(shù)據(jù)處理能力及其性能。估算現(xiàn)有數(shù)據(jù)處理能力及其性能。 (3 3) 進(jìn)行可行性研究,規(guī)劃各種方案。進(jìn)行可行性研究,
19、規(guī)劃各種方案。 (4 4) 選擇某種方案。選擇某種方案。 (5 5) 搜集有關(guān)信息類型、確定有什么樣的信息流入和流出,以及信息流入流出的頻度等。搜集有關(guān)信息類型、確定有什么樣的信息流入和流出,以及信息流入流出的頻度等。步驟步驟2 2:定義:定義 此步驟是建立該部門的模型。主要工作是:此步驟是建立該部門的模型。主要工作是: (1 1) 在書面上記載可能出現(xiàn)的數(shù)據(jù)類型。在書面上記載可能出現(xiàn)的數(shù)據(jù)類型。 (2 2) 建立原始概念:實體集合、實體屬性、屬性值、實體聯(lián)系集合(簡稱關(guān)聯(lián)集合)。建立原始概念:實體集合、實體屬性、屬性值、實體聯(lián)系集合(簡稱關(guān)聯(lián)集合)。步驟步驟3 3:用數(shù)據(jù)表示實體集合和關(guān)聯(lián)集
20、合:用數(shù)據(jù)表示實體集合和關(guān)聯(lián)集合 (1 1) 確定每一個實體類型,并為其分配一個惟一的名字。確定每一個實體類型,并為其分配一個惟一的名字。 (2 2) 確定每一個定義域,并為其分配一個惟一的名字。確定每一個定義域,并為其分配一個惟一的名字。 (3 3) 為每個實體類型確定主鍵。為每個實體類型確定主鍵。 (4 4) 用主鍵定義域代替每一個實體。求出與實體屬性對應(yīng)的各個關(guān)系,并給每個關(guān)系確定一個名字。用主鍵定義域代替每一個實體。求出與實體屬性對應(yīng)的各個關(guān)系,并給每個關(guān)系確定一個名字。 (5 5) 求出全部的關(guān)聯(lián)類型,并為其確定一個名字。求出全部的關(guān)聯(lián)類型,并為其確定一個名字。 (6 6) 用相應(yīng)的
21、主鍵來代替關(guān)聯(lián)類型。用相應(yīng)的主鍵來代替關(guān)聯(lián)類型。步驟步驟4 4:建立:建立E-RE-R模型模型 以下的步驟是對關(guān)系型數(shù)據(jù)庫來說的。以下的步驟是對關(guān)系型數(shù)據(jù)庫來說的。步驟步驟5 5:將實體和關(guān)聯(lián)轉(zhuǎn)化為關(guān)系:將實體和關(guān)聯(lián)轉(zhuǎn)化為關(guān)系步驟步驟6 6:分解關(guān)系。對每個關(guān)系確定其不可分解單元,可以得到一個基本關(guān)系集合。:分解關(guān)系。對每個關(guān)系確定其不可分解單元,可以得到一個基本關(guān)系集合。步驟步驟7 7:根據(jù)傳遞定律確定所得到的基本關(guān)系集合的傳遞閉包。:根據(jù)傳遞定律確定所得到的基本關(guān)系集合的傳遞閉包。步驟步驟8 8:由得到的傳遞閉包推導(dǎo)最小覆蓋,得到若干個最小覆蓋,選擇其一作為數(shù)據(jù)庫總體邏輯模型。:由得到的傳
22、遞閉包推導(dǎo)最小覆蓋,得到若干個最小覆蓋,選擇其一作為數(shù)據(jù)庫總體邏輯模型。2. 2. 系統(tǒng)實現(xiàn)系統(tǒng)實現(xiàn) 在系統(tǒng)實現(xiàn)階段,使用在系統(tǒng)實現(xiàn)階段,使用DelphiDelphi可以建立和測試系統(tǒng)設(shè)計階段所構(gòu)想的應(yīng)用程序。在此階段,最好使用數(shù)據(jù)可以建立和測試系統(tǒng)設(shè)計階段所構(gòu)想的應(yīng)用程序。在此階段,最好使用數(shù)據(jù)庫的一個備份,以防止應(yīng)用程序可能破壞庫的一個備份,以防止應(yīng)用程序可能破壞DelphiDelphi數(shù)據(jù)庫后無法恢復(fù)。如果應(yīng)用程序最終要配置到使用遠(yuǎn)程終數(shù)據(jù)庫后無法恢復(fù)。如果應(yīng)用程序最終要配置到使用遠(yuǎn)程終端的數(shù)據(jù)源的話,可以有兩種選擇:端的數(shù)據(jù)源的話,可以有兩種選擇: l. l. 在本地服務(wù)器上,使用備份
23、的數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行開發(fā)和調(diào)試。在本地服務(wù)器上,使用備份的數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行開發(fā)和調(diào)試。 2. 2. 在遠(yuǎn)程服務(wù)器上,使用備份的數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行開發(fā)和調(diào)試。在遠(yuǎn)程服務(wù)器上,使用備份的數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行開發(fā)和調(diào)試。 其中,對前者來說,它獨立于服務(wù)器,因此不會影響服務(wù)器的其他特性。而后者就有一定的危險性,因為,程其中,對前者來說,它獨立于服務(wù)器,因此不會影響服務(wù)器的其他特性。而后者就有一定的危險性,因為,程序的可能錯誤而導(dǎo)致服務(wù)器的癱瘓。序的可能錯誤而導(dǎo)致服務(wù)器的癱瘓。 值得說明的是,系統(tǒng)設(shè)計獨立于特定計算機(jī)系統(tǒng);而系統(tǒng)實現(xiàn)必須考慮實際的計算機(jī)系統(tǒng),以及該系統(tǒng)所值得說明的是,系統(tǒng)設(shè)計獨立于特定計算機(jī)系統(tǒng)
24、;而系統(tǒng)實現(xiàn)必須考慮實際的計算機(jī)系統(tǒng),以及該系統(tǒng)所支持的數(shù)據(jù)庫管理系統(tǒng)(支持的數(shù)據(jù)庫管理系統(tǒng)(DBMSDBMS)。)。系統(tǒng)實現(xiàn)階段的主要工作:系統(tǒng)實現(xiàn)階段的主要工作: (1 1) 實現(xiàn)物理設(shè)計。通過使用物理設(shè)計技術(shù)以選擇最適合于數(shù)據(jù)模型結(jié)構(gòu)的物理結(jié)構(gòu),實現(xiàn)物理設(shè)計。通過使用物理設(shè)計技術(shù)以選擇最適合于數(shù)據(jù)模型結(jié)構(gòu)的物理結(jié)構(gòu), 這些技術(shù)隨采用的物理設(shè)備及存取方法而異。量化數(shù)據(jù)是物理設(shè)計中的一個重要因素。所選數(shù)據(jù)庫邏輯結(jié)這些技術(shù)隨采用的物理設(shè)備及存取方法而異。量化數(shù)據(jù)是物理設(shè)計中的一個重要因素。所選數(shù)據(jù)庫邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的定義由數(shù)據(jù)庫定義語言完成。構(gòu)和物理結(jié)構(gòu)的定義由數(shù)據(jù)庫定義語言完成。 (2 2
25、)選擇存取數(shù)據(jù)庫的方法。在選擇物理結(jié)構(gòu)時,存取方法是特別重要的,存取方法決定了設(shè)計完成后數(shù)據(jù))選擇存取數(shù)據(jù)庫的方法。在選擇物理結(jié)構(gòu)時,存取方法是特別重要的,存取方法決定了設(shè)計完成后數(shù)據(jù)庫的性能,而用戶界面軟件決定了數(shù)據(jù)庫是否便于用戶使用。一般系統(tǒng)中對數(shù)據(jù)庫的存取是由數(shù)據(jù)庫聯(lián)機(jī)查庫的性能,而用戶界面軟件決定了數(shù)據(jù)庫是否便于用戶使用。一般系統(tǒng)中對數(shù)據(jù)庫的存取是由數(shù)據(jù)庫聯(lián)機(jī)查詢語言或嵌入在程序設(shè)計語言中的輸入詢語言或嵌入在程序設(shè)計語言中的輸入/ /輸出命令完成的。輸出命令完成的。 (3 3) 確定存儲需求說明:存儲需求定義用戶關(guān)于數(shù)據(jù)的使用方法。其中的存取路徑,用以說明存儲需求所涉確定存儲需求說明:
26、存儲需求定義用戶關(guān)于數(shù)據(jù)的使用方法。其中的存取路徑,用以說明存儲需求所涉及的實體集、關(guān)聯(lián)集、邏輯記錄,同時還要說明這些結(jié)構(gòu)的使用順序,以及對每個結(jié)構(gòu)所完成的操作,這些及的實體集、關(guān)聯(lián)集、邏輯記錄,同時還要說明這些結(jié)構(gòu)的使用順序,以及對每個結(jié)構(gòu)所完成的操作,這些操作可以是檢索、存儲和插入。操作可以是檢索、存儲和插入。 (4 4) 確定量化數(shù)據(jù)說明:確定量化數(shù)據(jù)說明:一般方法是用數(shù)據(jù)字典作為數(shù)據(jù)項和記錄型的描述文本。數(shù)據(jù)字典中可以包括:一般方法是用數(shù)據(jù)字典作為數(shù)據(jù)項和記錄型的描述文本。數(shù)據(jù)字典中可以包括:組織模型中各組成部分的數(shù)據(jù)項名、類型、取值范圍、長度和數(shù)據(jù)量、各實體間聯(lián)系的頻度、存取需求執(zhí)組
27、織模型中各組成部分的數(shù)據(jù)項名、類型、取值范圍、長度和數(shù)據(jù)量、各實體間聯(lián)系的頻度、存取需求執(zhí)行頻度等。行頻度等。 (5 5) 選擇開發(fā)軟件的技術(shù)手段(例如,使用選擇開發(fā)軟件的技術(shù)手段(例如,使用Delphi 7)Delphi 7)進(jìn)行軟件開發(fā)。進(jìn)行軟件開發(fā)。3. 3. 系統(tǒng)運(yùn)行和維護(hù)系統(tǒng)運(yùn)行和維護(hù) 系統(tǒng)運(yùn)行是為了考核系統(tǒng)及其設(shè)備、軟件系統(tǒng)和數(shù)據(jù)庫應(yīng)用程序等是否能達(dá)到預(yù)期的目標(biāo)。而對應(yīng)用程序來說系統(tǒng)運(yùn)行是為了考核系統(tǒng)及其設(shè)備、軟件系統(tǒng)和數(shù)據(jù)庫應(yīng)用程序等是否能達(dá)到預(yù)期的目標(biāo)。而對應(yīng)用程序來說,更多的是調(diào)試。所謂維護(hù)是指在運(yùn)行中排除應(yīng)用程序的錯誤及不合理的內(nèi)容,以及在系統(tǒng)運(yùn)行中還要根據(jù)用戶提,更多的是
28、調(diào)試。所謂維護(hù)是指在運(yùn)行中排除應(yīng)用程序的錯誤及不合理的內(nèi)容,以及在系統(tǒng)運(yùn)行中還要根據(jù)用戶提出的一些新的要求和建議,對應(yīng)用程序做一定的修改,使其進(jìn)一步得到完善和提高。出的一些新的要求和建議,對應(yīng)用程序做一定的修改,使其進(jìn)一步得到完善和提高。 在每個實施步驟中都有數(shù)據(jù)庫的開發(fā)和應(yīng)用程序界面的開發(fā)任務(wù)。數(shù)據(jù)庫和應(yīng)用程序開發(fā)任務(wù)的執(zhí)行,則會根在每個實施步驟中都有數(shù)據(jù)庫的開發(fā)和應(yīng)用程序界面的開發(fā)任務(wù)。數(shù)據(jù)庫和應(yīng)用程序開發(fā)任務(wù)的執(zhí)行,則會根據(jù)開發(fā)項目的大小和范圍而定,可能會由不同的人來完成和執(zhí)行。據(jù)開發(fā)項目的大小和范圍而定,可能會由不同的人來完成和執(zhí)行。3.6 3.6 例子:設(shè)計一個商品銷售數(shù)據(jù)庫(簡稱例
29、子:設(shè)計一個商品銷售數(shù)據(jù)庫(簡稱PSDBPSDB) 顧客(顧客(CustomerCustomer)到商店購買商品()到商店購買商品(PartsParts),交款后,商店要給顧客開出),交款后,商店要給顧客開出發(fā)票。發(fā)票上標(biāo)出的內(nèi)容有:顧客姓名、單位、地址、商品名、單價、總價以及發(fā)票。發(fā)票上標(biāo)出的內(nèi)容有:顧客姓名、單位、地址、商品名、單價、總價以及購買日期等。以往這項工作是手工在發(fā)票單上填寫,現(xiàn)在要用計算機(jī)來完成,那購買日期等。以往這項工作是手工在發(fā)票單上填寫,現(xiàn)在要用計算機(jī)來完成,那么該如何做呢?么該如何做呢? 對商店或者計算機(jī)來說,要求有一份顧客名單,我們稱之為對商店或者計算機(jī)來說,要求有一
30、份顧客名單,我們稱之為CustomerCustomer表。還表。還要有一份商品清單,我們稱之為要有一份商品清單,我們稱之為PartsParts表。將這兩張表聯(lián)系在一起,就構(gòu)成了表。將這兩張表聯(lián)系在一起,就構(gòu)成了PSDBPSDB數(shù)據(jù)庫。數(shù)據(jù)庫。 現(xiàn)在給數(shù)據(jù)庫下個定義:按照一定結(jié)構(gòu)組織的相關(guān)的數(shù)據(jù)集合稱做數(shù)據(jù)庫?,F(xiàn)在給數(shù)據(jù)庫下個定義:按照一定結(jié)構(gòu)組織的相關(guān)的數(shù)據(jù)集合稱做數(shù)據(jù)庫。 在數(shù)據(jù)庫術(shù)語中,把顧客、商品稱做實體,實體之間的聯(lián)系稱做關(guān)聯(lián)。由此在數(shù)據(jù)庫術(shù)語中,把顧客、商品稱做實體,實體之間的聯(lián)系稱做關(guān)聯(lián)。由此可見,實體及其關(guān)聯(lián)才構(gòu)成數(shù)據(jù)庫??梢?,實體及其關(guān)聯(lián)才構(gòu)成數(shù)據(jù)庫。 在關(guān)系模型中,在關(guān)系模型
31、中,“關(guān)聯(lián)關(guān)聯(lián)”是不可缺少的,因此,關(guān)聯(lián)也就轉(zhuǎn)化為實體,也可是不可缺少的,因此,關(guān)聯(lián)也就轉(zhuǎn)化為實體,也可以稱之為關(guān)聯(lián)實體。因此,在以后的討論中,凡是說到實體均包括關(guān)聯(lián)實體。以稱之為關(guān)聯(lián)實體。因此,在以后的討論中,凡是說到實體均包括關(guān)聯(lián)實體。 現(xiàn)在,在我們的現(xiàn)在,在我們的PSDBPSDB數(shù)據(jù)庫中,把實體數(shù)據(jù)庫中,把實體CustomerCustomer和和PartsParts聯(lián)系起來的是關(guān)聯(lián)聯(lián)系起來的是關(guān)聯(lián)實體,為其命名為實體,為其命名為ItemsItems(項目)。這樣,(項目)。這樣,PSDBPSDB數(shù)據(jù)庫是由實體數(shù)據(jù)庫是由實體CustomerCustomer、PartsParts和和Item
32、sItems構(gòu)成。構(gòu)成。 以下就來介紹數(shù)據(jù)庫邏輯設(shè)計的基本內(nèi)容和方法。以下就來介紹數(shù)據(jù)庫邏輯設(shè)計的基本內(nèi)容和方法。 Items Customer Parts PSDB數(shù)據(jù)庫的E-R圖關(guān)聯(lián)實體實體實體 CustNum LastName FirstNameCustomer 標(biāo)明Customer的屬性實體屬性 在數(shù)據(jù)庫通用設(shè)計方法中,在數(shù)據(jù)庫通用設(shè)計方法中,通常采用一種通常采用一種“實體實體- -聯(lián)系聯(lián)系”方法方法,簡稱,簡稱E-RE-R方法。這樣,就可以將方法。這樣,就可以將PSDBPSDB數(shù)據(jù)庫用數(shù)據(jù)庫用E-RE-R圖表示圖表示。3.7 E-RE-R方法 在完成實體設(shè)計后,例如完成在完成實體設(shè)計
33、后,例如完成E-RE-R圖設(shè)計后,就要為每個實體標(biāo)明屬性。圖設(shè)計后,就要為每個實體標(biāo)明屬性。首先,數(shù)據(jù)庫中的每個實體都要有個標(biāo)識符,而且是惟一的,稱其為首先,數(shù)據(jù)庫中的每個實體都要有個標(biāo)識符,而且是惟一的,稱其為主標(biāo)識符主標(biāo)識符(也稱為(也稱為主關(guān)鍵字主關(guān)鍵字或或主屬性主屬性)。)。1. 1. 標(biāo)明標(biāo)明CustomerCustomer屬性屬性 例如,在例如,在PSDBPSDB數(shù)據(jù)庫中的數(shù)據(jù)庫中的CustomerCustomer實體應(yīng)有一個主關(guān)實體應(yīng)有一個主關(guān)鍵字,顯然,顧客的姓名不成,因為有重名重姓,所以只鍵字,顯然,顧客的姓名不成,因為有重名重姓,所以只好給顧客好給顧客CustomerCus
34、tomer再加一個顧客編號再加一個顧客編號CustNumCustNum。同樣理由,。同樣理由,要給商品要給商品PartsParts加一個編號加一個編號PartNumPartNum,以及給關(guān)聯(lián)實體,以及給關(guān)聯(lián)實體ItemsItems加一個編號加一個編號ItemNumItemNum。注意,為了簡化數(shù)據(jù)庫設(shè)計的說明,。注意,為了簡化數(shù)據(jù)庫設(shè)計的說明,對于現(xiàn)在討論的課題,我們只列出主要的屬性,而不追求對于現(xiàn)在討論的課題,我們只列出主要的屬性,而不追求對它的客觀需求。設(shè)對它的客觀需求。設(shè)CustomerCustomer屬性有屬性有CustNumCustNum(顧客編號)、(顧客編號)、LastNameL
35、astName(顧客的姓)和(顧客的姓)和FirstNameFirstName(顧客名字)。(顧客名字)。 設(shè)設(shè)PartsParts屬性有屬性有PartNumPartNum(商品編(商品編號)、號)、DescriptionDescription(有關(guān)商品的說(有關(guān)商品的說明)、明)、QtyInStockQtyInStock(商品的庫存量)(商品的庫存量)和和SellingPriceSellingPrice(銷售價)。(銷售價)。標(biāo)明標(biāo)明PartsParts屬性屬性實體屬性 PartNumDescriptionQtyInStock PartsParts 標(biāo)明Parts的屬性SellingPric
36、e 設(shè)設(shè)ItemsItems屬性有屬性有ItemNumItemNum(ItemsItems記錄編號)、記錄編號)、CustNum CustNum (顧客編號)(顧客編號)PartNumPartNum(商品編號)和(商品編號)和QtySlodQtySlod(商品銷售量)。(商品銷售量)。標(biāo)明標(biāo)明ItemsItems屬性屬性 現(xiàn)在來說明為什么給現(xiàn)在來說明為什么給ItemsItems標(biāo)明這些屬性。首先,標(biāo)明這些屬性。首先,為什么要建立為什么要建立ItemNumItemNum屬性呢?因為屬性呢?因為ItemsItems需要有一個惟一的主標(biāo)識符(也稱為主屬需要有一個惟一的主標(biāo)識符(也稱為主屬性),也就是
37、需要有一個惟一的主關(guān)鍵字。另外,性),也就是需要有一個惟一的主關(guān)鍵字。另外,ItemsItems是把是把CustomerCustomer表和表和PartsParts表表聯(lián)系起來的關(guān)聯(lián)實體,那么最簡明的聯(lián)系,就是在聯(lián)系起來的關(guān)聯(lián)實體,那么最簡明的聯(lián)系,就是在ItemsItems中放置中放置CustomerCustomer的主關(guān)鍵字的主關(guān)鍵字CustNumCustNum和和PartsParts的主關(guān)鍵字的主關(guān)鍵字PartNumPartNum。事實上,根據(jù)。事實上,根據(jù)CustomerCustomer的主關(guān)鍵字的主關(guān)鍵字CustNumCustNum就就可以通過可以通過ItemsItems中的中的Pa
38、rtsParts的主關(guān)鍵字的主關(guān)鍵字PartNumPartNum查到查到PartsParts表中的一切信息,例如,某表中的一切信息,例如,某商品的銷售價是由商品的銷售價是由PartsParts表中屬性表中屬性SellingPriceSellingPrice標(biāo)識的。又例如有關(guān)每種商品的說明標(biāo)識的。又例如有關(guān)每種商品的說明是由屬性是由屬性DescrptionDescrption標(biāo)識的。同時,依據(jù)標(biāo)識的。同時,依據(jù)PartNumPartNum還可以在還可以在ItemsItems表中直接查到購買表中直接查到購買了多少該種商品,即銷售量是由了多少該種商品,即銷售量是由ItemsItems表中的屬性表中的
39、屬性QtySoldQtySold標(biāo)識的。標(biāo)識的。 ItemNum CustNum PartNum Items圖3.2.3 標(biāo)明Items的屬性(關(guān)聯(lián))實體屬性 QtySlod 在關(guān)系型數(shù)據(jù)庫中,把實體視為一種關(guān)系。關(guān)系的一般表示方法如下:在關(guān)系型數(shù)據(jù)庫中,把實體視為一種關(guān)系。關(guān)系的一般表示方法如下:關(guān)系名(屬性關(guān)系名(屬性1 1,屬性,屬性2 2,屬性,屬性n n) 在一個關(guān)系表達(dá)式中,也需要確定一個惟一的標(biāo)識符(也稱之為主屬性,在一個關(guān)系表達(dá)式中,也需要確定一個惟一的標(biāo)識符(也稱之為主屬性,或主鍵,或主關(guān)鍵字),用以標(biāo)識這個關(guān)系。如果在關(guān)系表達(dá)式中,我們假設(shè)或主鍵,或主關(guān)鍵字),用以標(biāo)識這個
40、關(guān)系。如果在關(guān)系表達(dá)式中,我們假設(shè)指定指定“屬性屬性k”k”為主屬性(關(guān)鍵字),那么在關(guān)系表達(dá)式中就把屬性為主屬性(關(guān)鍵字),那么在關(guān)系表達(dá)式中就把屬性k k放在最前放在最前面并用下劃線面并用下劃線“_”_”表示它是主屬性(主鍵字)。于是,關(guān)系表達(dá)式表示它是主屬性(主鍵字)。于是,關(guān)系表達(dá)式就變成:就變成:關(guān)系名(關(guān)系名(屬性屬性k k,屬性,屬性1 1,屬性,屬性2 2,屬性,屬性n n) 這樣,根據(jù)給這樣,根據(jù)給CustomerCustomer、PartsParts和和ItemsItems標(biāo)明的屬性,就可以把它們用關(guān)系標(biāo)明的屬性,就可以把它們用關(guān)系表達(dá)式表示如下:表達(dá)式表示如下: 這三個關(guān)
41、系就是這三個關(guān)系就是PSDBPSDB的關(guān)系數(shù)據(jù)庫的關(guān)系數(shù)據(jù)庫模型。模型。 Customer(CustNum ,LastName ,F(xiàn)iestName) Parts(PartNum ,Description ,QtyInStock ,SellingPrice) Items(ItemNum ,CustNum ,PartNum ,QtySlod)3.8 3.8 關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫 1.1.關(guān)系模型關(guān)系模型2. 2. 二維表二維表 在關(guān)系模型中,一個關(guān)系可以在關(guān)系模型中,一個關(guān)系可以用一個二維表來表示。用一個二維表來表示。二維表的行二維表的行稱為記錄,列稱為字段(記錄項)。稱為記錄,列稱為字段(
42、記錄項)。把這樣的表統(tǒng)稱為數(shù)據(jù)庫表。一個把這樣的表統(tǒng)稱為數(shù)據(jù)庫表。一個數(shù)據(jù)庫表的一般化表示。數(shù)據(jù)庫表的一般化表示。 關(guān)系CustomerCustomer(CustNum ,LastName ,F(xiàn)irstName)的二維表表示。其表結(jié)構(gòu): 關(guān)系PartsParts(PartNum ,Description ,tyInStock,SellingPrice)的二維表表示。其表結(jié)構(gòu): PartNumDescription tyInStockSellingPrice ItemNumCustNumPartNumQtySlod 關(guān)系ItemsItems(ItemNum ,CustNum ,PartNum ,
43、QtySlod)二維表表示。其表結(jié)構(gòu): CustNumLastNameFiestName 字段名稱 記錄 字 段 用二維表表示關(guān)系3. 3. 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計 所謂表結(jié)構(gòu)設(shè)計就是對表中的每個字段(Field)、字段類型(Type)、字段大?。⊿ize)以及該字段是否為主關(guān)鍵字段(Key)等進(jìn)行規(guī)定,以便將來能夠?qū)Ρ磉M(jìn)行數(shù)據(jù)操作(包括對數(shù)據(jù)的存取、增刪、查詢、修改等)。 設(shè)計CustomerCustomer表結(jié)構(gòu) 設(shè)計PartsParts表結(jié)構(gòu)Field(字段)Type(類型)Size(大?。㎏ey(主關(guān)鍵字)ItemNumAutoincriment(+)n/aYesCustNu
44、mNumericn/aYes PartNumNumericn/aYes QtySlodNumericn/aNo 設(shè)計ItemItems s表結(jié)構(gòu)Field(字段)Type(類型)Size(大小)Key(主關(guān)鍵字)CustNumNumeric(N)n/aYes(是) LastNameAlpha(A)30No(不是)FiestNameAlpha(A)25No(不是)Field(字段)Type(類型)Size(大?。㎏ey(主關(guān)鍵字)PartNumNumericn/aYesDescriptionAlpha40NotyInStockNumericn/aNoSellingPriceNumericn/aN
45、o4. 4. 設(shè)計數(shù)據(jù)庫表的數(shù)據(jù)設(shè)計數(shù)據(jù)庫表的數(shù)據(jù) 現(xiàn)在給出現(xiàn)在給出PSDBPSDB數(shù)據(jù)庫中數(shù)據(jù)庫中三個表的實際使用的數(shù)據(jù)。三個表的實際使用的數(shù)據(jù)。 設(shè)計好的這些數(shù)據(jù),我設(shè)計好的這些數(shù)據(jù),我們以后還要用到。們以后還要用到。 (1) CustomerCustomer表的數(shù)據(jù)注: ItemNum的類型(Type)設(shè)置為Autoincriment。這就意味,ItemNum的值會由程序自動地填入。因此,在制作Items表的數(shù)據(jù)時,不要在該字段中填入任何東西。 CustNumLastNameFiestName1001KennedyTom1002AndersonJean1003GeorgeTim1004S
46、amJean(2) PartsParts表的數(shù)據(jù)PartNumDescription QtyInStockSellingPrice1001PartNum 1011,000301002PartNum 102542001003PartNum 103211231004PartNum 104200751005PartNum 1051110(3) ItemItems s表的數(shù)據(jù)ItemNum注CustNumPartNumQtySlod10011013 10031022 10011051 10011026第第4 4章章 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 1.1.構(gòu)造表的結(jié)構(gòu)構(gòu)造表的結(jié)構(gòu) 創(chuàng)建過程如下:創(chuàng)建過程如下:
47、(1 1)啟動數(shù)據(jù)庫桌面)啟動數(shù)據(jù)庫桌面DBDDBD。 (2 2)設(shè)置工作目錄。選擇)設(shè)置工作目錄。選擇F i l e F i l e Working Directory Working Directory 命令。命令。 (3 3)設(shè)置工作目錄的別名。選擇)設(shè)置工作目錄的別名。選擇 T o o l s A l i a s M a n a g e rT o o l s A l i a s M a n a g e r 命 令 。 選 擇命 令 。 選 擇T a b l e R e s t r u c t u r eT a b l e R e s t r u c t u r e 命 令 , 構(gòu) 造
48、表命 令 , 構(gòu) 造 表Customer.dbCustomer.db的結(jié)構(gòu)。的結(jié)構(gòu)。 2.2.向向CustomerCustomer表中輸入數(shù)據(jù)表中輸入數(shù)據(jù)選擇FileOpen Table命令。打開Customer.db表。選擇TableEdit Data命令,將表置于編輯模式。向一個字段輸入數(shù)據(jù)。即單擊該字段,然后即可輸入數(shù)據(jù)。使用Navigator控件對表中記錄排序、移動。3.3.繼續(xù)向繼續(xù)向Parts.dbParts.db和和Items.dbItems.db表輸入數(shù)據(jù),完成之后,建立表輸入數(shù)據(jù),完成之后,建立PSDBPSDB完成。完成。4. 創(chuàng)建創(chuàng)建DelphiDelphi數(shù)據(jù)庫程序數(shù)據(jù)庫
49、程序 (1)建立一個新的工程 l 運(yùn)行Delphi 7; l 從主菜單中選擇FileNewApplication命令,則Delphi 7 自動創(chuàng)建一個新工程。 l 從主菜單中選擇FileSave As命令,保存單元文件CMyCust.Pas,保存工程文件 MyCust.Dpr。 (2)用數(shù)據(jù)庫窗體向?qū)?chuàng)建窗體 在數(shù)據(jù)庫窗體向?qū)atabaseForm Wizard命令創(chuàng)建的Form2窗體上,已經(jīng)自動地放置了5個控件:TPanel、TDBNavigator、TDBGrid、TTable和TDataSource。Navigator控件 TTable控件 DBGrid控件 Tpanel控件 TDat
50、aSource控件 (3)執(zhí)行MyCust程序 當(dāng)程序被運(yùn)行時,便自動生成一個可執(zhí)行的.EXE程序。Delphi 7會顯示C u s t o m e r . D B 表 中 的 數(shù) 據(jù) 。 其 中Navigator控件中輝亮的按鈕是可用的,可以使用Navigator控件的按鈕在各記錄之間移動。第第5 5章章 讀寫字段值讀寫字段值 5.1 字段編輯器和列編輯器字段編輯器和列編輯器 字段編輯器 列編輯器Columns Editor Add fields Add fields命令:使用這個命令可為命令:使用這個命令可為TableTable對象增對象增加物理字段。每個增加的字段都代表窗體類中的一個對加
51、物理字段。每個增加的字段都代表窗體類中的一個對象。所謂象。所謂“增加物理字段增加物理字段”,是指有選擇地使用數(shù)據(jù)庫,是指有選擇地使用數(shù)據(jù)庫表中實際存在的字段,因為,根據(jù)需要不是總要使用數(shù)表中實際存在的字段,因為,根據(jù)需要不是總要使用數(shù)據(jù)庫表中實際存在的全部字段。在實際操作中,雖然數(shù)據(jù)庫表中實際存在的全部字段。在實際操作中,雖然數(shù)據(jù)庫表中實際存在很多字段,但有些是當(dāng)前不需要的字據(jù)庫表中實際存在很多字段,但有些是當(dāng)前不需要的字段,就不去選擇它們了。段,就不去選擇它們了。 在字段編輯器在字段編輯器Fields EditorFields Editor中中“增加物理字段增加物理字段”、不被選擇的字段或者
52、被刪除的字段,都不會改變數(shù)據(jù)、不被選擇的字段或者被刪除的字段,都不會改變數(shù)據(jù)庫表中實際存在的字段。庫表中實際存在的字段。 New fieldsNew fields命令:使用這個命令可以創(chuàng)建新的數(shù)據(jù)命令:使用這個命令可以創(chuàng)建新的數(shù)據(jù)庫表中實際不存在的字段。這種字段分為三類:庫表中實際不存在的字段。這種字段分為三類:Data(Data(數(shù)據(jù)字段數(shù)據(jù)字段) )、CalculatedCalculated(計算字段)和(計算字段)和LookupLookup(查找(查找字段)。所創(chuàng)建的每個新字段都代表窗體類中的一個對字段)。所創(chuàng)建的每個新字段都代表窗體類中的一個對象。而且主要是創(chuàng)建計算字段(象。而且主要是
53、創(chuàng)建計算字段(CalculatedCalculated)。但所創(chuàng))。但所創(chuàng)建的新字段也不會添加到實際的數(shù)據(jù)庫表中。它僅用于建的新字段也不會添加到實際的數(shù)據(jù)庫表中。它僅用于顯示的目的。顯示的目的。 不要忘記!要想創(chuàng)建和修改實際的數(shù)據(jù)庫表,還得不要忘記!要想創(chuàng)建和修改實際的數(shù)據(jù)庫表,還得使用數(shù)據(jù)庫桌面使用數(shù)據(jù)庫桌面Database DesktopDatabase Desktop程序。程序。雙擊Grid1控件雙擊ItemsTable控件5.2 5.2 使用字段編輯器選擇字段使用字段編輯器選擇字段雙擊ItemsTable控件,彈出數(shù)據(jù)庫表字段編輯器在編輯器內(nèi)單擊鼠標(biāo)右鍵,彈出快捷菜單在快捷菜單中選擇A
54、dd all field,然 后 選 擇 S e l e c t all,則Itemss.db表的所有字段被選擇。(1 1)雙擊)雙擊ItemsTableItemsTable控件控件,Delphi 7,Delphi 7顯示數(shù)據(jù)庫表字段編輯器。顯示數(shù)據(jù)庫表字段編輯器。(2 2)操作過程如下圖所示。)操作過程如下圖所示。在在Items.dbItems.db表中選擇字段表中選擇字段5.3 5.3 使用列編輯器選擇字段使用列編輯器選擇字段 選擇網(wǎng)格顯示字段選擇網(wǎng)格顯示字段(1 1)雙擊)雙擊GridGrid控件控件, ,顯示列編輯器窗口。顯示列編輯器窗口。(2 2)操作過程如下圖所示。)操作過程如下圖
55、所示。在Grid內(nèi)雙擊,顯示列編輯器在列編輯器內(nèi)單擊鼠標(biāo)右鍵,彈出菜單選擇“添加所有字段”按鈕或選擇菜單中Add All Fields 則顯示Items.db表的全部字段 Add All Fields命令5.4 5.4 使用使用列編輯器列編輯器選擇顯示字段選擇顯示字段 如下圖所示,選中要刪除的字段如下圖所示,選中要刪除的字段FieldNameFieldName,單擊,單擊“刪除刪除”按鈕,字段按鈕,字段FirstNameFirstName即被刪除。這里所謂刪除是非永久性刪除即被刪除。這里所謂刪除是非永久性刪除,即不是刪除數(shù)據(jù)表中的字段,而是不在網(wǎng)格表中顯示它。,即不是刪除數(shù)據(jù)表中的字段,而是不
56、在網(wǎng)格表中顯示它?;謴?fù)字段添加字段刪除字段添加所有字段列編輯器快捷菜單按鈕的功能 現(xiàn)在采用上頁現(xiàn)在采用上頁圖中的結(jié)果,即只選擇含有兩個字段圖中的結(jié)果,即只選擇含有兩個字段CustNumCustNum和和LastNameLastName的的DBGrid1DBGrid1的網(wǎng)格表。我們看一看的網(wǎng)格表。我們看一看Delphi 7 Delphi 7 為字段為字段CustNumCustNum和和LastNameLastName還做還做了些什么工作?了些什么工作? 事實上,一旦選擇了這兩個字段,事實上,一旦選擇了這兩個字段,Delphi 7 Delphi 7 就在就在Form2Form2窗體中自動地窗體中自
57、動地放 置 兩 個 不 可 見 的 附 加 組 件放 置 兩 個 不 可 見 的 附 加 組 件 C u s t o m e r T a b l e C u s t N u mC u s t o m e r T a b l e C u s t N u m 和和CustomerTableLastNameCustomerTableLastName,通常把這種附加組件稱為,通常把這種附加組件稱為字段對象字段對象。當(dāng)然,可以。當(dāng)然,可以像其他任何組件一樣查看和設(shè)置它們的屬性,而且這一點也是非常重要的特像其他任何組件一樣查看和設(shè)置它們的屬性,而且這一點也是非常重要的特性。性。 打開對象查看器(打開對象查
58、看器(Object InspectorObject Inspector)上的對象選擇器()上的對象選擇器(Object Object SelectorSelector)的下拉列表框,就會看到)的下拉列表框,就會看到CustomerTableCustNumCustomerTableCustNum和和CustomerTableLastNameCustomerTableLastName這兩個對象。如下圖所示。這兩個對象。如下圖所示。5.5 5.5 字段對象字段對象 在對象查看的 Properties標(biāo) 簽頁 中設(shè)置Align屬性為 alNone,并使Grid框變小。5.6 5.6 用代碼改變字段屬性
59、用代碼改變字段屬性 啟動Delphi 7 執(zhí)行MyCust程序 選中Grid控件, 打開對象查看器 的Properties標(biāo)簽 頁。1. 1. 設(shè)置設(shè)置GridGrid控件的邊框控件的邊框 設(shè)置設(shè)置GridGrid控件的邊框的目的是使之可以調(diào)整大小,以適應(yīng)用戶的要求??丶倪吙虻哪康氖鞘怪梢哉{(diào)整大小,以適應(yīng)用戶的要求。操作過程如圖操作過程如圖5.55.5所示。所示。3.3.設(shè)置設(shè)置Checkbox1Checkbox1( Name設(shè)置為chkVisible )和)和 Checkbox2Checkbox2(Name設(shè)置為 chkCenter)復(fù)選框。為復(fù)選框)復(fù)選框。為復(fù)選框chkVisible
60、chkVisible和和chkCenterchkCenter的的OnClickOnClick事件添事件添 加代碼加代碼: :2.2.給給ExitExit按鈕的按鈕的“單擊單擊”事件添加代碼事件添加代碼 在在OnClickOnClick事件的事件的cmdExitOnClickcmdExitOnClick過程代碼窗口中添加如下代碼:過程代碼窗口中添加如下代碼: Application.Terminate; 填寫的代碼beginif (條件)Then語句1else語句2;end;如果滿足 條件執(zhí)行語句1如果不滿足 條件執(zhí)行語句2程序語句結(jié)構(gòu) 說 明. .讀寫字段值讀寫字段值( (1 1) ) 給給cmdCustom
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端人才培訓(xùn)服務(wù)合同
- 2024年環(huán)保型汽車充電設(shè)施建設(shè)合同
- 專屬2024版職員招聘合同樣本版B版
- 2024清潔生產(chǎn)技術(shù)咨詢及環(huán)保設(shè)施運(yùn)營管理合同3篇
- 二零二五年瓷磚產(chǎn)品OEM代工及銷售合同
- 2025年度聯(lián)合市場開發(fā)合同3篇
- 2024建設(shè)工程合同工程質(zhì)量補(bǔ)充協(xié)議
- 2025年上教版八年級科學(xué)上冊月考試卷含答案
- 2024游泳池水質(zhì)監(jiān)測與處理服務(wù)承包合同范文3篇
- 2024年重慶文化藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024測繪個人年終工作總結(jié)
- DB11 637-2015 房屋結(jié)構(gòu)綜合安全性鑒定標(biāo)準(zhǔn)
- 制造業(yè)生產(chǎn)流程作業(yè)指導(dǎo)書
- DB34∕T 4444-2023 企業(yè)信息化系統(tǒng)上云評估服務(wù)規(guī)范
- 福建中閩能源股份有限公司招聘筆試題庫2024
- 2024年高中生物新教材同步必修第二冊學(xué)習(xí)筆記第5章 本章知識網(wǎng)絡(luò)
- 腦血管疾病三級預(yù)防
- HSK標(biāo)準(zhǔn)教程5上-課件-L1
- 人教版五年級下冊數(shù)學(xué)預(yù)習(xí)單、學(xué)習(xí)單、檢測單
- JC-T 746-2023 混凝土瓦標(biāo)準(zhǔn)規(guī)范
- 如何落實管業(yè)務(wù)必須管安全
評論
0/150
提交評論