• 締切済み

テーブル作成クエリとデータベースの分割

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

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

No.3のchayamatiです 自分が思い違いしていたようですね 補足願います ・バックエンドのテーブルとフロントエンドのテーブルは具体的にどのようなテーブルですか ・どちらもデータベースソフトはACCESSですか

kyjelly
質問者

補足

遅くなってしまい申し訳ありません。 補足内容と違っていたら、御指摘願ます。 バックエンドとフロントエンドに分割する前に、テーブル作成クエリを用いて、連絡先テーブルから、会社テーブルを作成しました。 その状態から、バックエンドとフロントエンドに分割したので、連絡先テーブル及び会社テーブルはバックエンドにあります。 フロントエンドにある、フォームを用いて、連絡先テーブルへ変更や追加を入力しています。 また、印刷の可否を行う場合には、フォーム(フォームBとします)を用いて会社テーブルにYes/Noチェックを入力しています。 変更や追加があった場合には、先に作成してあるテーブル作成クエリを用いて、会社テーブルを作成すると、バックエンドには会社テーブルは存在しておりますが、会社テーブルのみ、リンクが切れた状態になっています。 この時フロントエンドに、会社テーブルが作成されているため、フォームBはフロントエンドの会社テーブルを読み込んでいます。 データベースソフトは、Access2007で作成しました。 ちなみに、拡張子は、accdbとなっております。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.4

<そこから、テーブル作成クエリを再度用いて、会社テーブルを更新させます。> ?テーブル作成クエリで更新はできないですよね。 正確には   テーブル作成クエリーでテーブルを作ります。 ですよね。 さて最初にテーブルを作ってあるのですから、更新クエリで更新すればよいだけですよ。 多分テーブル自体を消しちゃうからリンクがきれるんです。

kyjelly
質問者

補足

用語をあまり理解しておらず申し訳ありません。 テーブル作成クエリ―でテーブルを作成しております。 更新クエリも考えたのですが、入力日等の抽出する条件が入力されているのであれば抽出し、更新することは可能かと思うのですが、 今のところ、そのようなフィールドを持ち合せておりません。 この場合、どうしたらよいのでしょうか…?

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

  失礼ながらAccessを理解しないまま色々やろうと しておられますが基本から丁寧に設計してゆきましょう 表題部分にて四苦八苦しております。  フォームの事ですね  フォームのデザインビューで左上の詳細の文字を右クリックして  フォームのフッダー/ヘッダー  フォームがもし単票フォームであれば  フォームのデザインビューの書式タブで帳票フォームに変更して下さいてください 連絡先テーブルを作成しました。  個々のフィールドはデザインビューで丁寧に定義しておくと  データ入力の効率が上がります  ・IME入力モード  ・IME変換モード  ・ふりがなウィザード  ・住所入力支援 会社名の中には複数のレコードがあるため、 個人向けではなく、会社向けの送付用のラベルを作成したいと思い、 テーブル作成クエリを用いて会社テーブルを作成しました。 ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、  分割は会社と個人に分かれましたか  また会社の主キーと個人の対応する項目に   リレーションシップ設定は出来ていますか 新たな連絡先が追加されたときなど、 再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。  会社登録フォームに個人登録フォームをサブフォームとして  追加する事によりリンクが維持されたままセットで登録できます  リレーションシップの設定効果です、また個人登録フォームに  会社テーブルの主キー対応も自動で取り込みます 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。  この件ご心配の趣旨がわかりませんが最初はパスしましょう できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか?  この件ご心配の趣旨がわかりませんが最初はパスしましょう 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、 できればコード等を記載していただけると助かります。  VBA,マクロは必要ないでしょう 最後にテーブルの例を記述しておきます 1、テーブル設計 T会社  ・ID(オートナンバー型)  ・会社名(テキスト型、IME入力モード=On)  ・ふりがな(テキスト型 8桁、IME入力モード=On)    並び替えの為でこれ以上必要ないでしょう  ・郵便番号(テキスト型 7桁、IME入力モード=Off)  ・都道府県(テキスト型 4桁、IME入力モード=On)  ・市区群町村(テキスト型 24桁、IME入力モード=On)  ・住所末尾(テキスト型 16桁、IME入力モード=On)  ・電話番号(テキスト型 13桁、IME入力モード=Off) T氏名  ・ID(オートナンバー型)  ・氏名(テキスト型 8桁、IME入力モード=On)  ・ふりがな(テキスト型 8桁、IME入力モード=On)    並び替えの為でこれ以上必要ないでしょう  ・会社ID(長整数型)    テーブルのデザインビューの下枠に    標準とルックアップのタグありますが    ルックアップ内は表示コントロールですが    これを入力欄の右端クリックからコンボボックスに    にするとデータ型は長整数型ですがコンボ機能    表示は会社名になる  ・部署名(テキスト型 24桁、IME入力モード=On)  ・携帯電話(テキスト型 13桁、IME入力モード=Off)

kyjelly
質問者

補足

ご丁寧な説明ありがとうございます。 また、説明が下手で申し訳ありません。 「分割」とは、No1の方のところにも補足させていただきましたが、 バックエンドとフロントエンドに分割を意味しています。 連絡先テーブルにはフォーム(フォームAとします)を用いて入力します。 そのテーブルから、テーブル作成クエリを用いて、会社名と住所を抽出し、会社テーブルを作成しました。 そこに、VBAを用いて印刷可否のYes/Noチェックを追加し、印刷可否フォームを作成し、会社テーブルのYes/noチェックからデータを抽出させ、ラベル作成を行っています。 ここで、個人が異動になったり、新たに追加の場合には、フォームAを用いて、追加・変更を行います。 そこから、テーブル作成クエリを再度用いて、会社テーブルを更新させます。 上記までは今のところ動いております。 で、先にもありますが、データベースは、バックエンドとフロントエンドに分割されています。 テーブル作成クエリを再度実行した時点で、バックエンドの会社テーブルとリンクが外れてしまうのが現状です。 テーブル作成クエリを実行した際に、バックエンドの会社テーブルが更新されるようにしたいのですが…と言った感じなのですが… 説明が悪く申し訳ありません。

noname#192382
noname#192382
回答No.2

会社宛送付用ラベルを作成するという業務をするとして、 会社テーブルを作成します。必要なフィールドは会社ID、会社名、本店支店別、管理者氏名、郵便番号、住所1、、住所2、連絡の要否です。 テーブルの作り方は、テーブルに直接に入力するか,フォームを使って入力するかのどちらかです。テーブルの入力にクエリーを使うことは通常はないでしょう。新しいデータはすべて前にあるデータの下に入っていきます。 連絡しなければならない会社はことと場合によって異なるわけですから、連絡すべき会社の会社テーブルの連絡要否のフィールドにYES/NOのチェックを入れます。 そこでデータ抽出のためのクエリーをつくります。クエリーを新規作成しそこに郵便番号、住所1、、住所2、管理者氏名、連絡の要否のフィールドを読み込み、そして抽出条件として、連絡の要否フィールドがYESになっているものだけを選び出します。 この表をエクスポートして、さしこみ用のデータとし、ワードのさしこみツールを使ってさしこみ用文書をつくり、差込すればラベルが出来上がります。

kyjelly
質問者

補足

説明が下手で申し訳ありません。 連絡先テーブルには、フォームを使って入力します。 印刷可否のYes/Noチェックも設けてあります。 イメージとしては管理者で作成するのではなく、「御中」と言う形にしたいのですが…

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

すみませんが、データベースの分割ってどういう意味のことを言っていますか?

kyjelly
質問者

補足

バックエンドデータベースとフロントエンドデータベースのことです…

関連するQ&A