プロが教えるわが家の防犯対策術!

Access2000のデータベースにロックをかけることは
可能でしょうか?

具体的には
社員番号を検索して該当の社員データをHTML形式で表示し
その社員データを変更する処理なのですが

該当の社員データを開いている(表示している)間は
別の人がその社員のデータを開けない
(もしくは「他の人が編集中」のメッセージを表示)ようにするには
どのようにすれば良いですか?
別テーブルに編集中のデータ(社員番号)等を入れておいたり
しなければならないのでしょうか?

EditModeやLockTypeにて試してみたのですが・・・
別の人が編集中であるかどうかを取得できればと考えています。

参考になるホームページ等でも構いませんのでよろしくおねがいします。

A 回答 (3件)

こんにちは。

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文を発行します。
(ロックを解除するタイミングが難しくなりますが...)
参照は許可するのでしたらば、もう少しスマートになるとは思います。

こんな方法ではどうでしょうか?参考にしてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。

やはり社員番号をロック情報としてテーブルに持たせるという
方法ですね。ログイン画面を経て修正をしてもうらうように
考えていましたのでこの方法をもう少し検討してみます。

でも、おっしゃるとおりロック解除の方法が面倒かもしれませんね。

お礼日時:2001/10/11 09:11

そのHTML形式で表示するのは、Accessでですか?


もしもAccessのフォームで表示するのであれば、レコードソースを、一旦クエリで組んだものを使えば、他の人は修正出来ないハズです。
勿論その場合で、もし後々データの修正する場合は、テーブル直で行えば、OKですよ。
    • good
    • 0
この回答へのお礼

なるほど、Accessを使用するとそんなことが可能とは全然知りませんでした。

データアクセスページ等で作成するという事なんでしょう。
クライアントの方にもAccessがインストールされていないと
いけないなんてことも有るのかも知れませんね。


できればASP+DAO(ADO)等で作成する予定です。


ありがとうございまいした。

お礼日時:2001/10/11 09:16

該当アクセスを開いて


ツール→オプション→詳細
該当のレコードのロック又は既定の開くモードを指定する
ではお気に召しませんか?
がんばって下さい
    • good
    • 0
この回答へのお礼

ありがとうございます。

その方法は考えたのですがAccessの入っていないサーバ
(普通は大抵はいっていないと思うのですが)で
正常に動くのか不安だったので実は試していません。

どうしてもダメだった場合の最後の手段と考えています。

お礼日時:2001/10/11 09:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!