こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テーブルをひとつにまとめられる?[ACCESS2000]

各取引先への請求書をアクセスで作成しております。
これまではエクセルで作成しておりました。

エクセルのファイルの様子を書きますと、
1.シートで月ごとにわけています。
2.1行に1社の明細と請求額を記録します。
3.シートをクリックするだけで過去の請求も見られます。
4.取り引き先は月ごとに多少変動します。

上記のことをアクセスひとつでやりたいのです。

もっとも困っている点は、アクセスでシートのようなことができない感じがしていることです。できるはずですが・・・。私の感覚ではテーブルを月数分作らなきゃいけない感じがしています。

現在、アクセスで作成できているのは、
親フォームには、顧客が記載され、子フォームに1レコード=1月で各月の請求額と明細が記載されています。

でも、これだとエクセルのように一覧で見られないのです。

顧客テーブルと請求書テーブルを作り、リレーションでつなぐと、過去の請求額がレコードでわかれません。
それが一覧したり、クリックひとつで月移動できない原因のようです。

うまく文章で伝えられず申し訳ありませんが、別と補足致します。ご教授よろしくお願いします。

投稿日時 - 2005-04-13 08:37:08

QNo.1328072

困ってます

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

履歴一覧フォームのレコードソースにクエリー(全顧客明細表示クエリー)を指定してください。

「全顧客明細表示クエリー」の中身ですが・・・

まず、顧客テーブルと請求履歴テーブルを挿入します。
すると顧客コードで自動的にリレーションが結ばれると思います。
このバーを右クリックし結合プロパティーを表示し「2」を選択してください。

これでご希望の明細未入力の会社一覧も表示されます。

投稿日時 - 2005-04-14 11:29:39

お礼

回答ありがとうございました。なんとこんな簡単にできるとは知りませんでした。ACCESS奥が深いですね。skikichiさんの助言がなければ挫折していたと思います。
検索フォームの方はただいま作成中です。様々な月を見る方法や新しいレコードに入力する方法を現在思考中です。またつまづきそうですが、トライしてみます。
一旦、締め切らせて頂きますが、またご教授よろしくお願いします。

投稿日時 - 2005-04-15 00:59:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

推測でお答えしますね。

まず、大雑把に申し上げますと・・・
DBの基本的な設計は
1.すべてのデータを単純に横並びに持たせます。
2.データを参照したり、印刷したり、変更したり、削除したりする場合は、それぞれの画面で必要なデータだけを寄せ集めテーブルからひっぱてきて処理します。

したがって、2.で行うデータ検索が一番テクニックが必要なポイントとなります。

今回の例では、「月」毎の管理で頭を悩ましておられるようですね。
日付も他の顧客データと同様に横並びでテーブルに持たせます。
したがって、同じテーブルにすべての日付の顧客データが混在している状態です。
そして、必要なデータを表示したり、変更したり、削除する場合には、この日付を見て検索をかけるわけです。
たとえば、「各顧客データの日付の月が同じものを表示する」とか。
※DBでは月毎(日付毎)にテーブルを分けることは通常しません。

今回の場合のテーブル設計としては・・・
1.顧客テーブル
   顧客コード、顧客名、顧客住所、顧客登録日
2.請求履歴テーブル
   顧客コード、明細1、明細2、請求額、請求年月日

となります。

リレーションは、顧客コードでとります。
顧客テーブルと請求履歴テーブルは、1:∞ の関係です。したがって、顧客テーブルの顧客コードは「主キー」に設定し、「重複なし」としてください。
請求履歴テーブルの顧客コードは毎月、追加されますので「重複あり」としてください。

フォームの設計は・・・

1.顧客テーブルと請求履歴テーブルでメイン/サブフォームを作成

2.月毎の請求履歴を一覧表示するため、請求履歴テーブルをコントロールソースにした履歴一覧フォームを作成
フォームで月を指定して検索するように作る。
(入力された月と請求年月日の月を比較して検索)

って感じでどうでしょうか。
分らない点はご質問ください。

投稿日時 - 2005-04-13 10:28:52

補足

その後、履歴一覧フォームを作りました。しかし、ある全取引先が表示されず入力済みの取引先が表示されます。
履歴一覧フォームということで、確かに履歴が表示されますので、skikichiさんの意図することができているかも知れません。
私の意図では、8月なら8月の全取引先会社と明細が表示されれば、と考えております。明細未入力の会社も一覧表示させたいのですが、これはどう考えても無理でしょうか?データが存在しないわけですから。

検索フォームの方は、一覧表示できるようになってから手をつけようと思います。まずは自分でも考えていろいろやってみます。

投稿日時 - 2005-04-14 00:30:18

お礼

丁寧な説明で助かります。まだ試していないのですが、いま試しでやってみて必ず報告致します。
回答ありがとうございました。

投稿日時 - 2005-04-14 00:03:46

ANo.1

おはようございます。はじめまして。

リレーションでつないで表示をするのであれば複数の子フォームに複数の請求書テーブルが必要ですね

請求書テーブルのキーに年月を持たせて、親フォームで年月の入力で子フォームに顧客コード、年月を条件に請求書データを表示させてやるという感じにすればできると思いますが…

これなら年月、顧客をキーにした請求書テーブル一つと顧客情報テーブルだけで他は必要ないかと思います。

投稿日時 - 2005-04-13 09:00:34

お礼

回答ありがとうございます。顧客をキーにした請求書テーブルということですが、顧客コードを両テーブルに作成することでも可能ですよね?
請求書に未入力のデータがないと顧客が一覧表示されないのが現状です。未入力でも表示する方法があるでしょうか?

投稿日時 - 2005-04-14 00:49:03

あなたにオススメの質問