製作特點
使用ADO訪問資料來源-特點
1.通過ODBC資料來源訪問資料庫,代表了如何建立關聯式資料庫的ODBC資料來源
2使用ADO RecordSet對象儲存資料,執行update方法即時更新
3通過文字框和按鈕事件完成資料顯示和修改
設計分析
其實使用ADO可以直接翻跟Access 2000資料庫(系統登入),本勢力通過ODBC資料來源訪問期末地就是要說明如何建立和訪問關聯式資料庫的ODBC資料來源
使用ADO更新資料來源的方法
1 將資料檢索儲存到RecordSet對象中,用Update方法進行更新。如果使用中斷連線的Recordset對象,則用UpdateBatch方法進行更新
2 用Command對象執行SQL資料更新命令,這是不需要使用RecordSet對象或使用其他方法將資料檢索到本機電腦
技術要領
RecordSet的Locktype 屬性用於指定記錄鎖類型
adLockReadOnly:預設值,唯讀,無法更新資料
adLockPessimistic:保守式記錄鎖定,在編輯記錄時立即鎖定資料來源的記錄
adLockOptimistic:開放式記錄鎖定,在執行Update方法時鎖定記錄
adLockBatchOptimistic:開放式批更新,表示RecordSet用UpdateBatch方法更新多個記錄,即在執行UpdateBatch方法時鎖定記錄
Recordset 的暫存資料表位置(CursorLocation屬性用於指定暫存資料表位置)可設定為
adUseClient :用戶端暫存資料表,可以提供重新排序和使用索引尋找記錄等特有功能
adUseServer:伺服器端暫存資料表 ,由伺服器端的被檢索的資料來源維護
註:ADO中的RecordSet預設為伺服器端的單向唯讀暫存資料表
瀏覽RecordSet中的記錄
瀏覽RecordSet中的記錄需要兩個步驟。首先,定位目前記錄,RecordSet開啟時第一個記錄為目前記錄,然後用Field對象獲得目前記錄的各個資料列
RecordSet對象可用下列5個方法定位目前記錄
1.MoveFirst:使記錄指標指向第一個記錄
2.MoveNext:使用記錄指標指向下一個記錄
3.MovePrevious:使記錄指標指向前一個記錄
4.MoveLast:使記錄指標指向最後一個記錄
5.Move n:使記錄指標指向從目前記錄算起的第n個記錄
註:在瀏覽RecordSet時,Bof屬相為true表示記錄指標指向第一個記錄之前,Eof屬性為true時表示記錄指標指向最後一個記錄之後。這兩個屬性還可以用於測試RecordSet是否為空白。
ODBC資料來源類型
使用者DSN :電腦本機資料源,只能被目前使用者使用。
系統DSN:電腦本機資料源,可被任何就有許可權的使用者使用
檔案DSN:可以不是電腦本機資料源,可被安裝了相同驅動程式的使用者共用
註:connection對象在建立資料來源串連時,預設使用MSDASQL驅動程式,所以在連接字串中只需指定資料來源名稱即可例如:
objCn.Open"DSN=myaccess" '建立資料庫連接
操作過程
1建立OODBC資料來源
選擇系統“開始”->程式 ->管理工具->資料來源
單擊添加按鈕,選擇Microsoft Access Driver
單擊完成按鈕,開啟安裝對話方塊
在資料來源名文字框中輸入“執行個體2DSN”作為建立資料來源的名稱,在說明文字框中輸入“執行個體2的Access資料來源”,單擊選擇按鈕
單擊確定關閉對話方塊
如果要為ODBC資料來源設定登入名稱稱和密碼等道濟選項,可單擊進階按鈕,開啟進階選項設定
如果使用Access資料庫帶有系統資料庫,則應選擇“ODBC
Microsoft Access安裝”對話方塊中的資料庫,然後單擊系統資料庫按鈕
如果要設定驅動程式的附加選項,包括頁逾時,緩衝區大小,獨佔區大小,獨佔和唯讀等,單擊
“ODBC Microsoft Access安裝”對話方塊中的選項按鈕,在對話方塊底部顯示驅動序附加選項
單擊確定按鈕關閉安裝對話方塊,建立的執行個體2DSN資料來源顯示在“ODBC資料來源管理器”對話方塊列表中
單擊確定按鈕關閉“OBDC資料來源管理器”對話方塊,完成資料來源建立操作
設計記錄瀏覽表單
注:最底下的那個文字框的locked的屬性設定為true
建立ADO引用
工程->引用 選擇Microsoft ActiveX Data Objects 2.5 Library
編寫代碼
Dim objrs As RecordsetDim objcn As ConnectionDim isNeedSave As Boolean '用於標識是否需要執行儲存操作'添加前一記錄的代碼。使用者單擊按按鈕時先儲存目前記錄的修改,然後使前一個記錄為目前記錄Private Sub Command1_Click() DoSave objrs.MovePrevious If objrs.BOF Then objrs.MoveFirst '顯示目前記錄 txtUserName = objrs.Fields("使用者名稱").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub'添加後一記錄的代碼。使用者單擊按按鈕時先儲存目前記錄的修改,然後使下一個記錄為目前記錄Private Sub Command2_Click() DoSave objrs.MoveNext If objrs.EOF Then objrs.MoveLast '顯示目前記錄 txtUserName = objrs.Fields("使用者名稱").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub'建立資料來源串連,並檢索資料,將檢索到的第一個記錄顯示在表單中Private Sub Form_Load() Set objcn = New Connection '執行個體化connection對象 '串連資料庫 objcn.Open "DSN= 執行個體2DSN" Set objrs = New Recordset '建立用戶端的記錄集 With objrs .CursorLocation = adUseClient '指定暫存資料表位置 .CursorType = adOpenDynamic '指定使用鍵集遊標 .LockType = adLockOptimistic '指定鎖定類型 .Open "SELECT*FROM 系統使用者", objcn End With '顯示第一個記錄集 txtUserName = objrs.Fields("使用者名稱").Value txtPassword = objrs.Fields("口令").Value txtMsg = objrs.AbsolutePosition & "/" & objrs.RecordCount End Sub'定義一個過程執行資料更新操作Private Sub DoSave() If isNeedSave Then objrs.Fields("使用者名稱").Value = txtUserName objrs.Fields("口令").Value = txtPassword objrs.Update '執行更新操作 End IfEnd Sub'如果修改了資料,則設定isneedsave為truePrivate Sub txtPassword_Change() isNeedSave = True '在修改目前記錄欄位時,設定儲存標識End SubPrivate Sub txtUserName_Change() isNeedSave = True '在修改目前記錄欄位時,設定儲存標識End Sub'Unload 事件代碼,在表單關閉時釋放資料庫的串連和ADO對象Private Sub From_Unload(Cancel As Integer) Set objrs = Nothing '釋放記錄集對象 objcn.Close '釋放資料庫連接 Set objcn = Nothing '釋放連線物件End Sub