• ベストアンサー

ACCESS97での排他制御について

a-kumaの回答

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

無理です。もともと Access がそういうふうにできてません。 何とかそれらしく使うとしたら、ファイル単位で排他をかけるしかなく ・Access のファイルをネットワーク共有にして、最大ユーザ数を1に  しておく ・そのファイルにアクセスするのが、何か作成したプログラムしかアクセス  しないのであれば、そのプログラムが同時に一つしか動かないようにする といった方法はあります。 でも、きちんとしたシステムとして運用するのであればお勧めはしません。 うちの社内でも、Access を使った台帳管理があったのだけれども、 ひどい目にあいました :-<

kumi913
質問者

お礼

ありがとうございました。やはり、ACCESSでは無理なのですね。。 少し、寂しいですが、ORACLEで業務を行っていこうと思います。 本当に、ありがとうございました。

関連するQ&A

  • Accessでの排他制御

    アクセスの排他制御に関して質問です。 ネットワーク上のサーバーにアクセスのMDBを置いて、複数の人が更新目的で開く場合、排他制御はどうなるのでしょうか? テーブル単位で、ロックが掛かるのでしょうか? もしそうであれば、複数の人が同時に使えないのですが、回避策はありませんでしょうか?

  • 排他制御について

    質問があります。 Access2003とSQLserver2005の排他制御についてです。 複数のPCから共有してアクセスし、レコード単位に排他制御したいといった場合、 排他制御に適しているのはどちらでしょうか? 「Accessではこういう問題があり適さない」などあったら教えてください。 よろしくお願いします。

  • 排他制御に関して

    こんばんは。お世話になっております。 これまで、質問のタイトルにある「排他制御」というものが「同時アクセスでの不具合を避けるための・・」といった程度の知識しかないまま、DB(MySQL)を利用して会員制のサイトを作っているのですが、全体を見直すべく、いざこの排他制御というものを取り入れようとしてみたところ、手持ちの書籍やこれまで見たサイトでは、ファイルをロック・・・などと言った感じで、DBとの関わりがイメージ出来ず、会員の登録情報の変更ページなどの入力フォームをはじめ、ログインページやDBを用いた検索ページにおいての活用は、どのような手順になるのでしょうか? 些か抽象的な質問になっておりますが、取り掛かりがつかめず、例えばログインページを例にとり、IDとパスワードを入力・DBに問合せ、といった流れでは、どのような手順になるかの全体像だけでもアドバイスいただければと、投函させて頂きました。 お忙しい中恐縮ですが、アドバイスなど頂戴できれば幸いです。宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • Accessの排他制御をどのように行うべきか

    いつもお世話になっております。 Windows2000 Access2002、またはAccess2000にて、 複数のPCで、サーバにおいてあるmdbファイルを使用するシステムを開発する場合、 (例えば、スタンドアロンで使用していたシステムを複数のPCで使用することになったと仮定します。 また予算の都合上、Oracle、SQL Serverなどは使えないものとし、各PCにAccessがインストールされます。 ) 排他制御を行うために、Accessで排他モードで開いて使用するという対応というのは、問題ないのでしょうか。 データが破損する可能性があるということをよく耳にするのですが、 過去に上記の対応を行われた方がいらっしゃいましたら、その後の運用で問題は発生しなかったか(ファイルが壊れる事はないのか)、 過去に壊れた事象をお持ちの方がいらっしゃいましたら、どのように対応されたのか、 別の対応方法をとられていらっしゃる方は、その対応方法を ご教授いただけないでしょうか。 プログラムでデータの破損を退避できるのであれば、上の対応と併せて開発できそうな気はするのですが、、 ご回答、よろしくお願いいたします。

  • Access2003での排他制御

    Access2003での排他制御 顧客管理をAccess2003で行っています。 新規で登録するときに顧客IDの重複チェックを[顧客ID_LostFocus]内で DCountを使って行っています。 [cmd登録_Click]で Set db = CurrentDb Set rst = db.OpenRecordset("顧客情報") With rst .AddNew ![顧客id] = me.txt顧客ID.value ![顧客住所] = me.txt顧客住所.value ![顧客TEL] = me.txt顧客TEL.value ・ ・ ・ .Update End With 以上の処理を行っています。 (1)Aさんが新規登録で顧客IDを入力 (2)重複されていないので顧客名や住所の入力をおこなう。 (3)Bさんが同じ顧客IDで新規登録 このケースの場合、 Aさんはまだ登録処理が済んでいない(登録ボタンを押していないためテーブルに反映されていない) ので(3)ではBさんの顧客IDは重複されていません。 Aさんが入力中の顧客IDをBさんが入力した時に「他のユーザーが使用しています」みたいな メッセージを表示するにはどのようにしたらよろしいでしょうか?? 文章が上手く書けなくてもうしわけありません、 何卒宜しくお願いいたします。

  • DB INSERT 時の排他制御について

    初めて投稿するものです。 Java で DB 挿入処理 (会員登録) で悩んでおります。 DB はPostgreSQL8です。 挿入しようとしている会員テーブルは以下のようなレイアウトです。 会員テーブル  ・会員ID 主キー  ・ログインID NOT NULL(*)  ・メールアドレス NOT NULL(*)  ・会員名  ・... ※(*)にはユニーク制約を付けています。 会員IDはPostgreSQLのシーケンスで採番するため、 排他ロックは不要であると思っております。 ですが、ログインIDとメールアドレスは ユニークであるため、排他制御して重複 チェックしなければならないと思っています。 ユニーク制約を張っているため、例外が 発生して判定するというアイデアもあるとは 思いますが、例外で重複判定するのは できれば避けたいと思っております。 例外以外で安全に重複チェックする 場合、どのように排他制御するべきでしょうか? そもそも、排他制御せずに重複チェックを 安全にする方法はあるのでしょうか? ユーザーが多いサイトの場合、テーブルを ロックすると遅くなるような気がします。 ご教授よろしくお願いいたします。

  • トリガに排他制御をかけたいのですが

    トリガに排他制御をかけたいのですが Oracleのトリガで、 トリガ内の処理に対して排他制御をおこないたいのですが、 どのように設定すればよいのでしょうか? トリガの内容は以下となります。 CREATE OR REPLACE TRIGGER TRI_TEST after update of (トリガの実行条件その1) on ORG_TBL FOR EACH ROW begin if (トリガの実行条件その2) THEN begin insert(実行される処理その1) EXCEPTION update(実行される処理その2) end; end if; end; / 上記の条件において、 「実行される処理その1」 「実行される処理その2」 を行っている最中に他からのアクセスをブロックをさせたく思っております。 本件の理由は 他からのアクセスで行われる処理が 「select(トリガによってデータが投入されてるテーブル)」 「truncate(トリガによってデータが投入されてるテーブル)」 を連続して行う処理のため、 排他を実行しなかった場合、 他からのアクセスの「select」と「truncate」の処理間に トリガによってレコードがinsertされた際に、 そのレコードがselectされなくなることを危惧しているためです。

  • access2010で共有でする

    access2003でDBを分割(テーブル=dbと他=pg)してpgをLAN経由でクライアントにpg_Accessを配布しLANDiscHDDのdb_Accessのテーブルにリンクさせていました。DBのプロパティ設定は、排他・編集済みレコードロックでした。しかし、access2010ではこの方法では、DBを共有してデータを追加・編集・削除ができません。 Web版にはしたくありませんので、良い方法があれば教えて下さい。私は初心者ですのでよろしくお願いします。

  • Oracleの排他制御について教えてください

    質問内容は結論から言うと、 INSERT文の時の排他制御について 知りたい。 以下の私の認識を踏まえた上で、 INSERT文の排他制御について 質問させてください。 なお、私の認識に誤りがあれば 指摘してください。 ### 私の認識 start ###### 1)Oracle では、select文の時に for updateを 書かなければ、なんのロックもかからず、 読み取り専用リソースへのアクセスで ない限り、 ダーティーリードの可能性がある。 2) select文で for update を指定した場合は 該当行について 共有ロックがかかる。 行単位の共有ロックがかかる。 その際、 他のトランザクションが for updateつきで selectしてきても、 共有ロック同士なので、 互い排他制御しない。 (3) update 文の場合は 該当行について、 占有ロックがかかる 行単位の占有ロックがかかる。 (4) INSERT文の時には、 ロックをかけようにも INSERT前の段階では、 ロック対象行は存在しない。 複数のトランザクションが INSERTした行のPK の値が偶然同じであった場合 ロストアップデートの危険があるので 私の創造では、INSERT文の時は テーブル全体をロックしないと、 うまくいかないように思えます。 (5) update, insert文については、 Oracleでは、自動的に該当行について 占有ロックを行う。 なお、INSERT文については、 下記の質問事項における疑問点 が解消されていないため、 行単位なのかどうか、私の中では 自身がもてないのが現状です。 ### 私の認識 end ###### ### 主な質問内容 start ### 私の認識の(4)を踏まえた上で INSERT文の時のはいた制御 の範囲や挙動について、 教えてください。 ### 主な質問内容 end ### 以上です。

  • ACCESSで排他モードにするには

    ACCESS97からACCESS2000に移行しました。 ネットワーク上にデータベースを置いて複数で使っています。 私がフォームやレポートをデザインで開こうとしているとき、他の人が同じデータベースを開いていると(同じフォームやレポートを開いてなくても) 「現在、このデータベースには排他モードでアクセスしていません。デザインの変更は保存できません。」 と表示されてしまいます。 そこで「ツール」「オプション」「詳細」で「排他モード」を選んだり、「開く」で「「排他モードで開く」を選んでみたのですが、メッセージは変わりません。 ヘルプやマイクロソフトのHPも読んでみましたが、「共有モード」にすべきか「排他モード」にすべきか、いまひとつわかりません。 ACCESS97の時はこんなことはなかったのですが、2000って「こうゆうもの」なんでしょうか。 よろしくお願いします。