私は、MS Accessデータベースにユーザーが通常1日に1回は実行するが、多少はあるかもしれないプロセスを持っている。数分かかるため、メインテーブルを削除して再作成するため、一時的な排他アクセスが必要です。MS Accessをオンザフライで独占に変更する
プロセスの開始前にdbに他のユーザーがいるかどうかを確認するコードがありますが、最初にアクセスを「排他」に変更してアクセスをオープンに戻す方法があります終わり?
私は、MS Accessデータベースにユーザーが通常1日に1回は実行するが、多少はあるかもしれないプロセスを持っている。数分かかるため、メインテーブルを削除して再作成するため、一時的な排他アクセスが必要です。MS Accessをオンザフライで独占に変更する
プロセスの開始前にdbに他のユーザーがいるかどうかを確認するコードがありますが、最初にアクセスを「排他」に変更してアクセスをオープンに戻す方法があります終わり?
アクセスは、データベースを開くときにのみ排他/共有モードを設定します。オープン/クローズを行う別のデータベースを持たない限り、「オンザフライ」で行うことはできません。
したがって、他のデータベースのテーブルを削除して再作成する「メンテナンス」データベースを作成することができます。メンテナンスデータベースは、データベースを排他モードで開くことができます。
ところで、おそらくこれを行うのは良いことではありません。テーブルを削除/再作成するたびにデータベースのサイズが増え、サイズを制御するためには通常のコンパクトが必要になります。可能であれば、この操作を必要としない別のデザインを見つけてください。
ありがとう、ありがとう。私は毎日、削除され、再ロードされる20,000以上のレコードがあり、サイズの増加はレコードを削除してから新しいレコードを追加するよりもはるかに小さいので、この方法でやっていました。それは何倍も高速です。時々コンパクトで大したことはありません。再度、感謝します。 –
/exclコマンドライン引数を指定してAccessを実行すると、データベースが排他モードで開きます。
しかし、あなたがAccessからこれをやっているかどうかはわかりません。
テーブルとタイマーを隠しフォームで使用できます。タイマーは、Accessデータベース内のテーブルの値をチェックします。値がすべての人をキックするように設定されているとき、それはみんなをキックする。隠されたフォームの 例コード:
Private Sub Form_Timer()
'On Error GoTo Err_Handler
Dim fLogout As Boolean
'checks to see if the table is set to false
fLogout = DLookup("on_off", "tblAdminSettings", "Control = 'logoff?'")
If fLogout = True Then
'this is your timer it allows everyone to be logged off
T1 = Now()
T2 = DateAdd("s", 10, T1)
Do Until T2 <= T1
T1 = Now()
Loop
DoCmd.SetWarnings False
DoCmd.Quit
End If
Exit_Here:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error Your Killing me Smalls"
Resume Exit_Here
End Sub
あなたはそれが常に近くになります賢明な他のデータベースを開いたときに戻って値をfalseに設定する方法を持っていることを確認することを忘れないでください。
なぜあなたはメインテーブルを削除して再作成していますか? – Malfist