Visual Basic 程 式 設 計 資 料 庫 資 料 庫 基 本 觀 念 簡 介 資 料 表 建 立 資 料 庫 元 件 及 資 料 感 知 元 件 使 用
基 本 觀 念 資 料 庫 (database): 一 群 相 關 的 資 料 (data) 資 料 庫 管 理 系 統 : 用 來 維 護 管 理 資 料 庫 的 軟 體 Access SQL Server MySQL 應 用 程 式 資 料 庫 管 理 系 統 資 料 庫 2
關 聯 式 資 料 庫 (Relational Database) 目 前 最 常 用 的 資 料 庫 形 式 兩 大 元 素 表 格 (table) 關 聯 (relation) 3
表 格 (table) Table:Employee Schema Row 代 號 姓 名 部 門 薪 資 部 門 位 置 00001 李 小 輝 A001 10000 台 北 00002 連 阿 戰 A001 8000 台 北 00003 陳 阿 扁 A002 11000 高 雄 Primary Key Column 4
表 格 (cont.) Row: 又 稱 record 一 筆 記 錄 Column: 又 稱 attribute 欄 位 Primary key: 用 來 區 分 不 同 的 記 錄 代 碼 身 份 證 號 碼 Schema: 用 來 描 述 每 個 欄 位 的 規 格 字 元 數 字 可 否 重 覆 5
表 格 (cont.) Universal table: 把 所 有 的 東 西 都 放 在 同 一 個 表 格 中 代 碼 姓 名 姓 別 住 址 電 話 部 門 部 門 位 置 缺 點 : 資 料 重 覆 量 大 更 新 速 度 慢 部 門 電 話 6
正 規 化 (Normalization) 將 相 關 的 欄 位 組 成 一 個 table 代 碼 姓 名 姓 別 住 址 電 話 部 門 1 部 門 部 門 位 置 部 門 電 話 相 關 的 表 格 用 關 聯 (relation) 連 接 相 連 的 表 格 有 數 量 對 應 關 係 7
Visual Basic 程 式 設 計 資 料 庫 資 料 庫 基 本 觀 念 簡 介 資 料 表 建 立 資 料 庫 元 件 及 資 料 感 知 元 件 使 用
資 料 庫 與 資 料 表 一 個 Access 資 料 庫 (Database) 是 由 一 個 或 多 個 資 料 表 (Table) 所 組 成 而 每 個 資 料 表 又 由 一 些 相 關 的 資 料 欄 (Data Field) 組 成, 每 個 資 料 欄 都 配 合 要 存 放 的 資 料 性 質 與 大 小, 而 有 其 資 料 型 態 (Data Type), 如 下 : 9
建 立 資 料 庫 10
建 立 資 料 庫 (cont.) 1. 執 行 增 益 集 / 資 料 庫 管 理 員 指 令 11
建 立 資 料 庫 (cont.) 2. 出 現 資 料 庫 管 理 員 視 窗, 再 執 行 檔 案 / 新 增 /Microsoft Access/Version 7.0MDB 指 令 12
建 立 資 料 庫 (cont.) 3. 出 現 下 圖 的 對 話 方 塊, 再 在 儲 存 於 方 塊 選 取 ( 或 新 增 ) 要 建 立 資 料 庫 的 資 料 夾, 及 在 檔 案 名 稱 方 塊 輸 入 要 建 立 的 資 料 庫 名 稱, 如 下 : 13
建 立 資 料 庫 (cont.) 4. 按 鈕, 就 在 指 定 的 資 料 夾 內 建 立 了 student.mdb, 出 現 如 下 的 視 窗 : 5. 如 果 不 要 馬 上 建 立 資 料 表, 可 執 行 檔 案 / 離 開 指 令, 關 閉 上 面 的 視 窗 如 果 要 馬 上 建 立 資 料 表, 可 直 接 跳 到 下 一 節 的 步 驟 4 14
建 立 資 料 表 假 設 要 利 用 VB, 在 上 一 節 建 立 的 student.mdb 資 料 庫 中 建 立 資 料 表 basic, 其 步 驟 如 下 : 1. 執 行 增 益 集 / 資 料 庫 管 理 員 指 令, 出 現 資 料 庫 管 理 員 視 窗, 再 執 行 檔 案 / 開 啟 資 料 庫 /Microsoft Access 指 令 15
建 立 資 料 表 (cont.) 2. 開 啟 如 下 的 對 話 方 塊, 選 取 資 料 庫 所 在 的 資 料 夾 與 資 料 庫 名 稱 後, 再 按 鈕 16
建 立 資 料 表 (cont.) 3. 開 啟 如 下 的 對 話 方 塊, 在 資 料 庫 視 窗 內 按 滑 鼠 右 鍵, 再 執 行 快 顯 功 能 表 中 的 新 增 資 料 表 指 令 17
建 立 資 料 表 (cont.) 4. 出 現 如 下 的 資 料 表 結 構 對 話 方 塊, 就 可 建 立 資 料 表 假 如 要 建 立 資 料 表 basic, 可 在 資 料 表 名 稱 方 塊 輸 入 basic 後, 再 按 鈕 18
建 立 資 料 表 (cont.) 5. 出 現 如 下 的 新 增 資 料 欄 對 話 方 塊, 再 輸 入 第 一 個 資 料 欄 的 名 稱 型 態 與 大 小, 然 後 按 確 定 鈕 19
建 立 資 料 表 (cont.) 說 明 拉 下 型 態 的 列 示 方 塊, 便 可 選 用 所 要 的 資 料 型 態, 如 下 : 20
建 立 資 料 表 (cont.) 6. 再 如 上 一 步 驟, 依 序 輸 入 如 下 表 的 第 2 3 4 個 資 料 欄 的 名 稱 型 態 與 大 小 : 項 目 資 料 欄 名 稱 資 料 型 態 大 小 資 料 欄 1: 學 號 number Text 5 Bytes 資 料 欄 2: 姓 名 name Text 8 Bytes 資 料 欄 3: 地 址 address Text 30 Bytes 資 料 欄 4: 電 話 號 碼 tel Text 8 Bytes 21
建 立 資 料 表 (cont.) 最 後 按 鈕, 就 關 閉 新 增 資 料 欄 方 塊, 回 到 資 料 表 結 構 方 塊, 如 下 : 22
建 立 資 料 表 (cont.) 7. 按 鈕, 就 完 成 資 料 表 basic 的 建 立, 再 回 到 資 料 庫 管 理 員 視 窗 23
建 立 資 料 表 (cont.) 8. 重 覆 步 驟 3~7, 再 新 增 資 料 表 score 及 其 內 的 資 料 欄 如 下 : 項 目 資 料 欄 名 稱 資 料 型 態 大 小 資 料 欄 1: 學 號 number Text 5 Bytes 資 料 欄 2: 國 文 成 績 資 料 欄 3: 英 文 成 績 chinese Integer 2 Bytes english Integer 2 Bytes 24
建 立 資 料 表 (cont.) 完 成 後, 資 料 庫 視 窗 的 內 容 如 下 : 您 也 可 以 使 用 Microsoft Access 或 其 他 資 料 庫 軟 體 建 立 資 料 庫 以 及 資 料 表 25
在 資 料 表 輸 入 資 料 記 錄 建 立 資 料 表 後, 就 可 以 輸 入 資 料 記 錄 (Data Record) 的 內 容, 其 方 法 有 二 : 一 直 接 利 用 資 料 管 理 員 來 輸 入 資 料 記 錄 ( 不 必 設 計 程 式 ) 二 另 外 設 計 程 式, 用 來 輸 入 資 料 記 錄 的 內 容 我 們 先 介 紹 第 一 種 方 法, 利 用 資 料 管 理 員 輸 入 basic 資 料 表 的 資 料 記 錄 ( 如 下 表 ), 其 步 驟 如 下 : 26
在 資 料 表 輸 入 資 料 記 錄 (cont.) Number ( 學 號 ) Name ( 姓 名 ) Address ( 地 址 ) Tel ( 電 話 號 碼 ) 92001 許 一 台 北 市 北 投 區 一 德 街 100 號 92920001 92002 陳 二 永 和 市 二 水 路 78 號 2F 92920002 92003 張 三 三 重 市 三 重 路 167 號 5F 92920003 92004 李 四 中 和 市 四 平 街 67 號 3F 92920004 92005 王 五 台 北 市 五 常 街 60 號 2F 92920005 27
在 資 料 表 輸 入 資 料 記 錄 (cont.) 1. 在 資 料 庫 視 窗 的 資 料 表 名 稱 basic 上, 連 按 兩 下 滑 鼠 左 鍵, 開 啟 其 對 話 方 塊, 如 下 : 28
在 資 料 表 輸 入 資 料 記 錄 (cont.) 2. 按 鈕 後, 就 出 現 如 下 的 方 塊, 輸 入 第 一 筆 記 錄 的 各 項 資 料 後, 再 按 鈕 3. 仿 照 上 一 步 驟, 再 依 序 輸 入 第 2~5 筆 記 錄 的 資 料, 完 成 後 再 按 鈕, 結 束 資 料 記 錄 的 輸 入 工 作 最 後 再 建 立 score 資 料 記 錄 29
操 作 補 充 說 明 30
Visual Basic 程 式 設 計 資 料 庫 資 料 庫 基 本 觀 念 簡 介 資 料 表 建 立 資 料 庫 元 件 及 資 料 感 知 元 件 使 用
使 用 資 料 庫 元 件 一 般 控 制 項 Data 資 料 感 知 元 件 Text Label 網 路 連 線 Text 資 料 控 制 項 ListBox 記 錄 查 詢 / 讀 取 Database 常 用 SQL 32
ADO 與 資 料 庫 ADO 是 Active Data Objects 的 縮 寫, 是 Microsoft 公 司 制 定 的 資 料 庫 連 結 架 構, 作 為 應 用 程 式 與 資 料 來 源 之 間 的 溝 通 橋 樑, 可 提 供 應 用 程 式 存 取 資 料 庫 中 的 資 料 之 介 面, 其 情 況 如 下 圖 : 33
資 料 控 制 項 元 件 (Data control) VB 的 工 具 箱 中 有 個 資 料 (Data) 控 制 項, 可 用 來 連 結 資 料 庫 中 的 資 料 表, 以 便 於 顯 示 或 修 改 其 中 的 資 料 34
資 料 控 制 項 元 件 (cont.) 說 明 一 個 表 單 上 可 以 安 置 多 個 資 料 控 制 項, 其 預 設 的 物 件 名 稱 與 標 題 都 依 序 為 Data1 Data2 Data3 也 可 以 在 屬 性 視 窗 中 的 Name 屬 性 更 改 物 件 名 稱 ( 標 準 字 首 為 ado), 及 在 Caption 屬 性 更 改 標 題, 如 更 改 標 題 為 基 本 資 料 檔, 如 下 : 35
資 料 控 制 項 常 用 的 屬 性 屬 性 說 明 預 設 值 Caption( 標 題 ) 資 料 控 制 項 的 標 題, 是 預 設 的 屬 性 Data1 DatabaseName ( 資 料 庫 名 稱 ) 設 定 資 料 控 制 項 所 連 結 的 資 料 庫 之 路 徑 與 名 稱 RecordSource ( 記 錄 來 源 ) 設 定 資 料 控 制 項 所 連 結 的 資 料 表 之 名 稱 ReadOnly ( 唯 讀 ) 設 定 資 料 表 內 的 資 料 是 否 不 能 修 改 : True- 只 能 讀 取, 不 能 修 改 False- 可 以 讀 取, 也 可 以 修 改 False Connect( 連 接 ) 設 定 要 連 結 的 資 料 庫 種 類 ( 含 版 次 ) Access Exclusive ( 封 閉 ) 設 定 連 結 的 資 料 庫 是 否 不 能 被 同 時 共 用 :True- 不 能 被 同 時 共 用 ( 只 能 有 一 個 使 用 者 ) False- 可 有 多 個 使 用 者 同 時 共 用 False 36
資 料 感 知 (Data Aware) 控 制 項 與 資 料 表 內 容 的 連 結 可 以 安 排 在 表 單 中, 具 有 資 料 連 結 功 能 的 控 制 項, 就 稱 為 資 料 感 知 (Data Aware) 控 制 項, 如 文 字 方 塊 標 籤 核 取 方 塊 清 單 方 塊 下 拉 式 清 單 方 塊 圖 片 方 塊 及 影 像 等 都 是 37
資 料 感 知 (Data Aware) 控 制 項 與 資 料 表 內 容 的 連 結 (cont.) 通 常 利 用 資 料 控 制 項 連 結 資 料 庫 時, 要 同 時 在 表 單 中 安 排 資 料 感 知 控 制 項, 來 顯 示 資 料 表 中 對 應 記 錄 的 資 料 欄 之 內 容 此 時, 其 DataSource 與 DataField 兩 個 屬 性 的 設 定 如 下 : 38
資 料 庫 與 資 料 感 知 元 件 之 使 用 請 使 用 Data 元 件 與 資 料 感 知 元 件 完 成 下 列 表 單 程 式 : 39
資 料 庫 與 資 料 感 知 元 件 之 使 用 (cont.) 選 取 資 料 控 制 項, 然 後 在 屬 性 視 窗 中 點 選 DatabaseName 視 窗, 再 在 屬 性 值 欄 按 一 下 鈕 並 選 取 剛 剛 建 立 的 student.mdb 40
資 料 庫 與 資 料 感 知 元 件 之 使 用 (cont.) Data 元 件 相 關 設 定 RecordType 設 定 為 0- 資 料 表 (Table) RecordSource 選 取 basic 資 料 表 資 料 感 資 元 件 (Text) 相 關 設 定 DataSource 選 取 Data1 並 且 設 定 相 對 應 的 DataField 41
執 行 結 果 上 述 表 單 設 計 完 成 後 ( 不 必 設 計 程 式 碼 ), 開 始 執 行 程 式, 就 會 在 對 應 的 文 字 方 塊 顯 示 第 一 筆 記 錄 的 內 容, 如 下 : 42
資 料 控 制 項 常 用 的 方 法 (cont.) 使 用 一 般 資 料 檔 或 資 料 庫 時, 基 本 的 功 能 要 包 括 新 增 (Insert) 更 新 (Update) 修 改 (Replace) 與 刪 除 (Delete) 接 下 來 我 們 要 介 紹 達 成 上 述 基 本 功 能 的 方 法, 可 直 接 存 取 資 料 庫, 自 資 料 表 讀 出 資 料, 及 將 資 料 寫 入 資 料 表 中 43
一 新 增 資 料 記 錄 用 法 : 資 料 控 制 項 名 稱.Recordset.AddNew 功 能 : 將 記 錄 指 標 移 到 資 料 庫 的 最 後, 並 新 增 一 筆 空 白 記 錄 說 明 : 1. 使 用 此 方 法 後, 該 記 錄 是 空 白 的 要 接 著 將 資 料 放 置 到 資 料 控 制 項 中 對 應 的 資 料 欄, 然 後 利 用 Update 方 法, 將 資 料 寫 入 新 增 的 記 錄 中 2. 要 將 資 料 放 置 到 資 料 控 制 項 中 對 應 的 資 料 欄, 就 像 針 對 一 般 的 變 數 一 樣, 但 是 其 格 式 為 : 資 料 控 制 項 名 稱.Recordset(" 資 料 欄 名 稱 ") 例 如, 要 將 文 字 方 塊 Text1 的 內 容 放 置 到 資 料 控 制 項 Data1 的 資 料 欄 number 中, 其 用 法 如 下 : Data1.Recordset("number")=Text1.Text 44
資 料 控 制 項 常 用 的 方 法 (cont.) 二 編 輯 資 料 記 錄 用 法 : 資 料 控 制 項 名 稱.Recordset.Edit 功 能 : 編 輯 ( 修 改 ) 目 前 記 錄 指 標 所 在 的 記 錄 之 內 容 說 明 : 使 用 此 方 法 後, 要 接 著 將 資 料 放 置 到 資 料 控 制 項 中 對 應 的 資 料 欄, 然 後 利 用 Update 方 法 ( 如 上 一 項 的 說 明 2), 將 資 料 寫 入 該 筆 記 錄 中 45
三 更 新 資 料 記 錄 用 法 : 資 料 控 制 項 名 稱.Recordset.Update 功 能 : 將 新 增 或 修 改 的 資 料 實 際 寫 進 資 料 庫 中 的 說 明 : 對 應 記 錄 1. 要 執 行 此 方 法, 資 料 控 制 項 的 ReadOnly 屬 性 必 須 設 定 為 False 2. 如 果 執 行 此 方 法 後, 要 取 消 更 新 功 能 ( 即 回 復 更 新 前 的 狀 況 ), 可 使 用 UpdateControls 方 法, 其 用 法 如 下 : 資 料 控 制 項 名 稱.Recordset.UpdateControls 46
新 增 記 錄 到 學 生 基 本 資 料 表 單 設 計 47
48
程 式 碼 01 Private Sub cmdadd_click() 02 Data1.Recordset.AddNew ' 新 增 一 筆 空 白 記 錄 03 Data1.Recordset("number") = Left(Text1, 5) ' 取 左 邊 5 個 字 元 04 Data1.Recordset("name") = Text2 05 Data1.Recordset("address") = Text3 06 Data1.Recordset("tel") = Left(Text4, 8) ' 取 左 邊 8 個 字 元 07 Data1.Recordset.Update ' 將 資 料 寫 進 新 增 的 記 錄 中 08 MsgBox " 已 完 成 新 增 紀 錄 ", vbokonly, " 新 增 紀 錄 " 09 Text1 = "": Text2 = "": Text3 = "": Text4 = "" _ ' 將 文 字 方 塊 清 成 空 白 10 Text1.SetFocus ' 設 定 Text1 為 輸 入 焦 點, 準 備 再 輸 入 下 一 筆 資 料 11 End Sub 12 Private Sub cmdend_click() 13 End 14 End Sub 49
資 料 控 制 項 常 用 的 方 法 (cont.) 四 刪 除 資 料 記 錄 用 法 : 資 料 控 制 項 名 稱.Recordset.Delete 功 能 : 直 接 刪 除 資 料 表 中 目 前 記 錄 指 標 所 在 的 一 筆 記 錄 說 明 : 使 用 此 方 法, 會 直 接 刪 除 掉, 不 必 再 用 Update 方 法 來 更 新 50
五 查 詢 資 料 記 錄 用 法 : 資 料 控 制 項 名 稱.Recordset.Find 方 法 " 條 件 式 " 功 能 : 1.Find 方 法 包 括 下 列 四 種 : FindFirst 找 出 符 合 條 件 的 第 一 筆 記 錄 FindPrevious 找 出 符 合 條 件 的 前 一 筆 記 錄 FindNext 找 出 符 合 條 件 的 下 一 筆 記 錄 FindLast 找 出 符 合 條 件 的 最 後 一 筆 記 錄 2. 條 件 式 一 定 要 加 前 後 的 雙 引 號, 其 中 用 到 字 串 常 數 的 前 後 要 加 單 引 號 3. 找 到 時, 記 錄 指 標 會 停 在 該 筆 記 錄 上 如 果 找 不 到, Nomatch 屬 性 會 傳 回 True 值 4. 如 果 資 料 表 中 有 多 筆 記 錄 符 合 條 件, 可 利 用 迴 圈 來 處 理 51
在 資 料 控 制 項 Data1 所 連 結 的 資 料 表 中, 找 尋 學 號 為 92003 的 第 一 筆 記 錄, 其 用 法 如 下 : Data1.Recordset.FindFirst "number='92003'" 如 果 找 不 到 該 記 錄,Data1.Recordset.Nomatch 會 傳 回 True 值, 所 以 可 接 著 做 如 下 的 判 斷 與 動 作 : If Data1.Recordset.Nomatch then MsgBox " 找 不 到 資 料 " Else MsgBox " 找 到 資 料 了 " EndIf 52
資 料 控 制 項 常 用 的 方 法 (cont.) 如 果 條 件 式 中 的 欄 位 值 用 變 數 來 表 示, 可 使 用 如 下 : Try it! 請 新 增 一 個 Text 與 Command 撰 寫 查 詢 功 能 53
六 移 動 記 錄 指 標 用 法 : 資 料 控 制 項 名 稱.Recordset.Move 方 法 功 能 : Move 方 法 包 括 下 列 四 種 : MoveFirst 將 指 標 移 到 第 一 筆 記 錄 MovePrevious 將 指 標 移 到 前 一 筆 記 錄 MoveNext 將 指 標 移 到 下 一 筆 記 錄 MoveLast 將 指 標 移 到 最 後 一 筆 記 錄 說 明 1. 資 料 集 (Recordset) 由 資 料 記 錄 (Record) 組 成, 最 前 面 有 個 檔 案 開 始 標 記 (BOF,Begin Of File), 最 後 面 有 個 檔 案 結 束 標 記 (EOF,End Of File), 如 有 n 筆 記 錄 的 情 況 如 下 圖 : 54
2. 要 修 改 或 刪 除 某 一 筆 記 錄 的 內 容 時, 可 先 利 用 Find 或 Move 方 法, 將 記 錄 指 標 移 到 該 筆 記 錄 的 位 置 3. 如 果 記 錄 指 標 已 經 在 EOF, 就 不 能 再 往 後 移 動 ( 不 能 用 MoveNext) 同 樣, 如 果 記 錄 指 標 已 經 在 BOF, 就 不 能 再 往 前 移 動 ( 不 能 用 MovePrevious) 4. BOF 與 EOF 也 是 Recordset 的 屬 性, 其 屬 性 值 為 True 或 False, 組 合 情 況 如 下 : 55
例 假 如 記 錄 指 標 不 在 BOF, 就 往 前 移 動 一 筆 記 錄 If Not Data1.Recordset.BOF Then _ Data1.Recordset.MovePrevious 例 假 如 記 錄 指 標 不 在 EOF, 就 往 後 移 動 一 筆 記 錄 If Not Data1.Recordset.EOF Then _ Data1.Recordset.MoveNext 例 資 料 集 中 沒 有 資 料 If Data1.Recordset.BOF And _ Data1.Recordset.EOF Then Label5=" 空 資 料 集 " 56
七 取 得 資 料 集 的 總 筆 數 與 總 資 料 欄 數 用 法 與 功 能 : 資 料 控 制 項 名 稱.Recordset.RecordCount 傳 回 資 料 表 中 記 錄 的 總 筆 數 資 料 控 制 項 名 稱.Recordset.Fields.Count 傳 回 資 料 表 的 總 欄 位 數 說 明 : 資 料 表 的 記 錄 指 標 移 動 後,RecordCount 屬 性 才 會 開 始 記 錄 總 筆 數 57
八 關 閉 資 料 表 用 法 : 資 料 控 制 項 名 稱.Recordset.Close 功 能 : 關 閉 所 連 結 的 資 料 表, 並 將 佔 用 的 系 統 資 源 釋 放 出 來 說 明 : 1. 執 行 程 式 碼 的 End 與 Unload 敍 述 時, 都 會 自 動 關 閉 資 料 表 2. 資 料 表 被 關 閉 後, 如 果 要 再 關 閉 資 料 表, 會 發 生 執 行 錯 誤 的 狀 況 例 關 閉 資 料 控 制 項 Data1 所 連 結 的 資 料 表 Data1.Recordset.Close 58
綜 合 應 用 - 移 動 更 新 與 刪 除 記 錄 59
60
61
62
期 末 程 式 作 業 請 撰 寫 下 列 表 單 程 式, 將 資 料 表 basic 及 score 相 對 應, 顯 示 每 個 學 生 之 各 項 成 績 及 平 均 成 績 最 後 在 表 單 右 邊 統 計 全 班 總 成 績, 並 且 依 平 均 成 績 及 格 與 否 繪 製 成 績 圖 餅 圖 註 : 此 份 作 業 請 依 公 告 之 作 業 繳 交 說 明 完 成 63
使 用 ADO 元 件 新 增 控 制 項 Microsoft ADO Data Control 6.0 Adodc Microsoft DataGrid Control 6.0 DataGrid 按 選 單 的 project ->component 64
Adodc 按 右 鍵 ADOCD 屬 性 65
Adoce 工 具 出 現 兩 個 新 的 控 制 項 按 一 下 adoce 控 制 項 66
Adodc (cont.) 提 供 者 Microsoft Jet 4.0 OLE DB Provider 連 接 選 擇 資 料 庫 67
Adodc (cont.) 查 取 表 格 : 修 改 RecordSource CommandType=2- adcmdtable Table=Authors 下 指 令 查 詢 : 修 改 RecordSource CommandType=1.adCmd Text CommandText:SQL 指 令 設 定 資 料 來 源 是 哪 一 個 表 格 68
DataGrid 新 增 資 料 感 知 元 件 新 增 data grid 控 制 項 Adodc 的 caption 69
DataGrid 設 定 資 料 感 知 元 件 DataSource= 資 料 控 制 項 Ex. 設 定 data grid 的 屬 性 DataSource=adodc1 Adodc 的 caption 70
DataGrid (cont.) Data Grid 進 階 設 定 Delete/Insert: 刪 除 增 加 顯 示 的 欄 位 滑 鼠 在 datagrid 上 按 右 鍵 切 割 71
DataGrid (cont.) Data Grid 切 割 72
DataGrid (cont.) Retrieve Fields: 依 資 料 庫 內 容 決 定 欄 位 73
其 他 可 和 acodc1 配 合 使 用 的 控 制 項 使 用 資 料 感 知 元 件 Text Label DataSource DataField DataList DataCombo RowSource ListField 74
Exercise 讀 取 學 生 基 本 資 料 表 1. 新 增 學 生 基 本 資 料 的 mdb 檔 2. 從 mdb 檔 讀 取 所 有 學 生 資 料 表, 顯 示 在 form 上 3. Go!! 75
這 樣 就 夠 了 嗎? 如 果 我 只 列 出 要 一 部 份 符 合 條 件 的 資 料 怎 麼 辦? 76
Structured Query Language 資 料 庫 存 取 的 標 準 語 言 有 些 資 料 庫 管 理 系 統 使 用 修 改 過 的 SQL Select 欄 位 名 [, 欄 位 名 ] From 表 格 名 例 Select Author From Authors Select Author From Authors 77
SQL (cont.) 在 adodc 中 SQL 命 令 RecordSource=1-adCmdText CommandText=select author from authors 78
SQL (cont.) 所 得 的 結 果 存 在 adodc 的 recordset 中 條 件 式 select: 使 用 where Select Au_ID, Author From Authors Where Au_ID>100 可 搭 配 AND, OR 使 用 Select Au_ID, Author From Authors Where AuID>100 AND Au_ID<200 79
SQL (cont.) Like: 相 似 字 串 Select Au_ID, Author From Authors Where Author Like A% Like 後 面 的 字 串 樣 板 用 單 引 號 括 起 來 % 代 表 任 意 字 元 80
動 態 產 生 執 行 SQL Adodc.recordsource= SQL 語 法 Adodc.refresh 為 了 美 觀, adodc1 的 visible 可 設 為 false 81
Private Sub Command1_Click() Dim min, max As Integer Dim name As String Dim sqlcmd As String min = Int(Text1.Text) max = Int(Text2.Text) name = Text3.Text sqlcmd = "select au_id, author + _ from authors " + _ "where (au_id>=" + Str(min) + _ " and au_id<=" + Str(max) + ") + _ and author like ('" + name + "')" Adodc1.RecordSource = sqlcmd Adodc1.Refresh End Sub 82
動 態 產 生 執 行 SQL (cont.) Select au_id, author From authors Where (au_id>=1 and au_id<=100) and author Like b% Select au_id, author + _ From authors + _ Where (au_id>=1 and + au_id<=100) and + _ author Like b% 83
動 態 產 生 執 行 SQL (cont.) Select au_id, author + _ From authors + _ Where (au_id>= +str(min)+ and + _ au_id<= +str(max)+ ) and + _ author Like +name+ 84
ODBC 與 專 業 資 料 庫 使 用 ODBC 可 以 讓 程 式 設 計 師 不 去 理 會 資 料 庫 的 位 置 形 態 在 那 個 server 是 Oracle, SQL Server 或 是 Access 資 料 庫 控 制 項 ODBC 資 料 庫 85
ODBC 與 資 料 庫 (cont.) 專 業 資 料 庫 (Lock, Cache, Backup) SQL Server, Oracle 常 有 獨 立 的 伺 服 器 效 能 較 好, 功 能 較 強 一 般 資 料 庫 Access, FoxPro 只 定 義 檔 格 式 執 行 SQL 的 方 式 不 同 86
使 用 專 業 資 料 庫 87
使 用 專 業 資 料 庫 (cont.) 88
使 用 ODBC (cont.) 控 制 台 ODBC 資 料 來 源 89
90