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

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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Qデータベースから複数データを取り出しリスト表示をするにはどうしたら良いですか?

phpではWhile($sss)を使って配列に入れたりしますがASPではどのように書いたら良いですか?良く分かりません。

Aベストアンサー

とりあえず、ASP+ADOの例を。
<%
set cn=server.createobject("adodb.connection")
set cmd=server.createobject("adodb.command")
set rs=server.createobject("adodb.recordset")

cn.open "provider=・・・"
cmd.activeconnection=cn
cmd.commandtext="select f1 from Table"
rs=cmd.execute

do until rs.eof
response.write rs(0)
rs.movenext
Loop
rs.close
cn.close
%>

QAccessで該当データにフラグをたてたい

大量データのマッチング処理を行っています。
(1)編集データ:8万件
(2)参照データ:40万件

Excelでは処理が遅いため、Accessで対応しようとしています。

(1)と(2)のデータに対し
不一致クエリを実行すると、データが絞り込まれてしまいますが
絞り込まず、別カラムを作成し、対象データに対しフラグをたてたいのですが
方法を教えていただけないでしょうか。

マクロを組まないとできませんか?
申し訳ありませんがどうぞ宜しくお願いいたします。

Accessのバージョンは、2007になります。

Aベストアンサー

不一致クエリをウィザードで進めて行ったのなら
http://www.feedsoft.net/access/guide-query/guideq23.html
のようにそのクエリをデザインビューで開いて
フィールドの抽出条件は消去し
「氏名」となっているフィールド部分を
FLG:iif(isnull([氏名]),true,false)
としてみてください。「氏名」は適宜読み替えて。

QDataGridを使ってデータを表示するとき、任意の表示形式にするには?

VisualStudioでASP.NETをやってる、初心者でございます。
データグリッドにSQLから取得したデータを表示させているのですが、
日付が
2004/11/26 00:00:00
という風に表示されてしまいます。
これを、
2004/11/26
とだけ表示させるにはどうしたらよいのでしょうか?
どうぞ、よろしくお願いしますm(_ _)m

Aベストアンサー

こんにちは。

この「テーブル1」の「日付」カラムは、「datetime」か「smalldatetime」型なんですよね?

データグリッドの方がよくわかってないので申し訳ないんですが、
カラム名でバインドさせているんでしょうか?

CONVERT(char,日付,111)には値が入っているはずなので、
CONVERT(char,日付,111) 日付,
のように、別名をつければいいのかな???

SQL側の問題ではない(値は取れている)と思いますです・・・はい。
(^^ゞ

QSpreadのデータを別画面に引き渡す

WebFormのSpreadの情報が少なく
自己解決が出来ないためお分かりになる方アドバイス
お願い致します。

ASP.NET(VB)Webフォームでスプレッドを
使用しています。
選択されたスプレッドのデータを取得し、別の画面に
引渡したいのですが、パラメータを渡すメソッドなどは
あるのでしょうか?


Dim strData As String


strData = 選択行のデータを取得


aaaのパラメータを別画面に引渡したいと考えています。
アドバイスの程よろしくお願い致します。

Aベストアンサー

別画面にデータを渡したいのであれば、Form、QueryString、Cookie、Session 変数等、色々ありますよ。
サーバサイドで遷移する場合は、Response.Redirect がいいでしょうし、Form の action を別画面のURLにして遷移するなど、手法はいくらでもあります。

Q日付型のデータの表示について

ASPでWebページを作成しています。
アクセスの受付月日フィールドに日付型のデータが入っています。
一覧表示をした場合に2007/05/12と表示されますが、これを5/12
としたい場合はどうすればようでしょうか。また時間
(2007/05/12 10:00:00)まではいったデータを
 5/12 10:10と表示させないのです。
初心者ですのでわかりやすく教えてください。

一覧表示させるファイルの一部です。
set rec = db.Execute("SELECT * FROM 求人一覧T ")

do while not rec.EOF
<TD BGCOLOR=#FFC0CB><% = rec.Fields("受付月日") %></TD>

Aベストアンサー

みなさまの意見もございますが、
ASPの質問なので
VBScriptのYear()関数、Month()関数、Day()関数などを利用した方法がいいのではないでしょうか?

<%
set rec = db.Execute("SELECT * FROM 求人一覧T ")
do while not rec.EOF
%>
<TD BGCOLOR=#FFC0CB>
<%
Response.write Month(rec.Fields("受付月日")) & "/"
Response.write Day(rec.Fields("受付月日")) & " "
Response.write Hour(rec.Fields("受付月日")) & ":"
Response.write Minute(rec.Fields("受付月日"))
''わかりやすく複数行にわたって書いてみました。
%></TD>


おすすめ情報