• ベストアンサー

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

各取引先への請求書をアクセスで作成しております。 これまではエクセルで作成しておりました。 エクセルのファイルの様子を書きますと、 1.シートで月ごとにわけています。 2.1行に1社の明細と請求額を記録します。 3.シートをクリックするだけで過去の請求も見られます。 4.取り引き先は月ごとに多少変動します。 上記のことをアクセスひとつでやりたいのです。 もっとも困っている点は、アクセスでシートのようなことができない感じがしていることです。できるはずですが・・・。私の感覚ではテーブルを月数分作らなきゃいけない感じがしています。 現在、アクセスで作成できているのは、 親フォームには、顧客が記載され、子フォームに1レコード=1月で各月の請求額と明細が記載されています。 でも、これだとエクセルのように一覧で見られないのです。 顧客テーブルと請求書テーブルを作り、リレーションでつなぐと、過去の請求額がレコードでわかれません。 それが一覧したり、クリックひとつで月移動できない原因のようです。 うまく文章で伝えられず申し訳ありませんが、別と補足致します。ご教授よろしくお願いします。

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

  • ベストアンサー
  • skikichi
  • ベストアンサー率65% (45/69)
回答No.3

履歴一覧フォームのレコードソースにクエリー(全顧客明細表示クエリー)を指定してください。 「全顧客明細表示クエリー」の中身ですが・・・ まず、顧客テーブルと請求履歴テーブルを挿入します。 すると顧客コードで自動的にリレーションが結ばれると思います。 このバーを右クリックし結合プロパティーを表示し「2」を選択してください。 これでご希望の明細未入力の会社一覧も表示されます。

Scotty_99
質問者

お礼

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

その他の回答 (2)

  • skikichi
  • ベストアンサー率65% (45/69)
回答No.2

推測でお答えしますね。 まず、大雑把に申し上げますと・・・ DBの基本的な設計は 1.すべてのデータを単純に横並びに持たせます。 2.データを参照したり、印刷したり、変更したり、削除したりする場合は、それぞれの画面で必要なデータだけを寄せ集めテーブルからひっぱてきて処理します。 したがって、2.で行うデータ検索が一番テクニックが必要なポイントとなります。 今回の例では、「月」毎の管理で頭を悩ましておられるようですね。 日付も他の顧客データと同様に横並びでテーブルに持たせます。 したがって、同じテーブルにすべての日付の顧客データが混在している状態です。 そして、必要なデータを表示したり、変更したり、削除する場合には、この日付を見て検索をかけるわけです。 たとえば、「各顧客データの日付の月が同じものを表示する」とか。 ※DBでは月毎(日付毎)にテーブルを分けることは通常しません。 今回の場合のテーブル設計としては・・・ 1.顧客テーブル    顧客コード、顧客名、顧客住所、顧客登録日 2.請求履歴テーブル    顧客コード、明細1、明細2、請求額、請求年月日 となります。 リレーションは、顧客コードでとります。 顧客テーブルと請求履歴テーブルは、1:∞ の関係です。したがって、顧客テーブルの顧客コードは「主キー」に設定し、「重複なし」としてください。 請求履歴テーブルの顧客コードは毎月、追加されますので「重複あり」としてください。 フォームの設計は・・・ 1.顧客テーブルと請求履歴テーブルでメイン/サブフォームを作成 2.月毎の請求履歴を一覧表示するため、請求履歴テーブルをコントロールソースにした履歴一覧フォームを作成 フォームで月を指定して検索するように作る。 (入力された月と請求年月日の月を比較して検索) って感じでどうでしょうか。 分らない点はご質問ください。

Scotty_99
質問者

お礼

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

Scotty_99
質問者

補足

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

  • aosiman
  • ベストアンサー率5% (1/18)
回答No.1

おはようございます。はじめまして。 リレーションでつないで表示をするのであれば複数の子フォームに複数の請求書テーブルが必要ですね 請求書テーブルのキーに年月を持たせて、親フォームで年月の入力で子フォームに顧客コード、年月を条件に請求書データを表示させてやるという感じにすればできると思いますが… これなら年月、顧客をキーにした請求書テーブル一つと顧客情報テーブルだけで他は必要ないかと思います。

Scotty_99
質問者

お礼

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

関連するQ&A

  • access フォーム間で情報が引き継がれない

    初心者です、よろしくお願いします。 仕様環境 WinXP Access2002 請求管理のシステムを作っています。 テーブルには 顧客マスタ(主キーは顧客番号でテキスト型 例:0001等) 請求マスタ(主キーは請求番号でテキスト型 例:A0001等) 明細マスタ(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。) そしてリレーションシップで顧客マスタ(1)→(多)請求マスタ(1)→(多)明細マスタになっています。 顧客マスタを元にしたフォーム(顧客入力フォーム)に顧客情報を入れて、 「請求書作成ボタン」を作り、そのボタンを押すと別のフォーム(請求書作成フォーム)に 飛ぶようにしているのですが、その際に顧客入力フォームに入力した情報を 引っ張っていくようにしたいのですが、うまくいきません。 ちなみに顧客マスタと請求マスタのリレーションは”顧客番号”でつなげています。 請求書作成フォームは請求書作成クエリから成り、 その中で顧客番号(テーブル:顧客マスタ)の抽出条件に[Forms]![顧客入力フォーム]![顧客番号]と 入れて”顧客番号つながり”で飛ぶようにしているのですが、 請求書作成フォームは開くのですけど、項目はすべて空白です。 またいろいろレコードを追加している内に、請求番号が既にあるものに対しては顧客情報も引き継がれることが判明しました。 構文が間違っているのでしょうか? 混乱しています、お助けください。

  • Accessでのフォーム入力エラー

    顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。

  • Accessのリレーションシップ設定

    Access2007で次のようなことをしたいと思っています。 その1. (1)テーブル1に、「ID」「顧客名」「DM送付済み」のフォームを作成し、「DM送付済み」を「Yes/No」型にする。 (2)「DM送付済み」でチェックを入れたレコードをクリック等すると、テーブル2に飛ぶ。 (3)テーブル2には、テーブル1と連携した「ID」「顧客名」のフォームがあり、その他のフォームはテーブル2のみに存在するもので、テーブル2でレコードを投入する。 その2. 「支払額」のフォームに金額だけではなくて支払日のデータをリンクさせ、一定期間の支払額を積算する(例えば、支払期日が2009/01/01~2009/01/31までのものの支払額を積算する)。 Accessに関しては全くの素人でして、大変恐縮ですが、宜しくお願い申し上げます。

  • Access2010のリンクテーブルについて

    Access2010のリンクテーブルについて質問をさせてください。 現在、社内ではExcelシートで対応ログを残しています。 ログ入力や検索のことを考えれば、Accessへ移行するべきだと思うのですが、現在その予定はありません。また、ここで対応内容に応じて「区分」を付加していきたいと考え、以下のことを行いました。 1.ExcelシートをリンクテーブルとしてAccessに取り込み。  [対応テーブル]   ・対応NO   ・対応内容 2.今後加えていきたい区分のテーブルを作成  [区分マスタ]   ・区分NO   ・区分名 3.AccessでExcelシートは更新できないので、1と2をもとにしたテーブルを作成  [対応明細]   ・対応明細NO   ・対応NO(1と結合)   ・区分NO(2と結合)    3.のテーブルに対し、「対応NO」と「区分NO」を入力していければ、もともとのExcelファイルをいじることなく、区分を追加していけるものと考えたのですが、「このレコードセットは更新できません。」とのエラーとなってしまいます。 以前のAccessではExcelのリンクテーブルも更新できたと思うのですが、大人の事情でそれができなくなったことは認識しています。その回避策として、リンクテーブルに編集を加えるのではなく、更新用のテーブルを用意して入力していこうと思ったのですが、それもできません。 回避策がありましたらご教示いただけますでしょうか。 宜しくお願いいたします。

  • Accessデータ並べ替えをハイブリッドにしたい

    [使用しているツール] Access 2007 PROFFESSONAL [やっていること(現状)] 1つのテーブルで複数のクエリ(複数のフィールドの並べ替えが必要な為)と複数(クエリと同数)のフォームを作成して、フォームの数だけコマンドボタンを作成してフォームを一覧表示で開いています。 [やりたいこと] 1つのテーブルで「1つのクエリ」による複数のフィールド(名)を切替えて、「1つのフォーム」で表示(一覧)させたいと思っています。 例えば、テーブル名:顧客名簿(取引先、県名、商品名、入庫日)、クエリ名:顧客名簿クエリ、フォーム名:顧客名簿一覧としたとき、(取引先、県名、商品名、入庫日)をコンボボックス等で切り替えることで、指定したフィールド(名)で並び替えられたデータを「フォーム名:顧客名簿一覧」に表示させられないでしょう。 [考えたこと] コンボボックス(名前:コンボ1)を作成し値集合ソースに「”取引先”;”県名”・・・・。」と入力、クエリ「顧客名簿クエリ」の抽出条件欄にビルダを起動させて「・・・コンボ1」を指定、フォーム「顧客名簿一覧」のレコードソースにクエリ「顧客名簿クエリ」を選択しました。しかし、フォーム「顧客名簿一覧」を開いても、データは抽出できずデータなしの表示で先へ進めていません。 以上ですが、宜しくお願いします。

  • MS ACCESS 2003 サブレポート機能でメインレコードと関係の

    MS ACCESS 2003 サブレポート機能でメインレコードと関係のないレコードも表示される どなたかアクセスに詳しい方、教えて頂けませんでしょうか。 MS ACCESS 2003 にて、帳票印刷システムを構築しております。 ・請求ヘッダテーブル・・・顧客ID、顧客会社名、顧客氏名、住所 等 ・請求明細テーブル・・・顧客ID、請求明細名、単価、数量、小計 等 となっております。 こちらの状態で、顧客ID別(1人ずつ)に、紙面の上部に請求ヘッダテーブルの情報を羅列し、 紙面の下部に表形式で請求明細テーブルを表示するような形式の「レポート」を作成したいと考えております。 そこで、メインレポート/サブレポート機能を使って、上記を実現したいと思い、以下のような手順でトライしているのですが、サブレポート部分(デザインビューで見た場合の「詳細」部分)に、でメインレポート部分の顧客IDの請求明細データではないレコード(違う顧客IDの請求明細)まで表示されてしまいます。 ■リレーションを作成 ・メニュー「ツール」⇒「リレーションシップ」にて、請求ヘッダ-請求明細をひもづけ。 ・参照整合性にチェック。 ・結合の種類は「請求明細の全レコードと請求ヘッダの同じ結合フィールドのレコードだけを含める」。 ■レポートを作成 ・レポート⇒新規作成⇒レポートウィザードでレポートを作成。請求ヘッダのみの情報で作成。 ・デザインビューの詳細部分にて、サブレポートを呼び出し。請求明細テーブルを選択し、顧客ID、請求明細名、単価、数量、小計 等を選択。 上記のようにすると、顧客IDとは関連なく(正しい詳細データもそうでないデータも合わせて)10件の請求明細データが表示されます。 また顧客ID=1の場合も、次のページの顧客ID=2の場合もすべて同じ10件の明細データが現れます。 インプレスのアクセス本を参照しながら作業しているのですが、詳しくない分非常に苦労しております。 どなたか、なにとぞよろしくお願いいたします。

  • Accessで月ごとのレポートを出したい

    Access2003で以下のような販売管理のデータベースを作成しているのですがクエリとレポートが思うように動いてくれずに困っております。 売上の管理のために顧客情報をメインフォームに明細をサブフォームで作成、明細テーブルからクエリで該当月を抜きだして請求書の印刷に使いたいと思っています。 レポートはフォームと同じようにメインレポートに顧客情報を表示してサブレポートとしてその月に販売した商品を一覧させたものを考えています。 サブレポートには明細のクエリを指定しています。そこでクエリの抽出条件に[月]としてキーボードから数字を入れるようにしたのですがそうするとレポートの印刷時にも顧客の数だけ月の入力を促す画面が出てきます。イメージとして「何月分の請求書を出しますか」みたいな画面(フォーム?)に数字を入力するとクエリの抽出条件が書き換わってくれるようにできないかと考えております。 うまく説明できていないと思いますが対処法をご存知の方おられましたらご教示お願いします。 他に情報が必要であれば言ってください。よろしくお願いします

  • ACCESS テーブルの扱い方

    環境: WINDOWS XP PRO ACCESS 2000 Oracle 9i [現状] フォームの作成時にて、「サブフォーム/サブレポート」を使ってOracleで作成したデータシート形式の(購入履歴)テーブルを表示しています。 [質問内容] 購入履歴テーブルには次のような情報が入っているのですが、 特定の顧客コードの購入履歴のみを動的に変化させて表示させる事は可能でしょうか? (動的にとは、フォーム側(プログラム側)で入力した顧客コードに対応した購入履歴を表示させるという意味で使用しています。) 宜しくお願い致します。 [購入履歴テーブル] 顧客コード 商品名 購入日付 ━━━━━━━━━━━━━━ 00001   みかん  01/11/11 00001   リンゴ  01/12/22 00002   バナナ  01/08/24 00003   リンゴ  01/09/09 ・ ・ ・

  • access 請求番号の自動採番

    まったくわかりません! よろしくお願いします。 仕様環境 WinXP  access2002 顧客管理のシステムを作っています。 テーブル 顧客テーブル(主キーは顧客番号 テキスト型) 請求テーブル(主キーは請求番号 テキスト型) 明細テーブル(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。) そしてリレーションシップで顧客テーブル(1)→(多)請求テーブル(1)→(多)明細テーブルになっています。 顧客情報を入力するフォームを作りました。 主キーは顧客番号(テキスト型,入力モードON,インデックス いいえ)で 他のテキストボックス(例えば名前)に何かしら文字を入力すると自動で顧客番号を採番してくれます。 例:0001 0002 0003~ そしてそのフォームから請求書作成フォームに飛ぶように 「請求書作成ボタン」を作り、顧客情報も一緒にひっぱっていってくれる 請求書作成フォームを作りました。(入力したばかりの情報も最新の情報で更新してくれます。) ・・請求書作成フォームはサブフォームを使い3つのテーブルからなっています。・・ 親フォーム:顧客テーブルから。 子フォーム:請求テーブルから。 孫フォーム:明細テーブルから。 主キーは請求番号で(テキスト型,入力モードON,インデックス はい(重複なし)) 他のテキストボックス(例えば請求日)に何かしら入力すると自動で請求番号を採番してくれます。 例:A0001 そこで問題なのですが、顧客情報は入力する度、次々自動で採番してくれるんですが、 請求番号は一番最初のレコードの”A0001”だけ採番してくれて、 新しいレコードで請求書を作ろうとテキストボックスに文字を入力すると「型が一致しません」というエラーが出ます。 ○ エラー内容 アクションエラーの実行 条件 true アクション名 値の代入 引数 [請求番号],Format(DMax("請求番号","請求マスタ")+1,"A0001") マクロは・・(参考書を参考にしています、マクロ名:自動採番マクロ) ------------------------------------------------- 条件 : DCount("請求番号","請求テーブル")=0 アクション : 値の代入 アイテム  : [請求番号] 式     :"A0001" ------------------------------------------------- 条件    : ... アクション : マクロの中止 ------------------------------------------------- アクション : 値の代入 アイテム  : [請求番号] 式     : Format(DMax("請求番号","請求テーブル")+1,"A0001") ------------------------------------------------- となっています。 念のため、主キーの入力モードを切り替えたり、式の"A0001"を単純に"1"にしたりしましたが、 請求番号はエラーが発生します。 原因がまったくわかりません。 よろしくお願いします!

  • アクセスのサブフォーム複製について

    アクセス2007で請求書の管理をするデータベースを作っています。 アクセス2002でテキストにのっているようなデータベースを作ったことはありますが、2007は使うのが初めてで会社の請求書管理なのでテキストにのっていない事はネットで調べながら作っています。 請求書をフォームから入力する際、複製ボタンを作ってメインとサブフォームを新しい請求書にコピーしたいのですが、メインしか複製されません。他の方の同じような質問も見ましたが、イベントプロシージャの中身を記載して回答しているのがほとんどなので、手順が分かりません。追加クエリでやるといいと見ましたが、詳しいやり方を教えていただけないでしょうか。 どこのイベントプロシージャを書けば回答できるかなども分からないので足りなければ教えてください。 請求書テーブル  請求ID(オートナンバー)  日付  取引先ID(取引先マスターから)  工事名  現場名  値引  備考  印刷済 請求明細テーブル  請求明細ID(オートナンバー)  商品名  数量  単位  単価  備考   請求書記録クエリ  取引先マスターの取引先ID、取引先名などと請求書テーブルを合わせて作りました。 請求書記録クエリと請求書明細テーブルからフォームを作りました。 メインフォーム  請求書テーブルとほぼ同じ サブフォーム  請求書明細テーブルの内容  合計、消費税、値引き後の合計など よろしくお願いします。  

専門家に質問してみよう