- ベストアンサー
テーブルをひとつにまとめられる?[ACCESS2000]
各取引先への請求書をアクセスで作成しております。 これまではエクセルで作成しておりました。 エクセルのファイルの様子を書きますと、 1.シートで月ごとにわけています。 2.1行に1社の明細と請求額を記録します。 3.シートをクリックするだけで過去の請求も見られます。 4.取り引き先は月ごとに多少変動します。 上記のことをアクセスひとつでやりたいのです。 もっとも困っている点は、アクセスでシートのようなことができない感じがしていることです。できるはずですが・・・。私の感覚ではテーブルを月数分作らなきゃいけない感じがしています。 現在、アクセスで作成できているのは、 親フォームには、顧客が記載され、子フォームに1レコード=1月で各月の請求額と明細が記載されています。 でも、これだとエクセルのように一覧で見られないのです。 顧客テーブルと請求書テーブルを作り、リレーションでつなぐと、過去の請求額がレコードでわかれません。 それが一覧したり、クリックひとつで月移動できない原因のようです。 うまく文章で伝えられず申し訳ありませんが、別と補足致します。ご教授よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
履歴一覧フォームのレコードソースにクエリー(全顧客明細表示クエリー)を指定してください。 「全顧客明細表示クエリー」の中身ですが・・・ まず、顧客テーブルと請求履歴テーブルを挿入します。 すると顧客コードで自動的にリレーションが結ばれると思います。 このバーを右クリックし結合プロパティーを表示し「2」を選択してください。 これでご希望の明細未入力の会社一覧も表示されます。
その他の回答 (2)
- skikichi
- ベストアンサー率65% (45/69)
推測でお答えしますね。 まず、大雑把に申し上げますと・・・ DBの基本的な設計は 1.すべてのデータを単純に横並びに持たせます。 2.データを参照したり、印刷したり、変更したり、削除したりする場合は、それぞれの画面で必要なデータだけを寄せ集めテーブルからひっぱてきて処理します。 したがって、2.で行うデータ検索が一番テクニックが必要なポイントとなります。 今回の例では、「月」毎の管理で頭を悩ましておられるようですね。 日付も他の顧客データと同様に横並びでテーブルに持たせます。 したがって、同じテーブルにすべての日付の顧客データが混在している状態です。 そして、必要なデータを表示したり、変更したり、削除する場合には、この日付を見て検索をかけるわけです。 たとえば、「各顧客データの日付の月が同じものを表示する」とか。 ※DBでは月毎(日付毎)にテーブルを分けることは通常しません。 今回の場合のテーブル設計としては・・・ 1.顧客テーブル 顧客コード、顧客名、顧客住所、顧客登録日 2.請求履歴テーブル 顧客コード、明細1、明細2、請求額、請求年月日 となります。 リレーションは、顧客コードでとります。 顧客テーブルと請求履歴テーブルは、1:∞ の関係です。したがって、顧客テーブルの顧客コードは「主キー」に設定し、「重複なし」としてください。 請求履歴テーブルの顧客コードは毎月、追加されますので「重複あり」としてください。 フォームの設計は・・・ 1.顧客テーブルと請求履歴テーブルでメイン/サブフォームを作成 2.月毎の請求履歴を一覧表示するため、請求履歴テーブルをコントロールソースにした履歴一覧フォームを作成 フォームで月を指定して検索するように作る。 (入力された月と請求年月日の月を比較して検索) って感じでどうでしょうか。 分らない点はご質問ください。
お礼
丁寧な説明で助かります。まだ試していないのですが、いま試しでやってみて必ず報告致します。 回答ありがとうございました。
補足
その後、履歴一覧フォームを作りました。しかし、ある全取引先が表示されず入力済みの取引先が表示されます。 履歴一覧フォームということで、確かに履歴が表示されますので、skikichiさんの意図することができているかも知れません。 私の意図では、8月なら8月の全取引先会社と明細が表示されれば、と考えております。明細未入力の会社も一覧表示させたいのですが、これはどう考えても無理でしょうか?データが存在しないわけですから。 検索フォームの方は、一覧表示できるようになってから手をつけようと思います。まずは自分でも考えていろいろやってみます。
- aosiman
- ベストアンサー率5% (1/18)
おはようございます。はじめまして。 リレーションでつないで表示をするのであれば複数の子フォームに複数の請求書テーブルが必要ですね 請求書テーブルのキーに年月を持たせて、親フォームで年月の入力で子フォームに顧客コード、年月を条件に請求書データを表示させてやるという感じにすればできると思いますが… これなら年月、顧客をキーにした請求書テーブル一つと顧客情報テーブルだけで他は必要ないかと思います。
お礼
回答ありがとうございます。顧客をキーにした請求書テーブルということですが、顧客コードを両テーブルに作成することでも可能ですよね? 請求書に未入力のデータがないと顧客が一覧表示されないのが現状です。未入力でも表示する方法があるでしょうか?
お礼
回答ありがとうございました。なんとこんな簡単にできるとは知りませんでした。ACCESS奥が深いですね。skikichiさんの助言がなければ挫折していたと思います。 検索フォームの方はただいま作成中です。様々な月を見る方法や新しいレコードに入力する方法を現在思考中です。またつまづきそうですが、トライしてみます。 一旦、締め切らせて頂きますが、またご教授よろしくお願いします。