OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

レコードのロックについて

  • 困ってます
  • 質問No.148693
  • 閲覧数248
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 100% (32/32)

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

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

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

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

参考になるホームページ等でも構いませんのでよろしくおねがいします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 45% (210/459)

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

こんな方法ではどうでしょうか?参考にしてください。
お礼コメント
sienna

お礼率 100% (32/32)

ありがとうございます。

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

でも、おっしゃるとおりロック解除の方法が面倒かもしれませんね。
投稿日時 - 2001-10-11 09:11:46
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 39% (813/2055)

該当アクセスを開いて ツール→オプション→詳細 該当のレコードのロック又は既定の開くモードを指定する ではお気に召しませんか? がんばって下さい ...続きを読む
該当アクセスを開いて
ツール→オプション→詳細
該当のレコードのロック又は既定の開くモードを指定する
ではお気に召しませんか?
がんばって下さい
お礼コメント
sienna

お礼率 100% (32/32)

ありがとうございます。

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

どうしてもダメだった場合の最後の手段と考えています。
投稿日時 - 2001-10-11 09:01:42


  • 回答No.3
レベル8

ベストアンサー率 25% (2/8)

そのHTML形式で表示するのは、Accessでですか? もしもAccessのフォームで表示するのであれば、レコードソースを、一旦クエリで組んだものを使えば、他の人は修正出来ないハズです。 勿論その場合で、もし後々データの修正する場合は、テーブル直で行えば、OKですよ。 ...続きを読む
そのHTML形式で表示するのは、Accessでですか?
もしもAccessのフォームで表示するのであれば、レコードソースを、一旦クエリで組んだものを使えば、他の人は修正出来ないハズです。
勿論その場合で、もし後々データの修正する場合は、テーブル直で行えば、OKですよ。
お礼コメント
sienna

お礼率 100% (32/32)

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

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


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


ありがとうございまいした。
投稿日時 - 2001-10-11 09:16:30
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ