2016-03-31 14 views
0

別のテーブルから値を取得してテーブルの値を更新するコードがあります。このコードは、別のテーブルに基づいてレコードセット内の各アイテムに対して実行されるループ内にあります。このコードは初めて動作しますが、次にテーブルが別の用途やユーザーインターフェイスによって保持されているため、アクセスが拒否されたという最初の行でエラーが発生したときに発生します。コードはDAOを使用します。レコードセットのクローズ後にdbDenyWriteがまだ有効になっています

誰かが、レコードセットを閉じてその参照を破棄した後もまだdbDenyWriteが有効である理由を知りましたか?ここで

は、コードスニペットです:

Set rsRR = DataDB.OpenRecordset("Railroads", dbOpenTable, dbDenyWrite) 
rsRR.Index = "Railroads_RRIx" 
rsRR.Seek "=", RTrs!RR 
If rsRR.NoMatch Then 
    ' Write ERROR MESSAGE 
    rsRR.Close 
    Set rsRR = Nothing 
    GoSub CleanUp 
    ReverseRouteDataCollect = 0 
    Exit Function 
End If 
If Not dWork Is Nothing Then Set dWork = Nothing 
Set dWork = New Scripting.Dictionary 
FieldsSave dWork, rsRR 
i = FieldsCopy(drr, dWork, "TemplatesRailroad") 
If dWork(rsRR.Name & "$LastWaybillNo") = "999999" Then 
    rsRR.Edit 
     rsRR!LastWaybillNo = 2001 
    rsRR.Update 
Else 
    rsRR.Edit 
     rsRR!LastWaybillNo = dWork(rsRR.Name & "$LastWaybillNo") + 1 
    rsRR.Update 
End If 
rsRR.Close 
Set rsRR = Nothing 

答えて

0

.. dbDenyWriteレコードセット を閉鎖し、その参照を破壊した後、力のままですなぜですか?

これは、NoMatchの場合にのみ行うためです。

だから、編集を可能にするためにdbDenyWriteを変更、または(遅い)、それを編集して起動する前に、レコードセットをリセットし、次のいずれか

Set rsRR = DataDB.OpenRecordset("Railroads", dbOpenTable) 
関連する問題