• ベストアンサー

Accessデータベース分割後のブラッシュアップ

以前、回答が来なかったので、再質問です。 Access2010を使用している初心者です。 データベースを分割してフロントエンドファイルを複数人に配布する予定なのですが、今後運用中にテーブルやフォームのカスタム(フィールドを追加する等)が必要になってくると予想しています。 こういった場合、どのようにカスタムするのが一般的(効率的かつ安全)でしょうか。詳細なオペレーションまでご教示いただけると助かります。よろしくお願いいたします。

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

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

複数ユーザーで共有している場合のフロントエンドファイルのバージョンアップ http://hatenachips.blog34.fc2.com/blog-entry-422.html が参考になるかと思います。 更新のになるのはテーブルに入れてあるバージョン番号です。 私の場合は、 バックエンドのファイルのテーブルにバージョン番号を入れておいて フロントエンドにリンクテーブルを設けます。 もう一つフロントエンドに普通のテーブルをおいてここにもバージョン番号を入れます。 メニューフォームが最初に立ち上がるように設定し、 そのなかでDlookup関数とかでリンクテーブルと自テーブルのバージョンをチェックし 違っていたら バージョンアップ用のMDE(ACCDE)を呼び出し、自身は閉じます。 呼び出された方はフロントエンドが完全に終了しているのを確認後に削除 ファイルサーバーにある新しいフロントエンドファイルを デスクトップにコピーし、立ち上げ、自身を終了。 というのを作ってました。 ユーザーの中にはズルしてファイルサーバー上のフロントエンドファイルを 直接開いて使う人がいましたので(ネットワークドライブ設定の場合) Currentdb.name とAPIのWNetGetConnection で調べ警告を出して閉じるようにもしました。 http://support.microsoft.com/kb/160529/ja それから、ユーザーの誤操作によってバックエンドのファイルが消されてしまう場合がありましたので フォルダのアクセス権を変更し一般ユーザーの削除の権限を取り上げました。 これによりロック情報ファイル(ldb、laccdb が残りますが私もユーザーの一人だったので問題無し) ただ、一般ユーザーの『最適化』は失敗しますので「閉じるときに最適化」オプションは変更しました。 またバックエンドのファイルには当然パスワードを設定し フロントエンドはVBAのコード中にパスワードが含まれているのでMDE/ACCDEにしました。 あと、大事なのはバックエンドのファイルのバックアップですね。 VBSで作ってタスクスケジューラで定期的に実行するか フリーウェアのBunBackUpを使わせてもらうと世代バックアップも楽になります。 懇切丁寧、手取り足取り教えてくれる奇特な人は期待しない方が・・・。 以上簡単ですがご参考まで。

mach-iwasaki
質問者

お礼

貴重なご助言有難うございます。常にサーバ上には(Excelからデータを変更したりするときにVBAで参照している)フロントエンドファイルが置いてあるので、それがご回答内の”もうひとつのフロントエンドファイル”の役割を担うことができるかと思います。ご参考にさせていただきます。

その他の回答 (1)

回答No.1

ウーン。運用中にテーブルを変更ですか?これは、やったことはないですね。せいぜい、バグ修正程度。 >こういった場合、 >どのようにカスタムするのが一般的でしょうか? 「効率的で安全な一般的手法はない!」-これが、回答かと思います。 理由、ケースバイケース。 フィールド追加アプリケーションでもって、追加と追加後の整合性と不具合を追放すべきだが・・・。それが、テーブルデータだけの範囲なのか?それとも、使用しているSQL全般に影響するのか?フォームや帳票のレイアウトとコードにも影響するのか?その量と質とによって、やり方は違ってくるでしょう。ですから、一般的ってのはありえない。影響が微々たるものであれば、手作業でも十分だろうし・・・。いずれにしろ、「運用中にテーブルを変更」は止めたがいいですよ。

mach-iwasaki
質問者

お礼

ご回答有難うございます。現在はマイナーバージョンアップとしてフロントエンドのカスタマイズをしていますが、まだテーブル変更は行っていません。ユーザがいないタイミングでバックエンドファイル側のバージョンアップを行いたいと思います。

関連するQ&A

  • ACCESSデーターベースの分割

    OS: Windows 2000 version: Access 2003 ACCESSでデーターベースを構築し運用していますが、破損が頻繁に起こり、 全員がいったんデーターベースを閉じ修復を行うまで、新しいユーザーがデーターベースを開けなくなってしまいます。 現在、ユーザーは5名ほどです。 過去の質問を読んでいますととにかくテーブル側とフォーム側に mdbファイルを分割せよとの皆さんおっしゃっておられますので試したところ、処理速度が格段に遅くなってしまいます。 一つのフォームを開くのに15秒以上かかることもあります。 このような問題はみなさんどうやって解決されているのでしょうか? 

  • データーベースの分割(Access 2007)

     お早う御座います。  VISTA Office 2007 Access 2007です。  Access 2007になってデーターベースの分割が出来るようになりましたが、色々と本を読むと「テーブル (バックエンドデーター)とフロントエンドに分割し、ユーザーが自由にアウトプットを表現出来るようになっている」 と書かれていました。  これは一体どのような意味でしょうか。  つまり、一番データーの元となるデーターはバックデーターとして、管理者が管理し、ユーザーはデーター入力フォーム からのデータの更新、クエリの作成、アウトプットのみを行うというシステムなのでしょうか。  それなら、具体的には、一体どの部分とどの部分が分割されるのでしょうか。  また、両者(バックエンドとフロントエンド)がハード的に遠隔地にある場合には、データの更新時、クエリの作成時には、 元のバックデーターとはどの様にハード的に繋がるのでしょうか。  元のバックデーターと同じものが、フロントエンドにもあるのでしょうか。それならあまり意味がないようにも思えるのですが。  また、このように分割することはどのようなメリットがあるのでしょうか。

  • フロントエンド、バッグエンド アクセス 意味

    アクセスで フロントエンド、バッグエンドという言葉が出てきますが こういうことであってますか? テーブルとそれ以外を分割して フォームたちをフロントエンド、 テーブルのみをバッグエンド そういう言い方であってますか?

  • 業務用データベースの開発費

    業務用データベースの開発費 バックエンド:MySQL(30テーブル、200カラム、テーブル単位でのGRANT5種、5~20ユーザ程度) フロントエンド:MS ACCESS(50~60フォーム+適当なVBA) ざっとこのくらいで、外注するとどの程度費用がかかるものなのでしょうか? 適当で良いので教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブル作成クエリとデータベースの分割

    当方、Accessは全くの素人ですが、急遽Accessにて連絡先台帳を 作ることとなりました。 参考書を片手に、なんとかそれ相応のものになってきましたが、 表題部分にて四苦八苦しております。 どうぞ、ご教授のほどよろしくお願いします。 まず、連絡先テーブルを作成しました。 この中には個人名、会社名、住所などを入力するようにしました。 会社名の中には複数のレコードがあるため、個人向けではなく、会社向けの 送付用のラベルを作成したいと思い、テーブル作成クエリを用いて 会社テーブルを作成しました。 上記テーブルから、ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 また、この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、新たな連絡先が 追加されたときなど、再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。 できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか? 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、できればコード等を記載して いただけると助かります。 Access2007を用いております。 どうぞよろしくお願いします。

  • Accessの運用について

    マクロソフトAccess2003でデータベースをネットワーク上で運用しています。データ用のmdbファイルをネットワーク上に置き、クライアントはリンクテーブルを張ったmdbファイルをデスクトップ上において使用しています。 一般的にはスタンドアロンで使用すべきソフトであり、パフォーマンスの低下等の問題が出てきたらアップサイジングが推奨されていると思います。 そこで素朴な疑問が生まれました。 たとえば、Accessデータベースを運用していて3万件のレコードでは問題なく稼動しており5万件を過ぎたあたりでパフォーマンスが低下して使い物にならなくなったとします。 パフォーマンスが低下しないで運用できる確実なレコード数は4万件とします。 そこで、レコードが4万件に達した時点でテーブルを分割します。今までのテーブルを【テーブルA】とし、分割後のテーブルを【テーブルB】とします。 繰り返しになりますが、【テーブルA】が4万件になったらこれを分割して【テーブルB】を設置して各2万件のテーブルとします。 2万件に分ける基準はあるフィールドを基準とし、運用上は検索の第一条件として、この条件決定後にレコードソースを【テーブルA】にするか【テーブルB】にするか決めるようにVBAで指示します。 【テーブルA】か【テーブルB】のどちらかが4万件に達した時点で同様のテーブル分割を行い【テーブルC】、【テーブルD】・・・・・と繰り返していけばレコード数増加によるパフォーマンス低下問題はずっと回避できると思うのですがいかがでしょうか? もちろんAccessは2Gのファイルサイズ制限がありますから、ファイルサイズが影響するパフォーマンス低下と判断すればバックエンドのmdbファイルも分割します。 なにぶんAccessの運用経験1年程度ですので、もしかしたら頓珍漢な発想かなと思い心配です。 ベテランの方々からのアドバイス・ご意見を頂きたいです。 よろしくお願いします。

  • Accessセキュリティ設定でのバックエンドデータ保護

     Accessを使ったアプリケーションによる社内業務改善、初挑戦の者です。  Access2003で開発したアプリケーションを用いて社内LAN上でデータベース を共有するため、セキュリティウィザードによって作成されるショートカットを 社内ユーザに配布して運用しています。  ところが、配布したショートカットのプロパティはユーザが覗くことができ、 そこには実体ファイルの所在がフルパスで記述されている為、これをたどれば ユーザが実体ファイルに直接アクセスすることができてしまうことに、きづき ました。  せっかくセキュリティ設定しても、改ざん(意図はなくても誤操作を含め) や破壊のリスクがある為、なんとかしたいと考えています。  回避する方法はないでしょうか?  なお、アプリケーションファイルはテーブル以外のオブジェクトを含んだ フロントエンドと、データベース本体(テーブル)のみを含むバックエンドに 分割しており、上記のセキュリティウィザードはフロントエンドに適用して 作成したものです。  フロントおよびバックエンドのmdbファイル、およびセキュリティ設定の mdwファイルはいずれも、関係ユーザのみがアクセス可能な社内LAN上の 特定フォルダに置いています。  万一所在が知られても、セキュリティ設定されたフロントエンドファイルや セキュリティ設定ファイルは開けないので良いのですが、バックエンドファイル (データそのもの)が開かれて改ざんされてしまうことを危惧しています。  つまりファイルが消されてしまう事故は気付くので良いのですが、データの 改ざんは、気付かずに運用継続されてしまう為、安心して運用ができません。  回避方法のご教示を、どなたかよろしくお願い致します。   以上

  • AccessとSQL Serverの連携について

    Accessをフロントエンドとして、SQL Serverをバックエンドとしてデータベースを構築したいとします。 【質問1】 構築後、Accessのテーブルやフィールドを変更することはできるのでしょうか。 【質問2】 上記の仕組みをWindowsサーバではなく、UNIXサーバ上で実現できるでしょうか。

  • ACCESS アクセスで他のデータベースからのデータインポート

    アクセスど初心者です。 Aというデータベースファイルにあるテーブルaのデータを、Bというデータベスファイルにあるテーブルbに インポートできますか?フィールド等詳細は両テーブルとも一緒だとします。 イメージ的には、テーブルbの最終レコードの後にテーブルaのデータがくっつくという感じです。 コピー&ペーストだとエラーになってしまうのですが・・・。宜しくお願いします。

  • アクセス バックエンド、フロントエンド

    アクセスで テーブル、クエリ、フォーム、モジュールを バックエンド、フロントエンドに分けるのならば、 テーブルはバックエンドで それ以外はフロントエンド と言う認識であってますか?