第九章 VB的數(shù)據(jù)庫操作
9.1
數(shù)據(jù)庫的基礎(chǔ)知識
1.計算機數(shù)據(jù)管理技術(shù)的發(fā)展
第一階段:人工管理階段,特點是數(shù)據(jù)不長期保存,沒有軟件系統(tǒng)對數(shù)據(jù)進行管理,沒有文件的概念,一組數(shù)據(jù)對應(yīng)一個程序。
第二階段:采用文件管理方式,特點是數(shù)據(jù)不再是程序的組成部分,而是有組織、有結(jié)構(gòu)地構(gòu)成文件形式,形成數(shù)據(jù)文件;文件管理系統(tǒng)是應(yīng)用程序與數(shù)據(jù)文件的接口。
第三階段:數(shù)據(jù)庫管理方式,特點是對所有數(shù)據(jù)實行統(tǒng)一、集中、獨立的管理,數(shù)據(jù)獨立于程序存在,并可以提供給各類不同用戶使用。
2.數(shù)據(jù)庫的基本概念
(1) 數(shù)據(jù)庫(DataBase DB)
定義:是以一定的組織形式存放在計算機存儲介質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。
特點:
b
具有最小的冗余度
具有數(shù)據(jù)獨立性
實現(xiàn)數(shù)據(jù)共享
安全可靠,保密性能好
(2) 數(shù)據(jù)庫管理系統(tǒng)(DataBase Management
System DBMS)
定義:是操縱和管理數(shù)據(jù)庫的系統(tǒng)軟件。
功能:維護數(shù)據(jù)庫、接收和完成用戶程序或命令提出的訪問數(shù)據(jù)庫的各種請求。
數(shù)據(jù)語言:z |
v數(shù)據(jù)定義語言(DDL): 用來建立所需的數(shù)據(jù)庫(即設(shè)計庫結(jié)構(gòu)) |
數(shù)據(jù)操作語言(DML): 用來對數(shù)據(jù)庫進行查詢和維護操作。 |
t數(shù)據(jù)控制語言(DCL): 用來控制數(shù)據(jù)的訪問權(quán)限及事務(wù)管理。 |
關(guān)系型數(shù)據(jù)庫使用的標準語言是結(jié)構(gòu)化查詢語言(Structured Query
Language, SQL)。
(3) 數(shù)據(jù)庫系統(tǒng)(DataBase System
DBS)
定義; 以數(shù)據(jù)庫應(yīng)用為基礎(chǔ)的計算機系統(tǒng)。
組成:一個完整的數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫管理員和應(yīng)用程序組成。
數(shù)據(jù)庫也可以這樣劃分其組成: |
硬件:計算機硬件設(shè)備 |
軟件:數(shù)據(jù)庫管理系統(tǒng) 、操作系統(tǒng)、開發(fā)工具、應(yīng)用程序 |
用戶:應(yīng)用程序設(shè)計員、終端用戶、數(shù)據(jù)庫管理員 |
分類 |
層次型數(shù)據(jù)庫 |
網(wǎng)狀型數(shù)據(jù)庫 |
網(wǎng)狀型數(shù)據(jù)庫 |
分代 |
第一代 非關(guān)系型數(shù)據(jù)庫系統(tǒng),60年代末問世,包括層次型和網(wǎng)狀型 |
第二代 關(guān)系型數(shù)據(jù)庫系統(tǒng)(RDBS),70年代中期問世 |
第三代 對象-關(guān)系數(shù)據(jù)庫系統(tǒng)(ORDBS 、OOBDS),80年代中期至今 |
上述三個概念之間的聯(lián)系:在數(shù)據(jù)庫系統(tǒng)中通過數(shù)據(jù)庫管理系統(tǒng)來建立和使用數(shù)據(jù)庫。
3.數(shù)據(jù)模型
數(shù)據(jù)模型:即描述實體模型的數(shù)據(jù)。
數(shù)據(jù)模型的分類: |
層次模型(采用樹型結(jié)構(gòu)) |
網(wǎng)絡(luò)模型(采用無向圖型結(jié)構(gòu)) |
關(guān)系模型(采用二維表結(jié)構(gòu)) |
關(guān)系模型的性質(zhì):
|
二維表的記錄數(shù)隨數(shù)據(jù)的增加而改變,但其字段數(shù)是相對固定的 |
二維表中的每一列均有唯一的字段名 |
二維表中不允許出現(xiàn)完全相同的兩行 |
二維表中行的順序、列的順序均可以任意交換 |
4. 關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)
關(guān)系型數(shù)據(jù)庫的基本結(jié)構(gòu)是一張二維表,包括以下概念:
(1) 記錄(Record):數(shù)據(jù)表中的每一行數(shù)據(jù)
(2) 字段(Field):數(shù)據(jù)表中的每一列,表頭(第一行)的內(nèi)容為字段名
(3) 數(shù)據(jù)表(Table):相關(guān)數(shù)據(jù)組成的二維表格
(4) 數(shù)據(jù)庫(Database):相關(guān)數(shù)據(jù)表的集合
(5) 關(guān)系(Relation):相關(guān)表之間通過相關(guān)聯(lián)的字段建立的聯(lián)系。
(6) 索引(Index):指按表文件中某個關(guān)鍵字段或表達式建立記錄的邏輯順序。它是由一系列記錄號組成的一個列表,目的是提供對數(shù)據(jù)的快速訪問。索引不改變表中記錄的物理順序。
索引關(guān)鍵字(索引表達式):用來建立索引的一個字段或字段表達式。
ngf 數(shù)據(jù)庫和數(shù)據(jù)表可以通過數(shù)據(jù)庫管理系統(tǒng)軟件來建立,如:Access,Visual FoxPro,SQL Server 、Sybase、 Oracle。在VB環(huán)境下可以直接建立Access數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)表的特點:(1)每一個字段不可再分解,也不能有名字相同的字段;
hgfhgfyh(2)每一列中的數(shù)據(jù)都有相同的數(shù)據(jù)類型;
hfyftytfyyy(3)表中沒有內(nèi)容完全相同的行(記錄)。
5.查詢的概念
查詢(query):從相關(guān)數(shù)據(jù)表中選取符合特定要求的數(shù)據(jù)。
創(chuàng)建方法:可以通過查詢生成器創(chuàng)建一個查詢,也可以在SQL窗口直接用SELECT—SQL命令寫出查詢。
9.2
數(shù)據(jù)庫管理器
1. 數(shù)據(jù)庫管理器介紹
在VB中可以通過“外接程序”菜單中的“可視化數(shù)據(jù)管理器”調(diào)出“VisData”數(shù)據(jù)庫管理器窗口。
菜單選項
|
功能描述
|
文件
|
打開數(shù)據(jù)庫
|
打開指定的數(shù)據(jù)庫
|
新建
|
根據(jù)所選類型建立新數(shù)據(jù)庫
|
導(dǎo)入/導(dǎo)出
|
從其他數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)表,或?qū)С鰯?shù)據(jù)表及SQL查詢結(jié)果
|
工作空間
|
顯示注冊對話框注冊新工作空間,用新輸入的用戶名和密碼從新的工作空間重新打開當前數(shù)據(jù)庫。
|
壓縮MDB
|
壓縮指定的Access數(shù)據(jù)庫,創(chuàng)建一個加密或解密文件。
|
修復(fù)MDB
|
修復(fù)指定的Access數(shù)據(jù)庫
|
實用程序
|
查詢生成器
|
建立、查看、執(zhí)行和存儲SQL查詢
|
數(shù)據(jù)窗口設(shè)計器
|
創(chuàng)建數(shù)據(jù)窗體并將其添加到VB工程中
|
全局替換
|
創(chuàng)建SQL表達式并更新所選數(shù)據(jù)表中滿足條件的記錄
|
附加
|
顯示當前Access數(shù)據(jù)庫中所有附加數(shù)據(jù)表及連接條件
|
用戶組/用戶
|
查看和修改用戶組、用戶、權(quán)限等設(shè)置
|
System.mda
|
創(chuàng)建System.mda文件,以便為每個文件設(shè)置安全機制
|
性能選項
|
設(shè)置超時值
|
2. 建立數(shù)據(jù)庫
數(shù)據(jù)庫的基本操作: |
創(chuàng)建數(shù)據(jù)表:
|
設(shè)計表名和表結(jié)構(gòu) |
輸入記錄 |
建立索引 |
數(shù)據(jù)維護:
|
增加記錄 |
修改記錄 |
刪除記錄 |
創(chuàng)建數(shù)據(jù)表的主要步驟: 設(shè)計表結(jié)構(gòu) →
輸入記錄 → 建立索引 → 數(shù)據(jù)維護
(1)設(shè)計表結(jié)構(gòu)
啟動可視化數(shù)據(jù)管理器 → 在database窗口中右擊,從菜單中選擇“新表” → 在表結(jié)構(gòu)窗口中輸入表名→ 添加字段 → 確定字段名稱和屬性、有效性規(guī)則 → 建立索引 →生成表結(jié)構(gòu)。
“添加字段”對話框各選項說明
選項名
|
描述
|
名稱
|
即每個字段的名字(對所用字符沒有什么限制)
|
類型
|
指該字段的數(shù)據(jù)特征,包括:Boolean、Byte、Integer、Long、Currency、Single、Double、Date/Time、Text、Binary(二進制型,存放圖片)、Memo(備注型,存放長文本)
|
大小
|
字段寬度,指該字段所能容納數(shù)據(jù)的的最大字節(jié)數(shù)
|
固定字段
|
字段寬度固定不變
|
可變字段
|
字段寬度可變
|
允許零長度
|
表示空字符串可作為有效的字段值
|
必要的
|
表示該字段值不可缺少
|
順序位置
|
字段在表中的順序位置
|
驗證文本
|
當向表中輸入無效值時系統(tǒng)顯示的提示信息
|
驗證規(guī)則
|
驗證輸入字段值的簡單規(guī)則,目的是使所輸數(shù)據(jù)符合設(shè)定的條件
|
默認值
|
在輸入時設(shè)置的字段初始值,以減少輸入重復(fù)性數(shù)據(jù)時的工作量
|
(2)輸入記錄
在database窗口中選中表名并右擊,從菜單中選擇“打開” →在數(shù)據(jù)表窗口輸入記錄(注意窗口樣式)→ 單擊“新增”→ 在窗口中輸入記錄并“更新” →重復(fù)……
(3) 維護記錄
在database窗口中選中表名并右擊,從菜單中選擇“打開” →單擊“編輯”/“刪除”/“新增”,即可完成對記錄的修改、刪除、添加操作。
3. 建立查詢
建立查詢就是在數(shù)據(jù)表中找到符合特定條件的記錄并組成一張新表。
在database窗口中選中表名并右擊,從菜單中選擇“新查詢” →在查詢生成器中構(gòu)造查詢條件→單擊“運行” →單擊“保存”,給出查詢結(jié)果文件名→“關(guān)閉”。
查詢生成器說明
各選項
|
描述
|
查詢表達式
|
設(shè)置查詢應(yīng)該滿足的基本條件,可以用and /or來設(shè)置應(yīng)滿足的多個條件
|
表/字段名
|
設(shè)置查詢結(jié)果中將顯示的字段名,單擊一個加亮便選中了
|
前百分之幾條
|
只顯示查詢結(jié)果中的前若干條記錄
|
前N條記錄
|
只顯示查詢結(jié)果中的前N條記錄
|
“運行”按鈕
|
執(zhí)行查詢命令,并顯示出查詢結(jié)果
|
“顯示”按鈕
|
用消息框顯示SQL命令
|
“復(fù)制”按鈕
|
將SQL命令復(fù)制到SQL窗口
|
“保存”按鈕
|
將查詢結(jié)果取個名并保存到數(shù)據(jù)庫中
|
“清除”按鈕
|
清除條件列表框中的查詢條件
|
分組條件
|
將查詢結(jié)果分組,一般每組只有一個記錄
|
排序條件
|
將查詢結(jié)果按順序顯示出來,ASC(升序)、DESC(降序)
|
連接條件
|
設(shè)置相關(guān)表之間的連接字段
|
9.3
數(shù)據(jù)控件
1. 數(shù)據(jù)控件的建立
從VB工具箱中單擊Data控件,在窗體上畫出數(shù)據(jù)控件即可。
2. 數(shù)據(jù)控件的屬性
屬性名稱
|
作用
|
Connect
|
指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫類型,VB默認的是Access的MDB數(shù)據(jù)庫,也可以連接DBF、XLS、ODBC等數(shù)據(jù)庫
|
DatabaseName
|
指定具體使用的數(shù)據(jù)庫文件名,包括路徑名
|
RecordSource
|
指定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構(gòu)成記錄集對象Recordset對象,可以是數(shù)據(jù)庫中的單個表名、一個存儲查詢,也可以是SQL查詢命令
|
RecordsetType
|
確定記錄集類型,有三種:
0——Table(表);
1——Dynaset(動態(tài),默認的) ;2——Snapshot(快照)
|
BofAction
|
當記錄指針指向記錄集的開始時,確定數(shù)據(jù)控件該采取的操作:
0——控件重定位到第一個記錄
1——移過記錄集開始位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對第一個記錄的無效事件Validate
|
EofAction
|
當記錄指針指向記錄集的結(jié)束時,確定數(shù)據(jù)控件該采取的操作:
0——控件重定位到最后一個記錄
1——移過記錄集結(jié)束位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對最后一個記錄的無效事件Validate
2——向記錄集加入新的空記錄,可以對新記錄進行編輯,移動記錄指針新記錄寫入數(shù)據(jù)庫
|
綁定控件、數(shù)據(jù)控件、數(shù)據(jù)庫之間的關(guān)系:
綁定控件的屬性:
DataSource——通過一個有效的數(shù)據(jù)控件連接到一個數(shù)據(jù)庫上。
DataField——將數(shù)據(jù)庫中的有效字段連接到綁定控件上。
除了常規(guī)控件外,可以與Data數(shù)據(jù)控件綁定的控件有:
控件名稱
|
部件名稱
|
常用屬性
|
MSFlexGrid
|
Microsoft FlexGrid
Control 6.0(OLE DB)
|
DataSourse
|
DBCombo
|
Microsoft Data Bound List
Controls 6.0
|
DataField、DataSource、ListField、RowSource、BoundColumn
|
DBList
|
DBGrid
|
Microsoft Data Bound Grid
Control 5.0(SP3)
|
DataSourse
|
3. 數(shù)據(jù)控件的事件
事件名稱
|
觸發(fā)時間
|
Reposition
|
發(fā)生在一條記錄成為當前記錄后。只要將記錄指針從一條記錄移動到另一條記錄就會觸發(fā)。
|
Validate
|
在一條不同的記錄成為當前記錄之前,Update 方法之前(用
UpdateRecord 方法保存數(shù)據(jù)時除外);以及
Delete、Unload 或 Close
操作之前會發(fā)生該事件。它檢查被數(shù)據(jù)控件綁定的控件內(nèi)的數(shù)據(jù)是否發(fā)生變化。
語法:Private Sub
Data_Validate(Action As Integer, Save As Integer) …… End
Sub
|
Validate事跡的 Action參數(shù)
Action值
|
描述
|
Action值
|
描述
|
0
|
取消對數(shù)據(jù)控件的操作
|
6
|
Update 操作
|
1
|
MoveFirst 方法
|
7
|
Delete 方法
|
2
|
MovePrevious 方法
|
8
|
Find 方法
|
3
|
MoveNext 方法
|
9
|
設(shè)置Bookmark
屬性
|
4
|
MoveLast 方法。
|
10
|
Close 的方法
|
5
|
AddNew 方法
|
11
|
卸載窗體
|
4. 數(shù)據(jù)控件的常用方法
方法名稱
|
作用
|
示例
|
Refresh
|
激活數(shù)據(jù)控件,使各用戶對數(shù)據(jù)庫的操作有效。
|
Data1.Refresh
|
UpdateControls
|
將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到數(shù)據(jù)控件綁定的控件內(nèi),通過它可以終止用戶對綁定控件內(nèi)數(shù)據(jù)的修改。
|
放棄修改按鈕代碼:
Data1.
UpdateControls
|
UpdateRecord
|
強制數(shù)據(jù)控件將綁定控件內(nèi)的數(shù)據(jù)寫入到數(shù)據(jù)庫中,不再觸發(fā)Validate事件
|
確認修改按鈕代碼:
Data1.
UpdateRecord
|
5. 記錄集的屬性與方法
名稱
|
作用
|
屬性
|
AbsolutePostion
|
返回當前指針值,如果是第一條記錄,其值為0;是只讀屬性
|
Bof / Eof
|
Bof判斷記錄指針是否在首記錄之前,若是則為True;Eof判斷記錄指針是否在末記錄之后,若是則為True
|
Bookmark
|
用于設(shè)置或返回當前指針的標簽,可以用在在程序中重定位記錄集的指針,其值采用字符串類型。
|
NoMatch
|
在記錄集中進行查找時,如果找到相匹配的記錄,則為Falue,找不到則為True。
|
RecordCount
|
對Recordset對象中的記錄記數(shù),為了準確起見,在記數(shù)前用MoveLast方法將記錄指針移到最后一條記錄上;是只讀屬性。
|
方法
|
Move
|
用于移動記錄指針,共有5種方法:
MoveFirst——將指針移到第1條記錄
MoveLast——將指針移到最后一條記錄
MoveNext——將指針移到下一條記錄
MovePrevious——將指針移到上一條記錄
Move n——將指針向前或向后移動n條記錄
|
Find
|
在指定的Dynaset或
Snapshop類型的Recordset對象中查找與指定條件相符的一條記錄,并使之成為當前記錄,共有4種方法:
FindFirst——從記錄集的開始查找滿足條件的第1條記錄
FindLast——從記錄集的尾部向前查找滿足條件的第1條記錄
FindNext——從當前記錄開始查找滿足條件的下一條記錄
FindPrevious——從當前記錄開始查找滿足條件的上一條記錄
語法格式舉例:
Data1.Recordset.FindFirst "課程名='計算機基礎(chǔ)'
"
Find方法支持通配符,默認情況下忽略大小寫,可以添加說明改變默認設(shè)置:
Option Compare Text (與大小寫無關(guān))
Option Compare Binary (與大小寫有關(guān))
如果找不到相匹配的記錄,當前記錄保持在查找的始發(fā)處;如果找到了,則指針定位到該記錄。
|
Seek
|
使用該方法必需打開表的索引,它在Table表中查找與指定索引規(guī)則相符的第一條記錄,并使其成為當前記錄。
語法格式舉例:
Data1.Recordset.Index= "課程名"
Data1.Recordset.Seek "=",
"計算機基礎(chǔ)"
|
6. 利用數(shù)據(jù)控件對數(shù)據(jù)庫進行增、刪、改操作
操作項目
|
操作方法
|
注意事項
|
增加記錄
|
1) 調(diào)用AddNew方法:Data1.Recordset.
AddNew
2) 給各字段賦值:Recordset.Fields("字段名")=值或在綁定控件中直接輸入內(nèi)容
3) 調(diào)用Update方法,將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫:
Data1.Recordset. Update
4) 調(diào)用MoveLast方法顯示新記錄:
Data1.Recordset.
MoveLast
|
如果缺少第3)步而將指針移動到其他記錄或關(guān)閉了記錄,則所做的輸入全部丟失;若沒有第4)步。雖然加入了新記錄,但記錄指針自動返回到添加新記錄前的位置上,并不顯示新記錄。
|
刪除記錄
|
1) 定位被刪除記錄使之成為當前記錄(用Move或Find方法)
2) 調(diào)用Delete方法:Data1.Recordset.
Delete
3) 調(diào)用MoveNext方法移動記錄指針
|
使用Delete方法時,當前記錄立即刪除,但被數(shù)據(jù)庫約束的綁定控件仍舊顯示該記錄的內(nèi)容,故必須用第3)步刷新綁定控件。
|
修改記錄
|
1) 調(diào)用Edit方法:Data1.Recordset.
Edit
2) 給各字段賦值:在綁定控件中直接修改
3) 調(diào)用Update方法,確定所做的修改:
Data1.Recordset. Update
|
如果要放棄對數(shù)據(jù)的所有修改,可在第3)步之前用Refresh方法,重讀數(shù)據(jù)庫,刷新記錄。
|
9.4
ADO數(shù)據(jù)控件
1. 什么是ADO?
ADO(ActiveX Data Object)數(shù)據(jù)訪問接口是微軟處理數(shù)據(jù)庫信息的最新技術(shù),它是一種ActiveX對象,采用了OLE DB(動態(tài)連接與嵌入數(shù)據(jù)庫)的數(shù)據(jù)訪問模式,是數(shù)據(jù)訪問對象DAO、遠程數(shù)據(jù)對象RDO和開放式數(shù)據(jù)庫互連ODBC三種方式的擴展。
要使用ADO對象必需先為當前工程引用ADO對象庫,方法是: 執(zhí)行“工程”菜單中的“引用”命令,在對話框中選中“Microsoft ActiveX Data Object 2.0 Library”。
ADO對象描述
對象名
|
描述
|
Connection
|
連接數(shù)據(jù)來源
|
Command
|
從數(shù)據(jù)源獲取所需數(shù)據(jù)的命令信息
|
Recordset
|
所獲取的一組記錄組成的記錄集
|
Error
|
在訪問數(shù)據(jù)庫時,由數(shù)據(jù)源所返回的錯誤信息
|
Parameter
|
與命令對象相關(guān)的參數(shù)
|
Field
|
包含了記錄集中某個字段的信息
|
2.使用ADO數(shù)據(jù)控件
(1) 添加ADO數(shù)據(jù)控件
從“工程”菜單中選擇“部件”命令,在對話框中選中“Microsoft ADO Data ControlS 6.0(OLE DB)”,將其添加到工具箱,并在窗體上拖劃出ADO數(shù)據(jù)控件。
(2) ADO數(shù)據(jù)控件的基本屬性
屬性名
|
作用
|
ConnectionString
|
用來與數(shù)據(jù)庫建立連接,它包括4個參數(shù):
Provide——指定數(shù)據(jù)源的名稱
FileName——指定數(shù)據(jù)源所對應(yīng)的文件名
RemoteProvide——在遠程數(shù)據(jù)服務(wù)器打開一個客戶端時所用的數(shù)據(jù)源名稱
RemoteServer——在遠程數(shù)據(jù)服務(wù)器打開一個主機端時所用的數(shù)據(jù)源名稱
|
RecordSource
|
確定具體可訪問的數(shù)據(jù),可以是數(shù)據(jù)庫中的單個表名、一個存儲查詢或一個SQL查詢字符串
|
ConnectionTimeout
|
設(shè)置數(shù)據(jù)連接的超時時間,若在指定時間內(nèi)連接不成功則顯示超時信息
|
MaxRecords
|
確定從一個查詢中最多能返回的記錄數(shù)
|
(3) ADO數(shù)據(jù)控件的屬性設(shè)置
1)先在窗體上放置一個ADO數(shù)據(jù)控件
2)在ADO屬性窗口中單擊ConnectionString屬性右邊的…按鈕,從對話框中選擇連接數(shù)據(jù)源的方式:
使用連接字符串——單擊“生成”按鈕,通過選項設(shè)置系統(tǒng)自動產(chǎn)生連接字符串
使用Data
Link文件——通過一個連接文件來完成
使用ODBC數(shù)據(jù)資源名稱——在下拉列表中選擇某個創(chuàng)建好的數(shù)據(jù)源名稱作為數(shù)據(jù)來源對遠程數(shù)據(jù)庫進行控制。
3)在ADO屬性窗口中單擊RecordSource屬性右邊的…按鈕,在“命令類型”中選擇2——adCmdTable,在“表或存儲過程名稱”中選擇所需要的表。
以上2)、3)可以合并成一步:在ADO控件上單擊右鍵,從快捷菜單中選擇ADODC屬性,直接在屬性頁對話框中進行所有設(shè)置。
(4) ADO數(shù)據(jù)控件的方法和事件
與Data數(shù)據(jù)控件完全相同。
(5) 在ADO上新增綁定控件
可以從“工程”的“部件”中添加如下綁定控件:
控件名稱
|
部件名稱
|
常用屬性
|
DataGrid
|
Microsoft DataGrid Control
6.0(OLE DB)
|
DataSource
|
DataCombo
|
Microsoft DataList Controls
6.0(OLE DB)
|
DataField、DataSource、ListField、RowSource、BoundColumn
|
DataList
|
MSChart
|
Microsoft Chart Control
6.0(OLE DB)
|
DataSource
|
3. 使用數(shù)據(jù)窗體向?qū)?/span>
從“外接程序”菜單中選擇“外接程序管理器”,在對話框中選中VB6數(shù)據(jù)窗體向?qū)В?#8220;加載”并“確定”,再從“外接程序”菜單中選擇“數(shù)據(jù)窗體向?qū)?#8221;,然后根據(jù)系統(tǒng)提示逐步操作即可創(chuàng)建所需要的數(shù)據(jù)窗體,系統(tǒng)自動把所創(chuàng)建的窗體加到工程中。
9.5
結(jié)構(gòu)化查詢語言
1.SQL的基本組成
SQL語言由命令、子句、運算、函數(shù)等組成:
(1) SQL命令
命令
|
功能
|
CREATE
|
用于建立新的數(shù)據(jù)表結(jié)構(gòu)
|
DROP
|
用于刪除數(shù)據(jù)庫中的數(shù)據(jù)表及其索引
|
ALTER
|
用于修改數(shù)據(jù)表結(jié)構(gòu)
|
SELECT
|
用于查找符合特定條件的某些記錄
|
INSERT
|
用于向數(shù)據(jù)表中加入數(shù)據(jù)
|
UPDATE
|
用于更新特定記錄或字段的數(shù)據(jù)
|
DELETE
|
用于刪除記錄
|
(2) SQL子句
子句
|
功能
|
FROM
|
用于指定數(shù)據(jù)所在的數(shù)據(jù)表
|
WHERE
|
用于指定數(shù)據(jù)需要滿足的條件
|
GROUP BY
|
將選定的記錄分組
|
HAVING
|
用于說明每個群組需要滿足的條件
|
ORDER BY
|
用于確定排序依據(jù)
|
INTO
|
查詢結(jié)果去向
|
(3) SQL運算符
邏輯運算符
|
And (與)、 Or(或)、
Not(非)
|
比較運算符
|
< <=
> >= =
<>
|
(4) SQL函數(shù)
AVG
|
COUNT
|
SUM
|
MAX
|
MIN
|
求平均值
|
計數(shù)
|
求和
|
求最大值
|
求最小值
|
2. SQL語句的應(yīng)用
語句功能
|
語法格式
|
建立數(shù)據(jù)表
|
CREATE TABLE 數(shù)據(jù)表名
(字段名1
數(shù)據(jù)類型(長度), 字段名2
數(shù)據(jù)類型(長度),……)
舉例:create table student(xh text(9),
xm text(8) , cj single(4), nl integer(2))
建立含有xh、xm、cj、nl 4個字段的student表
|
添加字段
|
ALTER
TABLE 數(shù)據(jù)表名 ADD COLUMN 字段名
數(shù)據(jù)類型(長度)
舉例:alter table student add column
xb text(2) '在學(xué)生表中添加性別字段
|
刪除字段
|
ALTER
TABLE 數(shù)據(jù)表名 DROP COLUMN 字段名
舉例: alter table student drop
column nl '將學(xué)生表中的年齡字段刪除
|
數(shù)據(jù)查詢
|
SELECT 字段名表 FROM 子句 WHERE 子句 GROUP BY
子句HAVING 子句 ORDER BY 子句 INTO 子句
舉例:select xh, xm from student
where xb="男" order by xh
從學(xué)生表中查詢性別為男的學(xué)生,顯示其學(xué)號和姓名并使結(jié)果按學(xué)號升序排列。
|
添加記錄
|
INSERT INTO 數(shù)據(jù)表名(字段名1,字段名2……) VALUES(數(shù)據(jù)1,數(shù)據(jù)2……)
舉例:insert into student (xh, xm, xb)
values("015200101", "王小二", "男")
|
刪除記錄
|
DELETE FROM 數(shù)據(jù)表名
WHERE 條件表達式
舉例:delete from student where
xb="男"
|
更新記錄
|
UPDATE 數(shù)據(jù)表名 SET 新數(shù)據(jù)值 WHERE 條件表達式
舉例:update student set cj=cj+5
where xb="女"
|
9.6
報表制作
1. 報表的概念
利用報表可以把數(shù)據(jù)表中的數(shù)據(jù)按一定的格式輸出到屏幕上或打印到紙上。
2. 制作報表的方法
在VB6.0中可以利用報表設(shè)計器來制作報表,從“工程”中選擇“添加data report”,將報表設(shè)計器加入到當前工程中,報表由5部分組成:
報表標頭——每份報表只有一個,可以用標簽建立報表名。
頁標頭——每頁有一個,即每頁的表頭,如字段名。
細節(jié)——需要輸出的具體數(shù)據(jù),一行一條記錄。
頁腳注——每頁有一個,如頁碼。
報表腳注——每份報表只有一個,可以用標簽建立對本報表的注釋、說明。
使用報表設(shè)計器處理的數(shù)據(jù)需要利用數(shù)據(jù)環(huán)境設(shè)計器創(chuàng)建與數(shù)據(jù)庫的連接, 從“工程”菜單中選擇 “添加Data Enviroment”,在連接中選擇指定的數(shù)據(jù)庫文件,完成與數(shù)據(jù)庫的連接,然后產(chǎn)生Command對象連接數(shù)據(jù)庫內(nèi)的表。
制作報表的步驟:
(1) 新建工程,在窗體上放置兩個命令按鈕;
(2) 從“工程”菜單中“添加Data Enviroment”,右擊Connection1,在屬性中選擇“Microsoft Jet
4 OLE DB Provider”,在“連接”中指定數(shù)據(jù)庫;
(3) 再次右擊Connection1,選則“添加命令”,創(chuàng)建Command1對象,右擊Command1,在屬性中設(shè)置該對象連接的數(shù)據(jù)源為需要打印的數(shù)據(jù)表;
(4) 在從“工程”菜單中“添加Data Report”,在屬性窗口中設(shè)置DataSource為數(shù)據(jù)環(huán)境DataEnviroment1對象,DataMember為Command1對象,即指定數(shù)據(jù)報表設(shè)計器DataReport1的數(shù)據(jù)來源;
(5) 將數(shù)據(jù)環(huán)境設(shè)計器中Command1對象內(nèi)的字段拖到數(shù)據(jù)報表設(shè)計器的細節(jié)區(qū);
(6) 利用標簽控件在報表標頭區(qū)插入報表名,在頁標頭區(qū)設(shè)置報表每一頁頂部的標題;
(7) 利用線條控件在報表內(nèi)加入直線,利用圖形控件和形狀控件加入圖案或圖形;
(8) 利用DataReport1對象的Show方法顯示報表,在窗體Click事件加代碼:DataReport1.Show;
(9) 利用預(yù)覽窗口按打印按鈕可以打印報表;
(10) 利用預(yù)覽窗口工具欄上的導(dǎo)出按鈕可以將報表內(nèi)容輸出成文本文件或Html文件;也可以利用DataReport1對象的ExportReport方法將報表內(nèi)容輸出成文本文件或Html文件。
制作報表的簡單方法是從“外接程序”中選擇報表向?qū)碓O(shè)計報表。
9.7
MIS系統(tǒng)設(shè)計示例
學(xué)生成績管理系統(tǒng)的設(shè)計
1. 建立工程文件
2. 設(shè)計系統(tǒng)主界面,驗證用戶身份
3. 建立Access數(shù)據(jù)庫,輸入若干記錄
4. 設(shè)計帶菜單的主窗體,把其他窗體組織起來
5. 根據(jù)需要完成系統(tǒng)功能,設(shè)計帶數(shù)據(jù)控件的各種窗體
6. 調(diào)試、修改
7. 生成EXE文件