Access2000のデータベースにロックをかけることは
可能でしょうか?
具体的には
社員番号を検索して該当の社員データをHTML形式で表示し
その社員データを変更する処理なのですが
該当の社員データを開いている(表示している)間は
別の人がその社員のデータを開けない
(もしくは「他の人が編集中」のメッセージを表示)ようにするには
どのようにすれば良いですか?
別テーブルに編集中のデータ(社員番号)等を入れておいたり
しなければならないのでしょうか?
EditModeやLockTypeにて試してみたのですが・・・
別の人が編集中であるかどうかを取得できればと考えています。
参考になるホームページ等でも構いませんのでよろしくおねがいします。
No.2ベストアンサー
- 回答日時:
こんにちは。
itohhといいます。結構、面倒ですよ。
1.ロックしたとしてロックの解除はどうするのか?
例えば、ブラウザで更新用ページを表示して、気が変わったので更新を止めるため
ブラウザを閉じてしまった場合、ロックされたままになってしまいます。
2.k_ebaさんが回答している方法だとRecodSetをページ間で持ち回らないと
いけません、これは、Session変数にObject代入して持ち回ると言うことです。
そうなると、Objectを解放(Nothing)するタイミングが難しくなります。
ロック方法の提案。
前提:
(1)レコードレイアウトに項目を追加しても良い。
(2)ロックする段階でだれがロックするかという情報を持っていること。(社員IDなど)
(前もってログイン画面を経て更新画面に遷移するとかです。)
(3)IIS/ASPでSession管理されたサイトである。
まず、ロック情報という項目をレコードのレイアウトに追加します。
ロックをかけるとは、このロック情報に社員IDを設定します。
ロック情報に別の社員IDが入っている場合は、参照も出来ないようにします。
ロックを解除するということは、このロック情報をクリアすることで行います。
上記の問題を解決する方法ですが、
まず、Objectの作成と解放はページの先頭と終わりに行います。ページ間でObjectを
持ち回ることはしません。それでも、ロック情報に社員IDが入っているので他の社員ID
では、アクセスできません。(ロックされるということ)
ロックの解除ですが、タイミングとしては、更新画面から別画面に遷移するときと
Sessionのタイムアウトのときでしょう。そのときに、ロック情報をクリアするSQLの
Update文を発行します。
(ロックを解除するタイミングが難しくなりますが...)
参照は許可するのでしたらば、もう少しスマートになるとは思います。
こんな方法ではどうでしょうか?参考にしてください。
ありがとうございます。
やはり社員番号をロック情報としてテーブルに持たせるという
方法ですね。ログイン画面を経て修正をしてもうらうように
考えていましたのでこの方法をもう少し検討してみます。
でも、おっしゃるとおりロック解除の方法が面倒かもしれませんね。
No.3
- 回答日時:
そのHTML形式で表示するのは、Accessでですか?
もしもAccessのフォームで表示するのであれば、レコードソースを、一旦クエリで組んだものを使えば、他の人は修正出来ないハズです。
勿論その場合で、もし後々データの修正する場合は、テーブル直で行えば、OKですよ。
なるほど、Accessを使用するとそんなことが可能とは全然知りませんでした。
データアクセスページ等で作成するという事なんでしょう。
クライアントの方にもAccessがインストールされていないと
いけないなんてことも有るのかも知れませんね。
できればASP+DAO(ADO)等で作成する予定です。
ありがとうございまいした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
- その他(インターネット接続・インフラ) (Google workspace)google以外のアカウントの利用制限と対策を相談させてください 1 2022/10/11 16:18
- Visual Basic(VBA) ActiveReportのサブレポート機能を利用したときに1ページ目の1サブレポート目が表示されない 1 2023/08/19 06:10
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS、EXCELの限界?
-
Set rst = db.OpenRecordset("S...
-
VB2005でAddNew()
-
半角スペースの置換でエラーを...
-
access count数を変数に格納
-
AceessVBA 非同期処理について
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
ACCESSのクエリで集計で、先頭...
-
Access テキスト型に対する指定...
-
accessのレポートで元になるテ...
-
テーブルの存在チェックについて
-
Accessのリンクテーブルのパス...
-
セルの右クリックで出る項目を...
-
Accessクエリーで両方のテーブ...
-
空白をそのままインポートする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access count数を変数に格納
-
access2000でつまづいてます
-
ACCESSのFindコマンドが遅い
-
Accessの更新前処理について。D...
-
「更新に必要なキー列の情報が...
-
[Access]削除時のエラーメッセ...
-
Access VBAで自動連番を振るには
-
ADOでループすると1レコードず...
-
ACCESS 処理件数の取得
-
AceessVBA 非同期処理について
-
VBScript+SQLServerでcountがう...
-
Access VBA
-
AccessVBAについて
-
半角スペースの置換でエラーを...
-
cobolのカーソルについて
-
access vbaでクエリデータの中...
-
レコードのロックについて
-
Access2003でのテーブルの有無確認
-
linuxについて質問です
-
エクセルVBAで5行目からオート...
おすすめ情報