所有新聞群組討論區列表 風禹科技驗證有限公司 Web News Reader

目前新聞群組:tw.bbs.comp.lang.basic

項目 內容
發文者 Jones
日期 2008/2/27 下午 01:01:01
標題 VB6+DAO3.6鎖定問題請教
檔頭
220 75887 <A12656A6186448C2867D064D457C8104@c2q6600> article
Path: netnews!not-for-mail
From: "Jones" <someone@microsoft.com.x>
Newsgroups: tw.bbs.comp.lang.basic
Subject: VB6+DAO3.6鎖定問題請教
Date: Wed, 27 Feb 2008 13:01:01 +0800
Organization: HISDT 風禹科技驗證有限公司
Lines: 56
Sender: "59.121.0.172" <admin@tlcheng.twbbs.org>
Message-ID: <A12656A6186448C2867D064D457C8104@c2q6600>
NNTP-Posting-Host: 59-127-4-39.hinet-ip.hinet.net
Mime-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
X-Trace: netnews.hinet.net 1204088462 12488 59.127.4.39 (27 Feb 2008 05:01:02 GMT)
X-Complaints-To: usenet@HiNetnews.hinet.net
NNTP-Posting-Date: Wed, 27 Feb 2008 05:01:02 +0000 (UTC)
thread-index: Ach4/b+E/ILwOqKmSkeY6AzhC3MD2A==
Thread-Topic: VB6+DAO3.6鎖定問題請教
X-Newsreader: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4133
Xref: netnews tw.bbs.comp.lang.basic:75887
內文
'VB6 引用 DAO 3.6 做Access2000 .MDB資料庫新增
'說明: 本程式是每隔500ms新增一筆,連續新增20筆記錄到TABLE1表格內,
'     程式及資料庫放在同一個目錄內,開啟本程式兩次,讓兩隻程式同時執行以模擬多人共用!
'狀況1:第1次程式,按下Command1開始新增,在尚未新增完畢之前,第2次程式也按下Command1也去新增,
'      此時第2次程式會出現如下的鎖定訊息:
'          錯誤代號3260.無法更新;目前被在機器'mypc'上的使用者'Admin'鎖住  的錯誤訊息!
'      而且當第1次程式新增完畢之後,第2次電腦還是無法再做新增,還是一直會出現上面的鎖定訊息,等了半個小時還是一樣!
'狀況2:如果是第1次程式執行完再執行第2次程式,或者是第2次程式執行完再執行第1次程式,則就不會有鎖定的狀況!
'請問: 依據狀況2來推斷,應該是執行完就不會再鎖定了,可是為什麼狀況1當第1次程式執行完之後,第2次程式還是無法新增?
'     想問的是鎖定狀態到底何時會釋放?
'     註:有試過將第1次程式的rs.Close就會釋放,但是實務應用上不能將rs關閉掉再開,所以此法不可以使用!
'我的實際測試完整程式碼如下:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim db As Database, rs As Recordset
'----------------------------------------------------------------
Private Sub Form_Load()
Dim mPATH As String
mPATH = App.Path
If Right(mPATH, 1) <> "\" Then
   mPATH = mPATH & "\"
End If
   Set db = DBEngine.Workspaces(0).OpenDatabase(mPATH & "MYDB.MDB", False, False)
   Set rs = db.OpenRecordset("SELECT * FROM [TABLE1]", dbOpenDynaset, dbSeeChanges, dbOptimistic) '使用樂觀鎖定
End Sub
'----------------------------------------------------------------
Private Sub Command1_Click()
30       On Error GoTo hErr
31       Dim i As Integer
32       With rs
33          For i = 1 To 20
34             .AddNew
35             .Fields("KNO") = CStr(i)
36             .Fields("PNO") = CStr(Timer)
37             .Update
38             Command1.Caption = i
39             DoEvents
40             Sleep 500  '每隔500ms新增一筆
41          Next
42       End With
43       Exit Sub
44 hErr:
45       MsgBox Err.Number & ".列" & Erl() & "." & Err.Description
End Sub
'----------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
   rs.Close
   Set rs = Nothing
   db.Close
   Set db = Nothing
End Sub
'----------------------------------------------------------------

--
ASPNET News Reader http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0 http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=tw.bbs.comp.lang.basic

基本條件

.Net 原始碼 | ASP.NET News Reader Beta 0.2.9

請參閱

個人資料 | 發表新文章 | 回覆 | 回信 | 轉寄 | 同標題 | 搜尋 | 列印 預覽 直接

重要訊息通知

2007/06/21 由於微軟新聞伺服器移除多數新聞群組 (newsgroup),目前遭移除之群組暫時改為隱藏純瀏覽,若狀況已定案時,將會將隱藏中的群組重新調整。[討論]