設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 5179|回復: 9
打印 上一主題 下一主題

[Access本身] [已解決]運行時錯誤3211.如何循環(huán)出錯處理?或如何檢測表被使用鎖定?

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2011-10-11 11:11:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 zww3008 于 2011-10-11 20:34 編輯

我的要求是:

生成表查詢并使用表,默認生成表LSB1,如果該表已被其他用戶或其他窗體使用,則生成并使用LSB2,如果LSB2也被使用中,則成并使用LSB3,依此類推......

我的代碼是:
=================
聲明節(jié)聲明
Dim StrLSB As String
----------------------------

Sub AllSub(PID As Integer)
    Dim Str1 As String
   ' Dim StrLSB As String
    Dim i As Integer
    i = 1
ReCreateLSB:
On Error GoTo Err_AllSub

    StrLSB = "LSB" & i
    Str1 = "SELECT CategoryID INTO " & StrLSB & " FROM tblHWCategory WHERE ParentID=" + CStr(PID)
    DoCmd.RunSQL Str1                     '標記2

Exit_AllSub:
    Exit Sub

Err_AllSub:
    If err = 3211 Then
        i = i + 1                                 
        GoTo ReCreateLSB          '標記1
        '  Resume Next
     Else
        Resume Exit_AllSub
    End If
End Sub
================
現(xiàn)在問題情況是:LSB1已被使用時,能夠通過出錯處理自動運行到標記1,然后返回繼續(xù)運行,本想繼續(xù)生成LSB2,但此時LSB2也被使用中,運行到標記2時再次出錯。

問:1、出錯處理是不是只能使用一次?如何循環(huán)出錯處理?
或者,2、如何用VBA檢測表LSB?正在被使用中?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2011-10-11 11:37:07 | 只看該作者
試試捕捉錯誤代碼,
如果出現(xiàn)3211錯誤i自動+1試試
3#
發(fā)表于 2011-10-11 11:39:06 | 只看該作者
do until err =“”
i=i+1
loop
4#
 樓主| 發(fā)表于 2011-10-11 11:53:23 | 只看該作者
具體怎么應用?
do until err =“”
i=i+1
loop
代碼放在哪?反復試了好像不行。
5#
發(fā)表于 2011-10-11 12:24:10 | 只看該作者
試試這樣
Sub AllSub(PID As Integer)
    Dim Str1 As String
    Dim StrLSB As String
    Dim i As Integer
    i = 1
'ReCreateLSB:
'On Error GoTo Err_AllSub
On Error Resume Next
Do While Err = 3211
    StrLSB = "LSB" & i
    Str1 = "SELECT CategoryID INTO " & StrLSB & " FROM tblHWCategory WHERE ParentID=" + CStr(PID)
    DoCmd.RunSQL Str1                     '標記2
    i = i + 1
Loop
End Sub

點擊這里給我發(fā)消息

6#
發(fā)表于 2011-10-11 12:37:54 | 只看該作者
Do while Err.number<>0
   '再加個超時多少秒,也退出
loop

點擊這里給我發(fā)消息

7#
發(fā)表于 2011-10-11 12:38:36 | 只看該作者
Do while Err.number<>0
    err.clear '清錯誤代碼
    '再加個超時多少秒,也退出
   '你的處理代碼
   
loop
8#
 樓主| 發(fā)表于 2011-10-11 20:32:11 | 只看該作者
感謝管理員和樓上的各位,綜合大家的思路,問題解決了。

Sub AllSub(PID As Integer)
On Error Resume Next

    Dim Str1 As String
   ' Dim StrLSB As String
    Dim i As Integer
    i = 1
Do
    err.Clear    '清錯誤代碼
  StrLSB = "LSB" & i
    Str1 = "SELECT CategoryID INTO " & StrLSB & " FROM tblHWCategory WHERE ParentID=" + CStr(PID)
    DoCmd.SetWarnings False
    DoCmd.RunSQL Str1
     i = i + 1
    'MsgBox err.Description
Loop While err.Number = 3211 And i < 50

End Sub
9#
 樓主| 發(fā)表于 2011-10-11 21:19:50 | 只看該作者
本帖最后由 zww3008 于 2011-10-11 21:22 編輯

這個問題的目的,是為了完善一個TreeView。

原來存在一個問題,即不能同時打開使用多個類似的TreeView窗體(多人打開同一窗體或一人打開同類多個窗體),因為要用到同一個表。
現(xiàn)在即解決了該問題,當發(fā)現(xiàn)表LSB1已被使用時,則自動使用LSB2...這樣一來就可以批量制作和使用此類窗體了。

附上示例,供參考。


示例中,你可以同時打開frmSBbyJH窗體和frmSBbyJH2窗體以測試,現(xiàn)在沒問題了。修改前同時打開時會出錯的。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x

點擊這里給我發(fā)消息

10#
發(fā)表于 2011-10-12 11:52:31 | 只看該作者
謝謝分享!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:31 , Processed in 0.101531 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表