- ベストアンサー
Access メインフォームにすべてのテーブルを
アクセス 超初心者です。 お恥ずかしいのですがまた 超初歩的なことで困っています。 テーブルが二つあり、 一つは 基本データテーブルで 顧客コード(主キー)- 社名ー住所 もう一つは 商品履歴で 顧客コード- 商品 - 数量 このような感じです。 で、顧客コードでリレーションシップを設定して メインフォームに顧客コード・社名・住所、 サブフォームで その顧客の 商品・数量を表示させているのですが 商品履歴テーブルにデータが無い顧客データは メインフォームに表示されませんよね? どうしたら全件表示されるようになりますか?
- okcat1227
- お礼率66% (4/6)
- オフィス系ソフト
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>次はサブフォームのデータを メインフォームに設けたテキストボックスで検索できるようにするのが目標です これはパラメータクエリ作成できるようになれば、簡単に実装できます 今、作成途中のようなのでもう一言 作っているデータベースのテーブル作り過ぎです 今回のような場合には 基本データテーブル これはOKです 商品履歴テーブル これもOKですが、商品コードというフィールドと購入日のフィールドを追加します(購入日はあとから検索する時など必要になると思います) ID(オートナンバー型でOK主キーにする)ー顧客コードー購入日ー商品コードー数量ー備考 もうひとつ必要なのが、商品を扱うテーブルです(ここに商品の分類を持たせます) 1つの商品が複数の分類に分かれる場合にはこれでは困りますが、そうではないですよね? 商品コード(主キーにする)-商品名ー分類ー単価(必要ならもうひとつ原価というフィールド) 必要なのは3つのテーブル 5つもいりません データ入力する際はテーブルにダイレクトにするのではなく、リレーションを張ったクエリを使って行うように リレーションは、基本データテーブルの顧客コードから商品履歴テーブルに向けてリレーションを張る もうひとつは商品を扱うテーブルから商品履歴テーブルの商品コードに向けて張る このクエリを使って入力すれば、リレーションを張った部分に関しては、商品コードを入力すれば商品名や商品の分類を自動で表示させる事ができます okcat1227 さんが作ろうとしている物は、顧客の情報を管理する為のテーブル・商品を管理する為のテーブル・販売履歴を管理するテーブルの3つが必要なのです
その他の回答 (2)
- tamu1129
- ベストアンサー率58% (1255/2143)
>ちなみに、テーブルは全部で5つあり ん?質問では2つのテーブルがあり、そのうちの基本データテーブルをマスターに、商品履歴テーブルをサブフォームにって内容です いつの間にか、使用しているテーブルが5つになってしまいました 基本的には、マスター部分とサブフォームの部分はどこかのフィールドで関連付けされている訳です 今回のような事を行う場合には、1つずつ検証してゆけば良いのです テスト的に1つフォームを作成し、メインフォームに基本データテーブルの顧客コード(主キー)- 社名ー住所を配置 サブフォームに商品履歴テーブルを1つ配置する そのフォームを開いてみてください 基本データテーブルの顧客コードのフィールドに値がある数だけフォームが表示されます この状態から、サブフォームを追加していって、最初に表示された数より表示が少なくなってしまうなら、追加したサブフォームのデータがマスター部分の基本データテーブルや他のサブフィールドのデータと整合性が取れていないという事です サブフォームに入れたい5つのテーブルの、構造ってどうなっているのですか?
補足
端折って説明してしまってすみませんでした。 結論から言うと すべてのフィールドが表示できました。 もともと会社で使っているアクセスファイルを加工して今回作り直しているのですが フォームを新しくするときに新規作成をしたら良かったものの デザインでフィールドをすべて選んでデリートして作り直したんです。 いま新規作成をしたら すべて表示されるようになりました。 次はサブフォームのデータを メインフォームに設けたテキストボックスで検索できるようにするのが目標です。 まずは自分で頑張ってみますがもし分からなければまた宜しくお願いします。 5つのテーブルの構造は まず基本データテーブルに顧客コード、社名や住所等のデータ。 そして他の4つのテーブルには 顧客コードー商品名ー値段ー備考など顧客への販売履歴が入っています。 顧客コードで基本データから4つのテーブルにリレーションシップを設定しています。 4つに分けているのは 販売した商品の分類で、 フォームでそれぞれ分類が異なることを分けて見やすく表示させたかったのと 一つのテーブルにフィールドをあまり増やしたくなかったので 4つに分けました。 多分、分けなくても見やすくてフィールドがたくさん増えない方法もたくさんあるのでしょうが・・・^^;
- tamu1129
- ベストアンサー率58% (1255/2143)
いえ、普通に基本データテーブルに登録されている顧客の分のデータは表示されます 商品履歴がある顧客分のデータについてはサブフォームにデータが表示されるが、商品履歴がない、顧客についてはサブフォームが空欄になるだけです この状態にならないなら、基本データテーブルと商品履歴テーブルに張られているリレーションシップの設定が正しくありません リレーションシップは片側のテーブルにデータがある場合、両方のテーブルにデータがある場合など設定が行えます 今回の場合には、基本データテーブル側から商品履歴テーブルの顧客コードに向けてリレーション張るようにすれば、きちんとデータ表示されますよ
補足
リレーションシップに方向があることを初めて知り、いま修正したのですが やはりすべて表示されません。 ちなみに、テーブルは全部で5つあり、 一つのフォームにサブフォームで表示させています。 基本データから 他4つのテーブルへリレーションシップの設定をしています。 どうして表示されないのでしょうか・・・
関連するQ&A
- 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 ・ ・ ・
- ベストアンサー
- その他(データベース)
- access2010のフォーム上で計算したいです
access2010 初心者です。 メインフォーム上に総合計を計算したいのですがどうしたらいいのか困ってます。 ***サブフォーム(テーブル1から表示しました)*** ・商品名(テーブル1から表示) ・金額(dlookupを使って「商品一覧表」から金額を表示しました) ・数量(テーブル1から表示) ・合計金額(コントロールリボンでテキストボックスを作り「金額」*「数量」で表示してあります) *********************** メインフォームに、サブフォームの「合計金額」の様にテキストボックスで、サブフォームの「合計金額」の『総合計』を表示したいです。 総合計がある一定の金額になるように、サブフォームの「数量」を決めて行きたいのです。だから、一定金額から『総合計』を引いて残金も表示したいのですが、『総合計』の求め方がわからなくて困っています。 総合計や合計金額はデータとしてテーブルには残らなくてもOKです。 初心者なので、できればわかりやすく簡単な方法がうれしいです うまく伝えれなくて不明な点があるかと思いますが、なにとぞお願いします
- 締切済み
- その他(データベース)
- Access フォームのデータがテーブルに反映されない
こんにちは。 現在、アクセスを使って簡単なデータベースを 作っていたのですが、ひとつわからないことがございます。 テーブルを二つリレーションを組んで、 フォームを作ったのですが、 うまく二つのテーブルにデータが 保存できません。 フォーム:顧客ID、名前、電話番号 サブフォーム:商品ID、商品名、納期、など。。。 こういった二つのテーブルで、サブフォームの方のテーブルに 顧客のデータも保存したいんですが、できるものなのでしょうか? 初心者でわかりづらくて、 大変申し訳ございませんが、よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- アクセスのメインフォームのみRequeryしたい
アクセスでフォームを作製しています。 シンプルに「メインフォームの中にサブフォームがある」形で作製し各フォームにはクエリをレコードソースとして指定しています。検索したいデータのコードを入力してそのデータを表示させる・・・という一般的なフォームなのですが、メインフォームのみRequeryさせたいのですができますか? [Forms].[メインフォーム].requery とするとサブフォームまで再計算されてしまいますが、ここでサブフォームは再計算させないで、メインフォームだけ再計算させたいのです。宜しくお願いします。
- 締切済み
- オフィス系ソフト
- Accessのサブフォームからフォームフィルタを使ってメインフォームも含めたレコードの抽出が出来ないのは何故でしょうか?
フォームフィルタを利用してサブフォームに入力されている値でレコードの抽出を行いたいのですが、うまくできません。 メインフォームが持っているレコード全てを持ってきます。 メインフォームに含まれているデータが100件なら、それ全てを表示してしまうということです。 私が抽出したいレコードは2件だけです。 メインフォームからフォームフィルタを利用して抽出すると正しい結果が得られます。 これはどうしてでしょうか? サブフォームへの設定が何か足りないのでしょうか? 親・子のフォームのテーブルは同一のものです。 カテゴリーで親と子にフォームを分けました。 親にはクエリはなくて、リレーションシップしたテーブル数種から直接フォームにひっぱってあります。 子は一つのテーブルからクエリを作って、そのクエリからフォームに引っ張っています。 Access2003です。 どなたかご教示いただきますようお願いいたします。
- 締切済み
- その他(データベース)
- ACCESS2000 フォームとテーブル
カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。
- ベストアンサー
- オフィス系ソフト
- Accessでメイン、サブホームが作れません
Accessで(1)顧客テーブル フィールド名 顧客コード(キー) 顧客名 (2)販売記録テーブル フィールド名 顧客コード 商品 レジNO (3)レジテーブル フィールド名 レジNO( キー) 年月日 でメインに顧客名をサブホームに年月日と商品を表示するメイン、サブフォームを作成したいのですがどのようにしたらいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Accessのメインフォームとサブフォームの使い方について
Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?
- ベストアンサー
- その他(データベース)
- access検索フォームからメイン、サブフォームへ
access初心者です。 先日、「メイン、サブフォームの入力」について質問した者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。 現在、取引先本社情報とその支店情報を新規登録及び既存顧客を編集するフォーム「会社登録フォーム」と「会社検索フォーム」を主にVBAで作成しています。 <実現したいこと>: 既存顧客を編集する場合は「会社検索フォーム」から抽出し、「選択」ボタンで会社情報を「会社登録フォーム」に呼び出し、本社及びその支店情報を編集する。 <困っていること>: 「会社検索フォーム」から顧客を選択後、「会社登録フォーム」では、支店情報は変わりますが、本社情報が変わりません。 (メッセージ:「リレーションシップが設定されたレコードがテーブル'支店テーブル'にあるので、 レコードの削除や変更を行うことはできません。」というメッセージがでます。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして、支店ごとに分けて入力できる登録フォームを作成しています。 本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定し、クエリ「Q_本社支店」というテーブルを作成しています。 <会社検索フォームの環境>: ・「Q_本社支店」テーブルを元に「会社検索フォーム」を作成しています。 ・「会社名」「支店名」等で検索し、データシートで表示します。 ・ 抽出されたレコードの「選択」ボタンで、「会社ID」を「会社登録フォーム」の本社情報の「会社ID」に代入します。 色々調べてやってはみたのですが、上手くいきません。 行き詰まり感があり、困っております。 ご教授のほどよろしくお願いいたします。
- 締切済み
- その他(データベース)
- Accessでのフォーム入力エラー
顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。
- ベストアンサー
- オフィス系ソフト
お礼
お礼が遅くなり申し訳ございません。 またまた超初歩的なことで躓いており なかなかやりたいことまでたどり着きません。 時間は掛かりそうですがアドバイス頂いたことを少しずつやってみます! ありがとうございました!