• ベストアンサー

複数のAccess mdbでの処理の共通化

現在複数のAccess mdbの改造を行っております。 Accessのバージョンは2000(確定),稼動OSはWindows2000(予定)です。 さて、複数のmdbで同じような処理を行っているので共通化したいのですがそのやり方がわかりません。 1個のmdbの中だけだったら標準モジュールをプロシジャー化すれば良いのですが、複数のmdbでプロシジャーの共有はできるのでしょうか。 或いは目的(同じような処理を一個所に纏め保守性を向上させる)を達成する為の方法だったら何でも良いですので 御回答宜しくお願いします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

>1は有力な選択肢になりそうです。で、確認ですが >参照とは参照設定の事ですね。そうならば、テスト環境と >運用環境でドライブ等の構成が同じ保証が無いので、 >設定のし直しが煩わしいような気がします。 MDAファイルは、ご想像の通りのことが発生します。 (ActiveXなどは内部的に別の仕組みがあるので発生しません。) ただし、MDAファイル自体の場所が一定の場所にあればいいので、system32ディレクトリに置く等で対処可能かと思われます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

#3の方の言うmdaはライブラリデータベースで他のアプリから呼び出すことができるプロシージャとデータベースオブジェクトの集まりです。 ライブラリデータベースは最初にカレントデータベースからライブラリデータベースへの参照を設定しないと使えません。 各個別のPCにあるmdbからmdaを参照してその中にあるプロシジャを使うということです。「複数のmdbでプロシジャーの共有はできるのでしょうか」ということでしたらこれでOKかと思います。 >同じような処理を一個所に纏め保守性を向上させる この場合、同じようなではなく同じ処理をするならライブラリを参照して処理するので良いと思います。 「同じような処理」では似ているが違うところがあるとすれば必然的に各mdbからリンクされるテーブルを集めた同一mdb内で処理したほうが保守性が良いのではと感じます。

全文を見る
すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

1.MDAファイルを作成し、共通的な処理はそこに移し、MDBからは参照をさせる。 2.共通処理のDLL化を行う。 CやVBで作成可能(Delphi等でもかまわないけど) MDAファイルの方が簡単かな?

graphaffine
質問者

お礼

回答有り難う御座います。 まず、2はdllを作れる者がいませんので 無理ですね。 1は有力な選択肢になりそうです。で、確認ですが 参照とは参照設定の事ですね。そうならば、テスト環境と 運用環境でドライブ等の構成が同じ保証が無いので、 設定のし直しが煩わしいような気がします。(参照設定と言う言葉は聞いた事がありますがどんなものかよく分かっていないので間違った事を行っているかも知れませんが)

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

データベース(mdb)をフロントエンド、バックエンドに分けて運用する。 フロントエンド側は通常の個別に処理するものは各mdbで処理する。 フロントエンドで使用するテーブルはバックエンドのmdbに全て置く。 共通の処理はバックエンド側で一括に行う。

graphaffine
質問者

お礼

回答有り難う御座います。いろいろ難しい言葉が出てきて理解しずらい点がありますが、要するに#3の1と同じ趣旨と考えてよろしいのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

複数のMDBがすべて同じ構成とします。 (各営業所ごとに設け、本社で管理、のような使い方を前提) この場合、共通の処理を作成するMDBをひとつ作成し、 各mdbへはリンクテーブルを使用する、ではどうでしょう。 コードとデータを分離する、という方法です。 メニューのツール>データベースユーティリティ>    リンクテーブルマネージャと進みます。 「毎回確認する」の選択枝があるはずなので 使用の都度、変更しなければなりませんけど。 なお、ACCESSインストール時にオプションだったと思うので注意してください。

graphaffine
質問者

お礼

回答有り難う御座います。でも、良く理解できません。 共通処理を分離させるということは分かりますが、 リンクテーブルがそれとどのように関わってくるのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • サブルーチン(共通の処理)の作り方

    VB6.0の時までは、標準モジュールやフォームモジュールにサブルーチン(共通の処理)を作って、他のフォームモジュールから呼び出しができるようになっていましたが、VisualBasic2005ではできないのでしょうか?共通のサブルーチンを作成する方法を教えてください。よろしくお願いします。

  • 異なる複数の言語から共通モジュールを呼び出す方法

    4つの独立したサーバで、それぞれ異なる言語で記述されたシステムが1つずつ稼動しています。例えばC++、Java、PHP、Rubyとします。 これら4つのシステムに同一の機能追加を行いたいと考えているのですが、4つの言語でそれぞれプログラムを作成するのは大変なので、何とか1つで済ませることは出来ないかとやり方を探っています。 例えばCで「myCommon.dll(またはmyCommon.so)」という共通モジュールを作成したとして、C++、Java、PHP、Rubyで稼動している各システムからこの共通モジュールを呼び出す方法はあるのでしょうか?(共通モジュールは各サーバに1つずつ配置する予定です。ネットワーク越しに実行するわけではありません。) 一応、共通モジュールを実行形式にして、各システムからexec関数などを使用して呼び出すことは出来るようなのですが、共通処理を実行形式で置いておくのが何となく気持ち悪いのと、関数が複数定義してある場合にコマンドラインオプションで処理を振り分けないといけなくなるため、スマートなやり方では無いのではないかと感じています。 理想的なのは、共通モジュールに定義された関数を、それぞれの言語でネイティブな関数のように呼び出せることなのですが・・・。 このように複数の言語から呼び出されるような共通処理を作成する場合、「常套手段」のようなものはあるのでしょうか?

  • ACCESS 複数で開くとサイズが大きくなり遅くなる

    ACCESSで作ったMDBです。 誰も使っていなければ、2GBくらいのサイズなのですが、複数人(多いときでは5,6人)でアクセスし、開いていると、20GBくらいのサイズにふくれています。 これは何故なのでしょうか。 そのためか、VBAで作ったデータ更新の処理がとても遅くなっています。 よろしくお願いします。

  • アクセスのコピーや改造をされないためには?

    アクセスで作ったデータベース処理のコピーや改造して配ったりされにくくするための簡単な方法はありますか? アクセスの場合、.mdbをコピーされたらどうしようもないのでしょうか?

  • Excel VBA:モジュールを複数のブックで共有するには

    お世話になります。 現在、Excel VBAで複数のプログラムを開発中なのですが、 ある程度 処理を共通化したいと思いまして、出来れば標準モジュールと クラスモジュールを別のブックに保存しておき、それを参照設定か何かで 取り込んで動作させたいと思っています。 でも、参照設定しようとしても何かの名称が重複しているらしいエラーが 表示され(しかも何が重複しているのか教えてくれない)、うまくいきません。 ちなみに、共有したいブックは移動する可能性もありますが、最悪、 サーバの固定的なフォルダに置いておくのでも可、と言われています。 (アドインでの取り込みは、この時点で不可能?) うまく(出来れば標準モジュールとクラスモジュールだけ)共有することは できないものでしょうか? 当方、VBの経験は そこそこあるのですが、VBAは 大して使ったことが無い状態です。 もしかしたら、単純にやり方を知らないだけかもしれないのですが、 知恵をお貸しいただければ有難いです。

  • これもaccessファイルを共有している事になりま

    これもaccessファイルを共有している事になりますか? 1つのパソコン(vista)を複数のユーザーで共有し db1.mdbをパブリックのフォルダに置き ユーザー1ログオン時に、db1.mdbを開き ユーザーを切り替えて ユーザー2でログオンし、db1.mdbを開いてデーター入力することも 「アクセスを共有してる」 「db1.mdbを共有して使ってる」 という事になりますか?

  • mdbファイルの共有について

    いつもお世話になっています。ACCESS2000で作成したファイルをWindows2003Server上に配置してあります。MDB自体は共有モードで開くように設定されています。配置されているフォルダはeveryoneのフルコントロールにアクセスの権限を持たせています。そこで、二台のPCからそのMDBファイルを共有したいと考えています。 PC(1)OS: windows XP - access2003 PC(2)OS: windows 98 - access2000  上記の二台で開こうとしています。現状でXP上から先に開くと98でも同時に開くことができるのですが、winews98で先にひらいてしまうと他のPCから開くことができなくなります。ファイルをクリックしてもエラーメッセージも出ず無視何の反応もありません。なぜこのような現象がおきるのでしょうか?システムの稼働日が大分せまっており非常に困っています。誰かわかる方よろしくおねがいします。

  • 標準モジュールを共通で使うには?

    いつもお世話になります。VB2005です。 ソリューションには最低1個のプロジェクトが存在します。それに複数個の標準モジュールを追加してプログラム全体を構成しています。 ここで、独立した複数個のソリューション(プロジェクト)をつくり、それぞれから共通に利用できる標準モジュールを利用することがあります。この標準モジュールに何か変更が生じたときは、それらを利用しているプロジェクト内へファイルコピーして、後日の不一致を防止しています。 過去の古いVBでは、特定のホルダーに標準モジュールを置いておくことで共用ができていたと記憶しています。ですから、ある編集中プロジェクト内の標準モジュールに変更があっても、他のプロジェヘクトへ自然に反映されていました。 VB2005においても何かの設定で同様のことが可能でしょうか? よろしくお願いします。

  • Accessで作成したアプリを複数で利用するには

    Access2003で作成したmdbファイルを複数台のパソコンで同時に利用したいのですが、何が必要でしょうか? 利用しているAccessはOffice2003 Professionalのもです。そして、作成したmdbファイルをサーバの共有フォルダに置き、各クライアントにはインターネットで見つけたAccessランタイムをインストールしました。 でも、これって正規のやり方ではないですよね? 調べてみると、OfficeのDeveloperが必要だとか… クライアント数は20台、サーバ1台の環境です 正規でいくと、何が必要で費用的にどれくらいかかるのでしょうか 宜しくお願いします

  • accessの処理が遅い

    accessの処理が遅く困っています。 何か良い解決方法があればご教授お願いいたします。 まずは現状を説明いたします。 仕事でaccessを使用していますのでどこまで話していいのか迷うとこですがなるべく詳しく書きたいと思います。 まずは私の現状を ・accessは利用歴半年ほどでまだまだ全然理解していない ・職場で必要に迫られて独学で勉強しています ・私的には頑張ってネットや書籍で色々と調べてみました 仕事場で行なっていること ・職場の基幹システム(これが何で作られているとかはさっぱり分かりません)は次のようなデータを処理しています。顧客データ、在庫管理、作業履歴、入出庫管理などなど ・上記の基幹システムが毎日「データ」という名前の圧縮ファイルを本社サーバにエクスポート?していきます ・私はのそ「データ」という圧縮ファイルを使って作業を(主にデータ分析)を行なっています ・「データ」を回答すると「データ1」「データ2」「データ3」「データ4」という4つのMDBファイルが出てきます ・私はその「データ1~4」のMDBファイルを自分の支店の共有フォルダにコピーして作業を行なっている ・ローカルのPC上ではなくネットワーク上にファイルを置くのは、支店内の全員のパソコンからアクセス出来るようにとのことです 問題となっている処理に時間のかかる処理内容というのが クエリを多重で行う(言い方が合っているのか?^^;)ということを5段位行っています 遅いのは当たり前というのはわかって入るのですが、1度のクエリで目的のものを表示させられないので結果こうなりました(ーー; 他にも遅くなっている理由があります 「データ1」などの元となるMDBファイルに入っているテーブルを全てリンクデーブルで参照しています(言い方あってるかな?) なぜ普通にインポートして使わないのかという理由を説明します。 ・「データ」というファイルは毎日、新しくシステムから落ちてきます ・私としては毎日行うクエリを再利用したい ・「データ1」というファイルをある場所に置いておき、自分のデスクトップにMDBファイルを作成し(これを作業ファイルと呼ぶ)、そこに「データ1」の中のデーブルをリンクさせておく。 そして作業ファイル内にクエリを作製する あとは毎日の新しい「データ」ファイルを過去のファイル(作業ファイルにインポートしたリンク先)に上書き保存する。 こうすることでクエリを作製し直さないで同じクエリを再利用し、表示されるデータは毎日最新をキープする。これが理由なんです。 (本当は作業ファイルもネットワーク上に置きたいのです、というか置いていました。しかし遅すぎるため今は取り敢えずデスクトップ上に置いています) しかしこのクエリが多重で行われているためか結果を表示するのに3分~5分かかります。 これを早くしたいのです。 上記の方法におかしな所や、こうしたほうがより早くなるなどのアドバイスがあればお願いします。 そして別件ですが、こういった状況ですので個人的に色々調べてみました。 どうもaccessは大きなデータには向いていない?というような情報を目にします。 「データ1」などのMDBファイルにあるデーブルは100万行などのテーブルもあります。 MDBファイルの容量も2GBギリギリです。 こういう場合はMYSQLやsqliteなどを使用したほうが良いのでしょうか? そういったものを使用した場合は今のaccessのようにGUIで簡単にクエリなどを作成できますでしょうか? そういたものを使用してMDBファイルを扱えるのでしょうか? 非常に分かりにくい質問で申し訳ございませんが宜しくお願い致します。

このQ&Aのポイント
  • メールフォワード(転送サービス)を使っているが、認証のメールが転送されない問題が発生している。
  • 転送されないメールはサーバーに残っており、WEBメールからは確認できる。
  • 問題の原因は設定にある可能性がある。
回答を見る