2009-07-31 12 views
0

私はフロントエンド用に2つに分割されたVBAアプリケーションを持っています。 2人のユーザーがそれを編集するのを防ぐ方法を更新しながら、バックエンド?vbaでのレコードロック

答えて

0

前年比は、第二のクライアントが編集したいとタイムアウト時のレコードをロックできない場合、エラーが発生しますので、

Dim cnn As ADODB.Connection 
Dim rst As ADODB.Recordset 

Set cnn = New ADODB.Connection 
cnn.ConnectionString = " Provider=sqloledb;" & _ 
    "Data Source=(local);Initial Catalog=pubs;uid=sa;pwd=" 
cnn.Open 

Set rst = New ADODB.Recordset 
rst.ActiveConnection = cnn 
rst.CursorType = adOpenKeyset 
rst.LockType = adLockPessimistic 'Invoke Pessimistic Locking 
rst.CursorLocation = adUseServer 
rst.Open "Select * from Table Where ID ='" _ 
    & strID & "'", _ 
    Options:=adCmdText 

rst!Name = "New name" 'Lock occurs here 

'... when it is locked, you may do other operations 

rst.Update 'Lock Released Here 

あなたはエラー処理を実装する必要がありますロック悲観起動しようとするかもしれません。

悲観的ロックが最高のシナリオではありませんしかし、私はオンラインブックAlison Balter's mastering Microsoft Access 2000 developmentで、それはあなたを助ける必要があり楽観的ロックと初勝利または最終勝利のいずれかの戦略ここ

について思うだろう。

1

アクセスがロックされています。アクセスのヘルプから:

マルチユーザー環境でのAccessデータベース内の[ツール]メニューの[

を使用し、ロックレベルを指定し、[オプション]をクリックします。

[詳細設定]タブをクリックします。 、レコードレベルが現在の Microsoft Accessデータベース用の新しい デフォルト設定をロックしますレコードレベル ロック]チェックボックスを使用して オープンデータベースを選択するには


ページレベルを に設定するには、現在のAccessデータベースの の新しい既定の設定をロックします。 レコードレベルを使用してデータベースを開く ロックチェックボックスをオフにします。

ノート

この設定では、Accessデータベースを開く次回 に行われますが、あなた はの終わりに最も 最近使用したファイルの一覧ではなく、ファイル ]メニューの[開く]コマンドを使用する必要があります。ファイルメニューの この動作は、デフォルトの モードの設定と同じ です。

あなたは レコード・レベルのロックを使用して開く]データベースを選択した場合、これは、レコードをループ にレコードセットオブジェクトを使用して、フォーム、データシート、およびコード を介してデータ にアクセスするための デフォルトの動作になりますが、ないて がSQL ステートメントを使用して一括操作を実行するコードではなく、 アクションクエリを使用することもできます。詳細については、Microsoft Office 2000/Visual Basicプログラマーズガイドの 第16章「マルチユーザーデータベース アプリケーション」を参照してください。