• ベストアンサー

ACCESS MSDE フォーム上からのデータ更新による競合

いつもお世話になっております。 WINDOWS XP ACCESS 2002,2003 を使用しております。 既存のMDBファイルを MSDEを使用するADPファイルに置き換え、 なおかつ複数端末による運用が可能なようにシステムを変更しております。(元々複数端末で使用しています) 以下の手順でadpファイルを作って運用使用とする場合に疑問があるのですが。 (1)MSDEデータベースに接続したadpファイルを作成。 (2)フォームのレコードソースをMSDEデータベースのテーブル、 テキストボックスのコントロールソースに、そのテーブルに存在するフィールドを設定。 (3)このadpファイルを複数マシンに置き、同時に起動。 (4)作成したフォームで同一のレコードを同時に修正。 この場合に、後のほうで更新した時に 「データの競合」ダイアログが表示され、データを反映するか、先に更新されたほうを優先するか 選択できるますが、 mdbでも同様の運用が可能ですが、この運用を続けるとデータ破損の温床になるようですので控えておりました。 MSDEを使ったadpファイルでも同様のことが言えるのでしょうか? また、もしこの運用に問題があるとすれば、非連結のテキストボックスを設けて「更新」ボタンでADOによる 更新を行わなければならないのでしょうか。 レコードをリスト形式で表示しているので出来ればそれはさけたいのですが。 どなたかご教授のほど、何卒よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

> MSDEを使ったadpファイルでも同様のことが言えるのでしょうか? 安心してください。 単体のデータファイルをローカルの Access.exe が開く MDB のケースと違い、MSDE は DBMS です。 データベースを管理するシステム。 だから更新などの競合が起こったときに交通整理をしてくれるのです。 ひとつの MDB を複数の端末から開いてデータを更新する場合、ひとつのファイルを複数から更新するわけです。 対して MSDE の場合、データを更新するのはサーバで稼動している MSDE であって、ローカルで起動している Access ではありません。

o_w_nakazaki
質問者

お礼

ご回答ありがとうございます。 心強い宣言をいただき、安心しました。

その他の回答 (1)

  • panick
  • ベストアンサー率40% (26/64)
回答No.1

ACCESSのデータベースは基本的にパーソナルなスタンドアローン型です。一方、MSDEデータベースは小さいながらもクライアント/サーバー型の SQL-Serverです。 ACCESSから MSDEデータベースを利用する方法には次の2つがあります。 (1).ACCESSのデータベース mdbから ODBC経由で、MSDEデータベースにリンクして使う。   これまでのACCESSのデータベースを殆ど変更せずに、MSDEのデータを利用できますがパフォーマンスは低下します。 (2).ACCESSのプロジェクト adpから OLE DB経由で、MSDEデータベースに接続して使う。   従来のACCESSのデータベースにある DAOコードはすべて ADOに変更する必要があります。同じ ACCESSであっても ACCESSプロジェクト adp のデータベースは全く別物だと思って下さい。データベース構築を最初から作り直した方がよいです。MSDEデータベースはクライアント/サーバー型ですので、データの競合を心配する必要はなくなります。 どのような ACCESSのデータベースでクライアント数も分かりませんが、既存のデータベースが簡単なものならば ODBCによるリンク方式の方が良いと思います。本格的なクライアント/サーバー型のアプリケーションを作成するならば、SQL-Server(MSDE)をベースとして再構築することをお勧めします。

o_w_nakazaki
質問者

お礼

返信が遅くなってすみません。 ご回答いただき、ありがとうございました。

関連するQ&A

  • Accessアップサイジング後の入力一時テーブル

    MDBよりADPにアップサイジング中。access2007+sqlserver2005にて構築中です。 MDBのときはserver側にテープルすべて移動させリンクにて運用し始めたが、Dataテーブルを直接参照させ開かせると他の処理に影響があるので、入力一時ファイルを作成しておき入力フォームで入力後入力完了ボタンで、更新、追加、削除させDataテーブルに書き込ませていました。 この時server側にこの一時入力テーブルを作ると、レコードが混ざってしまうのでクライアントのMDB 上にこのテープルだけ持たしていました。 ADPにするとこの手法はとれないので(ADPにはテーブル、クエリ等持てない)どのようにすればいいのでしょうか。 くぐったりすると、ローカル一時ファイルを作るようにあるのですが具体的には理解できません。 その入力フォームが出てくるのは、親子リンクで子側のテータテープルとして使用しています(発注フォームの商品明細部分) よろしくお願いします。

  • Accessのデータ共有について

    現在社内の顧客管理システムをAccessにて構築しており、データテーブルファイル(mdb)をファイルサーバに置き、クライアントPCはフォームやクエリだけのmdbを使用してテーブルのリンクでデータ共有しています(Accessのデータ分割ツールにてテーブルとフォーム、クエリを分離しただけの状態で運用しています)。これまでは、この状態でも運用出来ていましたが、データ量が多くなるにつれ、段々動作が重くなってきた為、処理速度改善の為に、以下の二案を検討していますが、どちらの案が効果的なのでしょうか? 【案1】 クライアント用mdbファイルに同じテーブル構成の一時テーブルを作成し、mdbファイル起動時と、「更新」ボタンを別途作成し、「更新」ボタンが押下されたタイミングで、ファイルサーバのデータベースからADOにて一時テーブルに全データを読み込む。更新系の処理は、各クライアントの一時テーブルとファイルサーバのデータベースに対して行う。 【案2】 現状フォームの遷移については、 「DoCmd.OpenForm」関数の引数に検索条件を指定する方法で行っている為、この部分を ・ADOにてデータを取得  ↓ ・遷移後のフォームに値をセット と言った処理に変更する。 また、上記以外の方法で何か良い方法がありましたらご指摘頂ければと思いますので、よろしくお願いします。

  • AccessからMSDEへの移行

    Acessで運用していたデータベースをMSDEで再構築を考えていまして、 ファイルの管理について教えてください。 Accessでは日々追加されていくデータを月毎にファイルを作成していました。 (3000件程度になります) このファイルごとにバックアップを行っていましたが、MSDEでは細かくファイルを わけずに保存するものなのでしょうか? また、蓄積していったデータは、バックアップを取って削除していくのでしょうか? よろしくお願いします。

  • Access、更新用データと連結したフォーム

    度々の質問で恐縮です。 検索フォームの検索結果を、レコードセレクタのWクリックで、 更新するためのテーブルと連結したフォームを開いて、 そのフォーム項目に「値の代入」をしています。 で、その「更新用データのフォーム」で更新項目を編集し、 ボタンを押すと「フォームと連結したテーブル」を使った更新クエリを実行する、 というマクロを実行するようにしてみました。 その処理を実行後、「更新用のフォーム」を閉じて、最初に書いた検索フォームで 検索すると、更新実行結果が反映しません。 レコードセレクタのWクリックを抜きにして、直接「更新用フォーム」を開き、 そのフォームにある「更新用のマクロ」を実行するボタンをキックすると反映します。 で、今は更新用フォームからマクロをキックするボタンは消して、 更新用フォームを閉じると、更新用データのテーブルは更新項目を反映しますので、 直接「更新用マクロ」をキックするだけのボタンしかないフォームを別に開いて、 そのボタンを押すようにしています。 最初の構成で、つまり、「更新用フォームで編集し、その画面のボタンで 更新用マクロをキックして更新実行したい」のですが、編集内容が 「更新データテーブル」に反映するには、どうすれば良いでしょうか? くだくだしい説明を書いてしまい、まことに申し訳ありませんが、よろしくお願いします。

  • MSDEについて

    このサイトで色々勉強させて頂いたのですが、ご意見お聞かせください。 MDB、MSDE,SQLサーバーとデータベースがあった場合。 基本的にMDBはスタンドアロンで使用するものだと思っております。(数台のクライアントを繋げて使用するのには壊れやすい?) SQLサーバーはサーバー側にデータベースを持ち、複数台のクライアントを接続する場合に使用するという認識を持っております。 そこで、MSDEなんですが、オフィスプロに付属していて配布ができ、SQLサーバー互換ということが書いてあったのですが、やはりサーバー上にデータベースを持ってクラサバ型で使用するものなのでしょうか? 配布も無料とのことですが、SQLサーバーより不利な点としては何があるでしょうか? 接続台数は5~7台位になるかと思います。 コストを抑える事を考えると、SQLサーバーの変わりにMSDEを使用した方がベターなのでしょうか?

  • Access or Excel or MSDE開発について

    現在小規模なシステムの実装について検討中です。 当初はExcel-VBAのみでシートにデータを管理して共有ブックとして 複数ユーザに使用させようと考えていました。 しかし同時更新時の排他制御などがスマートではないため やはりDBMSを使用した方が良いかな?と思っています。 勿論できるだけコストは控えて・・・。 ということで以下の実装を考えているのですが、なかなか決めてがなく迷っています。 アドバイスいただければと思います。(新案も大募集です) (ちなみに商品データを管理し、複数ユーザが登録したり更新したりするシステムです) (1)Access(mdb)をサーバにおき、複数で使用 (2)Access-MSDEでC/Sを構築 (3)Excel-Access(mdb) (4)Excel-MSDEでC/Sを構築 (1)については危険だと聞きました・・ (2)(4)はフロントエンドをAccess,Excelのフォームで構築する違いです。 (3)はフォームをExcelで実装し、データをAccessで管理するイメージ。

  • MSDEへの移行

    質問させていただきます。 現在、MS-Access2000で運用しているシステムを、複数台で運用することを検討しております。 そこで・・・MDBをMSDEへ移行した場合、クエリー、フォーム、レポートなど変更(修正)せずに使えるのでしょうか? あるいは大幅な変更(修正)が必要なのでしょうか?

  • アクセス2000のフォームについて

    アクセスでまたつまずいてしまいました。ちょっと教えてください。 複数のテーブルから選択クエリを作り、それを基にオートフォームでフォームを作ったのですが、フォームでデータの入力が出来ません。クエリでもデータの入力が出来ません。 「このレコードセットは更新できません」と下のほうに出ます。 フォームのプロパティのデータの更新の許可と、データ入力用のところは“はい”になっています。 私では原因がわかりません。わかりにくい質問でしょうが、どなたかご指導お願いします。

  • MSDEのバックアップ

    こんにちわ。 今までAccessのmdbを一人で使うという前提の元で 開発・使用していたのですが、 複数ユーザーからの同時アクセスの必要性が出てきたので 少し調べてみたらAccessのCDに おまけ(とはいえないようなすごいものですよね?)でMSDEと いうものがあるというのを知って、これに 乗せ変えてしまおうかと考えています。 (もちろん殆ど作り直しだとは思うのですが ^^;) そこで質問なのですが、今までmdbファイルのバックアップ ですんでいたのですが、MSDEになると、どうなるのでしょうか。 SQL Serverだとそういった管理ツールがついてくるらしいのですが MSDEを実際に運用する時は、日常のバックアップ 作業はどのようにするのでしょうか? (素人考えで、ATコマンドで、backup databaseを 発行するのかなとか思っています。)

  • フォーム内のデータをすべて更新したい

    フォーム内のデータをすべて更新したい ACCESSでデータ入力ができるようにフォームを作成しました。 わりと頻繁に同じ様な内容のデータを入力することがあり、レコードのコピーをボタンウィザードのレコードの複製を使わず、選択しているレコードで必要な部分のみをコピー用に用意したテーブルに追加して、追加したテーブルから元のテーブルに追加するというマクロを作成しました。 テーブルにはデータは追加されているのですが、フォーム上には「F5キー」やメニューの「すべて更新」ボタンをクリックしないとフォーム上に現れません、マクロ「再クエリ」や「コマンドの実行」-「最新の情報に更新」を入れてみましたが、「F5キー」やメニューの「すべて更新」ボタンをクリックした時のような動作はしてくれませんでした。 どういったマクロを作ればよいかご教示いただけないでしょうか。 緒ろしくお願いいたします。 ACCESS 2007を使っています