• ベストアンサー

ACCESSのテーブルの分離

ACCESSのテーブルとフォームなどの分離をして設計を進めたいと思います。 今日の帰りに本屋でみた参考書によると、ある程度完成してから Accessのツールを使って分離するようなイメージで書かれていました。 これだとおそらく分離先は固定な感じがします。 もう少し柔軟に設計したいと思いますので 最初からテーブルとフォームを分けて設計を進めたいと思います。 こちらのイメージがイマイチよく分からないのでご指導お願いします。 こちらの予想では別々のMDBを設計して、片方をテーブル専用にし、 もう片方からADOXを使って接続すれば良さそうな気がしています。 しかし、ADOXはSQLServerに接続するための手法とかで自信がありません。 そもそも設計として最初から分けて作成するのも正しいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.3

#2です。 > 多分、今回の件で一番私が知りたかった情報です。 > リンクという手法があったのですね。 ただし、ドライブなどが開発環境と稼働環境が異なる場合、導入や差し替えを行ったら、 リンクマネージャで修正するか、ADOXでLINKモードのテーブルを探して自動で再リンクする必要があります。 私の場合はデータ部とプログラム部は必ず同じフォルダにして、xxDat.mdb、xxxPgm.mdbとファイル名をつけています。

hawkwind
質問者

補足

回答ありがとうございます。 方向性を色々と示していただき助かります。 環境が異なる場合はリンクマネージャで手動で修正するか、 ADOXを使えば自動リンクするのですね。 自分で一から調べるとなるとプロトタイプを作成せねばならず 模索することになります。 どうも色々とありがとうございました。

その他の回答 (2)

noname#79209
noname#79209
回答No.2

私はデータ部とフォームやレポートやモジュール部とは分けて作ります。 納めるときも分けた状態です。 データ部とはリンクしておけば、稼働中のDBに対してもプログラムやレポートの修正などそのまま入れ変えれば済みます。

hawkwind
質問者

補足

お返事ありがとうございます。 やはり分けて作った方がデータの保全性が高まりますよね。 経験者の方のお話で大分自信が出来てきました。 >データ部とはリンクしておけば 多分、今回の件で一番私が知りたかった情報です。 リンクという手法があったのですね。 ADOXだと随分形式ばった方法なので何かないかなと思っていました。

  • ikiss
  • ベストアンサー率43% (34/79)
回答No.1

経験上からの意見でよろしければ。 テーブルの設計とフォームの設計はわけて作成するのは 正しいです。 まず、どのようなデータが必要なのか、テーブル構成は?などは INPUTデータとOUTPUTデータの予想から行います。 このテーブル設計がうまくいかないと、後にテーブルの修正を しなくてはならなくなり、ひいてはシステム全体の修正に なり、時間がかかるからです。 テーブルの設計をビシっとしてから、フォームの設計と順序を 経たほうが、データをイメージしやすいですし、作業が楽に なります。 (蛇足:各テーブルには予備として5つぐらいのカラムを意味なく  作っておいたほうがいいですよ。経験上テーブル修正はどんなに  きっちり作っても後から出てきたりする場合が多いからです)

hawkwind
質問者

お礼

お返事ありがとうございます。 書いてあることはその通りだと思います。 まさしく仕様変更が色々入りそうな気配なので 予備フィールドは幾つか作成しておくつもりです。 もう少し設計に時間を割くように心がけます。

関連するQ&A

  • VBAでAccessのテーブルのエクスポート・インポートをするには。

    すみませんが、教えてください。 Excel+VBAで、AccessをSQL,ADO,ADOXで操作しようとしています。 a.mdbのテーブルを、b.mdbに、エクスポート(インポート)したいのですが、やり方がわからず困っています。 すみませんが、テーブル構造のみをエクスポートする方法、データを含めてエクスポートする方法を教えてください。

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

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

  • SQLServer2005 Access2000 Access2007 mdb

    現在、Access2000のmdbからSQLServer2000に接続しています。Accessを2007に、SQLServerを2005にバージョンアップする予定ですが、mdbはそのまま使用できますか? また、Access2000のmdbからSQLServer2005への接続もそのままできるのでしょうか? Accessのバージョンアップを行う環境とそのままの環境があり、同じサーバー(この度、2000から2005にバージョンアップするSQLServer)に接続するので互換性があるかどうか教えて下さい。

  • フォームとデータの分離

    アクセスのmdbファイルをフォームとデータの別々に分離させて、2mdbファイルをつくり、フォーム側のmdbからデータ側のmdbを見に行くという事をするのは可能でしょうか?もし可能であればどのような手続きをすればそのような事が可能になるでしょうか?

  • Accessのテーブルを展開する

    Accessのテーブルを下の例の様に分離させることは出来ないでしょうか? VBA、クエリ等手法は問いませんのでヒントをいただければ幸いです。 (元のテーブル) 品物 個数 A   3 B   2 (分離後のテーブル) 品物 個数 A   1 A   1 A   1 B   1 B   1 以上、よろしくお願いいたします。

  • ACCESSで、同じ内容のテーブルを複数人で使うのに‥

    担当が14人いて、業務日誌と出張報告書と旅費計算書をACCESSで提供しようと考えています。そこで2つほど質問させてください。 1.mdbファイルの容量増加を考慮し、下記構成のような形を採った時、 部長  ┣担当者Aのmdbファイル  ┗担当者Bのmdbファイル(担当者Aと内容は全く同じ) この部長が、担当者AとBの情報を、ひとつのフォームで見るようなことはACCESSでできますか?(マウスホイールをくるくる回すと時系列で担当者AとBの情報が次々表示されるイメージ‥)できた場合、クエリというものを使うのでしょうか? また、その際に部長と担当者A,BにそれぞれIDパスワードを振り、それぞれで見られるデータ範囲を決めることはできますでしょうか。 (部長は全員のを見られ、記入もできるが、担当者は自分のファイルしか触れないようにしたいです) 2.上記でできない場合、ひとつのmdbファイルに複数のテーブルとフォームを作ることになりますが、同じ内容のテーブルとフォームを14人分簡単にコピーする方法はあるのでしょうか。 (コピーはできますが、担当者Aのフォームとテーブル、担当者Bのフォームとテーブル、といった関連付けができないので‥) こんなにごちゃごちゃと細かく質問してしまう自分が情けないですが、ご教授頂戴できればと思います。 何卒宜しくお願いします。

  • リンクテーブルで繋げているテーブルがいきなり入力・変更ができなくなった!

    ○○.mdbと○○_be.mdbのファイルがあり、○○_be.mdbはテーブルのみで、 ○○.mdbには○○_be.mdbのテーブルのコピー(リンクテーブル)があります。 なぜか今リンクテーブルで繋げている○○.mdbファイルのテーブルが 入力できなってしまいました。 このAccessファイル(○○.mdb)で作成したテーブルは変更可能です。 リンクテーブルのみ、 値の変更も新規レコードの追加もできなくなったのですが なぜでしょうか!!?? Accessを一度落として、 ファイルを開く→「開く」で再起動しても変わりません。 リンクテーブルのもとは(○○_be.mdb)変更可能です。 しかしフォームなどは○○.mdbファイルにある為、 ○○.mdbのリンクテーブルでのデータを変更したいのですができません! 何かわかる方よろしくお願い致します!!!!! (オフィス2003です)

  • Accessでの理想の運用形態

    はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか

  • ADO&mdbで、リンクテーブルの作り方

    お世話になっています。 行き詰って困っています。 あるmdb(Access2000形式)内のテーブルを別のmdb(同)から見られるようリンクテーブルを作りたいのですができません。 VB.NET 2005 でやっています。 いろいろ調べてMSDN等からサンプルを引っ張り、以下のように作っても、 Dim catDB As ADOX.Catalog = New ADOX.Catalog Dim tblLink As ADOX.Table = New ADOX.Table catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Mdb_Link With tblLink .Name = "TEST_TBL" .ParentCatalog = catDB .Properties("Jet OLEDB:Create Link") = True <---ここと .Properties("Jet OLEDB:Link Provider String") = Mdb_Test <---ここと .Properties("Jet OLEDB:Remote Table Name") = "TEST_TBL" <---ここ End With catDB.Tables.Append(tblLink) catDB = Nothing .Propertiesの3行でエラー(プロパティ'Item'は'ReadOnly'です。)になってしまい、サンプル通りに行きません。 これについて何か心当たりありましたら教えてくださると嬉しいです。

  • Accessデータを違うmdbにコピーしたい

    VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。