| |
|
 |
|
|
Oracle 本身為伺服端(Server)
的資料庫系統,必須與使用者端(Client)
的應用軟体開發工具結合,才能發揮其強大的資料庫能力,目前市場上最常用的應用軟体開發工具,例如:VB,Delphi,PowerBuilder 與
Oracle 的 Form。Visual Basic 是 Microsoft 公司出品,非常適合開發各種系統,其中也包括 Oracle
前端的應用軟体。假設主機字串設定為 jp8i。連線方法有使用 ODBC、使用 Oracle Data Control 與 Microsoft
ADO Data Control。這�塈畯怳雯迣怮嶀@種方法。
|
 |
|
 |
執行VB
建議開始企業版控制項,然後點選開啟舊檔,如圖所示。 |
 |
在 VB 控制項中,選定
Adodc 元件,然後拖曳至表單中產生 Adodc 控制項,例如:Adodc1。 |
 |
在 Adodc
控制項上按右鍵並點選 ADODC 的屬性,然後在“一般”頁籤中點選“建立”。 |
 |
在“提供者”頁籤的 OLE
DB Provider 中點選“Microsoft OLE DB Provider for Oracle”並按“下一步”。 |
 |
假設事前已利用 Net8
Easy Config 設定好了伺服器
JP8i。在“連接”頁籤中鍵入伺服器的名稱,例如:JP8i,並輸入使用者名稱與密碼,例如:scott,並記得點選“允許儲存密碼”,設定好了就點選“測試連接”,看是否可以連線,如果連線成功,則系統會回覆“測試連接成功”,然後按“確定”離開。 |
 |
點選“資料錄來源”頁籤,其中命令類型可分為 (1) adCmdText:資料錄來源是由執行 SQL 指令所產生,(2)
adCmdTable:資料錄來源是一般的表格,(3) adCmdStoredProc:資料錄來源是 Stored
Procedure,(4) 資料錄來源是其他的格式檔案。我們以 adCmdText 與 adCmdTable 做為例子說明。
「adCmdText」例子:表示資料來源為 SQL 查詢結果。先在命令類型中點選 adCmdText 並且在命令文字中鍵入
SQL 指令,然後按“確定”即可。
「adCmdTable」例子:表示資料來源為資料庫中的表格。先在命令類型中點選 adCmdTable
並且在資料表中點選表格,例如:EMP,然後按“確定”即可。 |
 |
至目前為止,我們已完成了表單與
Oracle 主機連線的設定。 |
|
|
|
|
 |
|
|
VB 提供許多Data Aware
元件來顯示資料庫中的資料,例如:Text Box,Data Grid,Data Combo,Data list 等等元件,這章節我們介紹
Data Grid 。
|
 |
在 VB
控制項中,點選“DataGrid”元件,然後拖曳至表單中產生 DataGrid 控制項,例如:DataGrid1,並在其屬性中的
DataSource 欄位 (資料來源) 中點選 Adodc1。 |
 |
點選按鈕元件建立記錄操控控鈕,例如:第一筆、向上一筆、向下一筆、最後一筆、搜尋、結束。【第一筆】、【向上一筆】、【向下一筆】、【最後一筆】四種操控按鈕程式如下: |
 |
然後執行。 |
| |
|
|
|
Private Sub
Command11_Click(Index As Integer)
Const MOVE_FIRST = 0 '最前
Const MOVE_PREVIOUS = 1 '上一筆
Const MOVE_NEXT = 2 '下一筆
Const MOVE_LAST = 3 '最後
Select Case Index
Case MOVE_FIRST '移至最前
Adodc1.Recordset.MoveFirst
Case MOVE_PREVIOUS '移至上一筆
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then '是否過頭
Adodc1.Recordset.MoveFirst '移至最前
Beep '警告聲
MsgBox "這已是第一筆資料", vbOKOnly + vbExclamation, ""
Exit Sub
End If
Case MOVE_NEXT '移至下一筆
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then '是否至尾端
Adodc1.Recordset.MoveLast '移至最後
Beep '警告聲
MsgBox "這已是最後一筆資料", vbOKOnly + vbExclamation, ""
Exit Sub
End If
Case MOVE_LAST '移至最後
Adodc1.Recordset.MoveLast
End Select
End Sub |
| |
|
|
【搜尋】按鈕程式如下: |
|
|
Private Sub
Command3_Click()
Dim num As String
Dim pos As Variant
num = InputBox("請輸入員工編號", "搜尋員工編號", "1")
If num <> "" Then '有輸入資料
pos = Adodc1.Recordset.Bookmark '記錄目前資料指標位置
num = "empno=" & "'" & num & "'" '搜尋字串
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find (num) '搜尋
If Adodc1.Recordset.EOF Then '找不到
MsgBox "目前沒有這個編號的員工資料", vbOKOnly + vbExclamation, ""
Adodc1.Recordset.Bookmark = pos '回存原先資料指標位置
End If
End If
End Sub |
| |
|
【結束】按鈕程式如下: |
|
Private Sub
Command2_Click()
End
End Sub |
| |
 |
|
|
VB 提供許多Data Aware
元件來顯示資料庫中的資料,例如:Text Box,Data Grid,Data Combo,Data list 等等元件,這章節我們介紹
TextBox 。
|
 |
在 VB
控制項中,點選“TextBox”元件,然後拖曳至表單中產生 TextBox 控制項,例如:Text1,並先在其屬性中的
DataSource 欄位(資料來源) 中點選 Adodc1,然後在屬性中的 DataField
選擇表格中的某個欄位,如此就建立了一個欄位的顯示。 |
 |
重覆
建立其他欄位的顯示,並且可利用 VB 控制項中的“Lebel”元件建立每個欄位的標題。 |
 |
點選按鈕元件並如同前的方法建立記錄操控按鈕,例如:第一筆、向上一筆、向下一筆、最後一筆、搜尋、結束。
|
 |
然後執行表單。 |
|
| |
|
 |
|
|
所謂 Master-detail
關聯架構表單即是反映兩個資料區塊(block) 所對應之基本表格之間的關聯。Master block
為對應擁有被關聯主鍵的基本表格之資料區塊,而 Detail block 為對應擁有外來鍵的基本表格之資料區塊。Master-detail
關聯架構表單反映兩個基本表格之間的一對多關係。利用 VB 存取資料庫的首要之務是建立 Recordset 物件,然而建立 Recordset
物件的方法很多,常使初學者不知所措,而 Data Environment的主要功能是把這些方法整合起來並提供資料庫程式一致的介面。
|
 |
在 VB 工具列上點選
專案→其他的 ActiveX Designer→Data Environment,會進入 Data Environment
設計環境並產生了 Connection 元件 Connection1。 |
 |
接下來我們要設定與
Oracle 的連線,在 Data Environment 下的 Connection 元件 Connection1
上按右鍵並選擇“屬性”後,會出現設定資料連接的視窗,在“提供者”頁籤上點選“Microsoft OLE DB Provider
for Oracle”並點選“下一步”。 |
 |
在“連接”頁籤中鍵入伺服器的名稱,例如:jp8i,並輸入使用者名稱與密碼,例如:scott,並記得點選“允許儲存密碼”,設定好了就點選“測試連接”,看是否可以連線,如果連線成功,則系統會回覆“測試連接成功”,然後按“確定”離開。 |
 |
在 Data
Environment 下的 Connection 元件 Connection1 上按右鍵並選擇“新增指令”,即可產生
Command 元件 Command1。 |
 |
在 Command 元件
Command1 上按右鍵並點選“屬性”,出現 Command1
內容的視窗,在“一般”頁籤之資料來源中的資料庫物件之種類與先前介紹的 Adodc
元件類似,所以這裡作者不再重覆。這裡以資料表為例,在物件名稱中鍵入 SCOTT.DEPT,然後點選“確定”。 |
 |
在 Command 元件
Command1 上按右鍵並點選“新增子指令”,即可在 Command1 下產生一個新的 Command 元件
Command2。 |
 |
在 Command 元件
Command2 上按右鍵並點選“屬性”,即可出現 Command2
內容的視窗,在“一般”頁籤的資料來源中之資料庫物件中點選資料表,並在物件名稱中鍵入 SCOTT.EMP。 |
 |
假如兩個表格間有設定好參考整合限制,則在“關聯”頁籤中的關聯定義會自動選定,只要點選“新增”將關聯加入 Command2
中,設定好後點選“確定”即可。 |
 |
設定好的 Data
Environment 。 |
 |
點選 Data
Environment 中的 Command1 並將之拖曳至表單上。 |
 |
VB 會自動地產生兩個表格的
Master-detail 的表單。 |
 |
點選按鈕元件建立記錄操控控鈕,例如:第一筆、向上一筆、向下一筆、最後一筆、搜尋、結束。如下說明 |
 |
然後執行,執行結果。 |
|
| |
|
【第一筆】按鈕程式如下: |
|
Private Sub
Command1_Click()
DataEnvironment1.rsCommand1.MoveFirst
End Sub |
| |
|
【向上一筆】按鈕程式如下: |
|
Private Sub
Command2_Click()
DataEnvironment1.rsCommand1.MovePrevious
If DataEnvironment1.rsCommand1.BOF Then
DataEnvironment1.rsCommand1.MoveFirst
End If
End Sub |
| |
|
【向下一筆】按鈕程式如下: |
|
Private Sub
Command3_Click()
DataEnvironment1.rsCommand1.MoveNext
If DataEnvironment1.rsCommand1.EOF Then
DataEnvironment1.rsCommand1.MoveLast
End If
End Sub |
| |
|
【最後一筆】按鈕程式如下: |
|
Private Sub
Command4_Click()
DataEnvironment1.rsCommand1.MoveLast
End Sub |
| |
|
【結束】按鈕程式如下: |
|
Private Sub
Command5_Click()
End
End Sub |
| |
|
【搜尋】按鈕程式如下: |
|
Private Sub
Command6_Click()
Dim num As String
Dim pos As Variant
num = InputBox("請輸入部門代碼", "搜尋部門代碼", "1")
If num <> "" Then '有輸入資料
pos = DataEnvironment1.rsCommand1.Bookmark '記錄目前資料指標位置
num = "deptno=" & "'" & num & "'" '搜尋字串
DataEnvironment1.rsCommand1.MoveFirst
DataEnvironment1.rsCommand1.Find (num) '搜尋
If DataEnvironment1.rsCommand1.EOF Then '找不到
MsgBox "目前沒有這個編號的部門資料", vbOKOnly + vbExclamation, ""
DataEnvironment1.rsCommand1.Bookmark = pos '回存原先資料指標位置
End If
End If
End Sub |
| |