?? db971228.gb_
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>資料庫: 如何鎖定一筆資料錄(record) 或是一個資料表(Table)?</TITLE>
<META NAME="Author" CONTENT="KJ Wang">
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
</HEAD>
<BODY TEXT="#202020" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#0000FF" ALINK="#FF0000">
<H2 ALIGN=CENTER><A HREF="vbdb.htm">VB5 與資料庫程式設計</A></H2>
<CENTER><P><IMG SRC="../../g/more.jpg" HEIGHT=19 WIDTH=79></P></CENTER>
<H3 ALIGN=CENTER>
<HR WIDTH="100%">如何鎖定一筆資料錄(record) 或是一個資料表(Table)?(12/31/97
補充說明)
<HR WIDTH="100%"></H3>
<DIV ALIGN=right><ADDRESS><FONT COLOR="#008000">參閱章節:13-1 節,p.410。</FONT></ADDRESS></DIV>
<CENTER><TABLE CELLSPACING=0 WIDTH="95%" >
<TR>
<TD>本書在 p.410 曾經介紹「如何將資料庫開啟成<FONT COLOR="#FF0000">獨占的</FONT>資料庫」,
但是否可以鎖定某一筆資料錄(<FONT COLOR="#008000">因為寫入資料時, 要防止另一個程式也寫入資料而出現資料不一致的現象</FONT>),
或鎖定某一個資料表(<FONT COLOR="#008000">大量更新資料時, 乾脆禁止其他程式使用此一資料表</FONT>)?
<P>
<HR WIDTH="100%"></P>
<P><FONT COLOR="#FF0000">一、鎖定資料錄:</FONT></P>
<UL>
<P>這個問題, VB 資料庫已經幫我們設想到了, 當某一個程式呼叫了 <FONT COLOR="#FF0000">Edit</FONT>
方法之後(表示要寫入資料), 在這個程還沒有呼叫<FONT COLOR="#FF0000"> Update</FONT>(確定更新資料)
或呼叫 <FONT COLOR="#FF0000">CancelUpdate</FONT>(取消更新資料) 之前,資料錄是一直鎖定的,所以在程式的撰寫上,
我們并不需要特別鎖定某一資料錄。</P>
<P><B><FONT COLOR="#FF0000"><FONT SIZE=+1>補充說明(12/31)</FONT></FONT></B>:在
mdb 的內部資料結構上, 儲存資料是以 Page 為單位,因此「鎖定資料錄」真正的作法是<FONT COLOR="#FF0000">鎖定
Page</FONT>, 目前 mdb 一個 Page 的預設值是 2K(可能含有一到多筆資料錄),
這表示<FONT COLOR="#0000FF">如果在被鎖定的 2K 資料中含有 5 筆資料錄, 那麼呼叫
Edit 之後, 就同時有 5 筆資料錄被鎖定</FONT>,這也表示我們只應該在即將寫入資料時,
才呼叫 Edit, 不要在呼叫 Edit 之後, 又執行一大堆與資料寫入不相關的動作。</P>
</UL>
<P><FONT COLOR="#FF0000">二、鎖定資料表:</FONT></P>
<UL>
<P>想要鎖定資料表, 可在 OpenRecordset 開啟資料表時, 增加一個參數, 如下:</P>
<UL>
<P>Set rs = db.OpenRecordset( "資料表名稱", dbOpenDynaset, <FONT COLOR="#FF0000">dbDenyWrite</FONT>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -