私はこれを行う簡単な方法はないと思います。
最初に、「ユーザーがx分間無効になった」と定義する必要があります。という意味です。いくつかのオプションがあります。
- Accessアプリケーションは、x分間集中窓ませんでした。 (欠点:ユーザがフロントでAccessアプリケーションをアイドリングして、決してフォーカス損失を引き起こさない可能性があります)
- 特定のフォームにはフォーカスされていません。 x分間。 (欠点:アプリケーション内のフォームごとにチェックルーチンを実装し、すべての
GotFocus
および/またはLostFocus
イベントを記録して、別のフォームに少なくともx分かかることを確認する必要があります。
- (つまり、ボタンのクリックなどでトリガーされたイベント)は、x分間発生しませんでした。 (欠点:処理するイベントごとに、x-minutes-timerをリセットするコードを追加する必要があります。また、naviagtionの新しいイベントハンドラを導入する必要があります(#2、フォーカス損失を参照)。フォームをナビゲートすることでアクティブになっているユーザーをログオフすることができます)。
- ...他の方法ではうまくいきません。
新しい問題のホストに対処しなくても、これを行うには良い方法はありません。
ベスト・アイドル時間は、アクティブ・データベース・サーバーであり、別のAccessデータベース(またはフォームが入っているデータベース)でなく、バックエンド・データベースに設定することです。
専用のデータベースサーバーを持っていない後者のケースでは、最初にログインのタイムアウトが必要な理由を再考する必要があります。または、言い換えると:
アクセス専用データベースでは、どのようなログインが便利ですか?
セキュリティはありますか?ログインしているかどうかにかかわらず、ユーザーがデータベース内のすべてのデータにアクセスするのを防ぐ方法はありません。注意:Accessデータベースは、ファイルシステム上の単なるファイルです。ユーザーを使用すると、データベースは実際にはそのファイル内のすべてのものに既にアクセスしています。 Accessにはユーザーレベルのセキュリティなどはありません(少なくともこれ以上はありませんが、それがベストです)。
データベース全体(ファイル - >情報)を暗号化できますが、ユーザーごとではなくデータベースごとに1つのパスワードしか指定できません。再度:ユーザーレベルのセキュリティはAccessで実行できません。
は、Accessデータベースのセキュリティの詳細についてはこの回答を参照してください:https://stackoverflow.com/a/530778/6216216
はただ一つの形---早く開いているフォームのシーケンスである最初のフォームまたは1でタイマー機能を置きます。ユーザーがそれを完了したときにフォームを非表示にします。そのフォームは開いているが隠れているため、そのタイマーはアクティブのままです。 – HansUp