さらに(2)の小計行までとデータ登録(入力)までやるとなるとサブフォーム毎に区分を表示するのが現実的な落としどころでしょうか。, 以下はサブフォームのデータを区分でフィルターすることで、一つのサブフォームに一つの区分+小計を表示できるようになります。 4.それぞれの区分毎にスクロール可能である。 SELECT TOP 10 * FROM テーブル 名称:文字列 SELECT * FROM テーブル     ・ WHERE テーブル.番号 NOT IN(SELECT TOP 30 テーブル.番号 FROM テーブル ORDER BY テーブル.番号) システムの信頼性を上げるため、負荷(特にaccdbファイルへのアクセス)削減を検討しています。, 私自身そのような検討の経験が浅いため、前提の思想、設計に問題があるかもしれませんが、, ひとまず、次の様な構成の時に現在の手段が間違っていないかを確認したいと考えています。ご回答いただけますと助かります。, Accdbファイルを分割し、サーバに置いたバックエンド(テーブル)を各端末から参照する形です。, Frontend.accdb                      Backend.accdb, そしてメインフォーム1つに複数(2つ~3つ程度を想定)のサブフォームを設置しています。, サブ:  formA_Sub1  (tableA_Sub1) --------------------------------------------------------- また、もっと単純に、サマリーだけ出しておいて、つまり、区分毎に区分名、数、区分計を表形式で表示しておき、その明細が見たくなった時に、初めて明細を表示するという方法でも良いかもしれません。明細をそのサマリー画面と別に開くのであれば、いくつもの区分を同時に表示することもできます。おそらくこれが一般的なマスター/明細画面の方法です。, また、このように結果を表示する画面では、印刷を求められることが多々ありますので、どのような帳票に落とし込むのかも合わせて詰めておいた方が良いと思われます。, ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/, やはり、現実的な方法では、サブフォームをあらかじめ用意して、それをいかに利用するかによるようですね。, 見たいときだけ開いたら周りのコントロールも合わせて配置を自動調整できれば、更に良いのですがAccessでは機能がないですよね。, サブフォームを使用しての運用版  (『 TOP 』と『 NOT IN 』を使用) ボタンをクリックすると表示中の区分を前後に切り替えて表示します。, 個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK! 3|"区分B"|"名称3"|300 しかし何度か切り替えるなら、タブコントロールで最初から読み込んでしまった方がいいのだろうか...。, フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。, このスレッドはロックされています。質問をフォローすることや役に立つと投票することはできますが、このスレッドに返信することはできません。, まず、メイン/サブフォームとナビゲーションフォーム(ナビゲーションのコントロール)は, メインフォーム読み込み時にタブコントロール内にある全サブフォームの全レコードが読み込まれるのか。, 「サブフォームを切り替えるためのタブコントロール」の代わりに「ナビゲーションコントロール」にする時のプロパティの確認。. 横幅には余裕があるので、2列以上にして全て表示させたい。 ※機能=複数のサブフォームを切替える。メインフォームのカレントレコードに対応するサブフォームのレコードを表示する。, この時、(ナビゲーションコントロールの)移動ボタンのプロパティは次の設定でいいでしょうか。, 移動先のWhere句:MainID=[Forms]![formA]. 端末PCの能力が原因かもしれません。それに負荷の増減は利用実態によるとしか言えないかもしれませんが、もし余計なデータアクセスが増えているなら把握しておきたいのです。, ・「リンク親/子フィールド」プロパティ(通常のサブフォームコントロール)による挙動と「移動先のWhere句」プロパティ(ナビゲーションコントロールの一部としてのサブフォームコントロール)による挙動は同じか。 ・クエリ3 サブフォームは、これを行うための便利なツールとAccessにサブフォームをすばやく作成するためのいくつかの方法が用意されています。 目的に合ったトピックをクリックしてください. サブ:  formA_Sub2  (tableA_Sub2), ※tableA_Sub1 も tableA_Sub2 も現在のレコード数は5000件未満ですが今後増大していきます。, この時、formA に配置している formA_Sub1 と formA_Sub2 の2つのサブフォームは, スペース上の制約もあり「タブコントロール」でサブフォームの表示を切り替えています。, 「タブ コントロールでは、読み込み時にその子オブジェクトをすべて読み込みます。これはパフォーマンスに影響するだけでなく (メイン フォームを開くときに、タブ コントロールがすべての子オブジェクトを読み込むのを待機する必要があります)、クエリ データの処理も困難になります。」, これは今回で言えば、formA読み込み時に、タブコントロール内に設置したformA_Sub1とformA_Sub2の全レコードが読み込まれているという理解で良いでしょうか。, 「ナビゲーション フォームでは、子フォームまたはレポートを、必要に応じてそれぞれ読み込みます (つまり、対応するタブをクリックするとき)。」, 私の理解が正しければ、この「ナビゲーション フォーム」を「ナビゲーションのコントロール」と読み換えて良く、今回はナビゲーションコントロールを利用した方が、複数のサブフォームを一度に読み込まずに済むため、良いように思いました。, そこで現在のタブコントロールをナビゲーションコントロールと置き換え、見た目や機能(※)は維持するよう改変します。 「『番号』上位20件を含まない上位10件 WHERE テーブル.番号 NOT IN(SELECT TOP 20 テーブル.番号 FROM テーブル ORDER BY テーブル.番号) 4|"区分C"|"名称4"|400 [MainID], WEB上やヘルプにナビゲーションコントロールに関する情報があまりないため不安を覚えています。, 一応、前述の「機能」を果たしていますが、同じくサブフォームを表示する「通常のサブフォームコントロール」には「リンク親フィールド」「リンク子フィールド」というプロパティがあるのにこのナビゲーションコントロール(の一部としてのサブフォームコントロール)にはそれらが無いため、戸惑いました。, 本題です。上記質問2の改変(タブからナビへの置き換え)で、本当に負荷(特にサーバー上のファイルアクセス)は減ったでしょうか。, 例えば、このメインフォームでは単一レコードを表示して終わりではなく、次々とレコード遷移する利用が多いのですが、, メインフォームでレコードを移動した時、改変後の方が画面遷移が一瞬遅い(マウスカーソルの待ち状態(サークル)表示も一瞬長い)です。, 体感速度の話なので、描画方法や読み込み手順の違い等、“負荷”とは異なるかもしれませんし、 番号:オートナンバー     ・ ① 番号|名称|金額 サブフォームの概要. SELECT TOP 10 * FROM テーブル ORDER BY テーブル.番号 ・もし異なるならどのように異なるか。, 他の方法として1つ試したのは、通常のサブフォームコントロールを1つ設置し、そのプロパティをVBAで変更する、というものです。. 、つまり、どのテーブルまたはクエリをします。 一対多リレーションシップの「一」側のテーブルを選択します。 この例では、[社員] フォームを作成するのをクリックして社員によってします。 フォームの小さな図が表示されます。 ページは、次の図のようになります。, 注: ウィザードが要求しない場合は、データを表示する方法ですか?、Access では、テーブルまたはクエリを選択する間の 1 対多リレーションシップは検出されなかったことを意味します。 続行しますが、アクセスは、フォームにサブフォームを追加しません。 [キャンセル] をクリックして続行する前に、テーブルのリレーションシップを確認することがあります。, ウィザードのページの下部にある [サブフォームがあるフォーム] をクリックし、[次へ] をクリックします。, [サブフォームのレイアウトを指定してください] ページで、必要なレイアウト オプションをクリックし、[次へ] をクリックします。 どちらのレイアウト スタイルでも、サブフォーム データを行と列に配置できますが、表形式のレイアウトの方が自由にカスタマイズできます。 表形式のサブフォームには、色、グラフィック、およびその他の書式要素を追加できますが、データシートの場合は、テーブルのデータシート ビューと同様に簡素な形式になります。, ウィザードの次のページで、フォームの書式設定を選び、[次へ] をクリックします。 前のページで [表形式] を選んだ場合、選んだ書式設定はサブフォームにも適用されます。, ウィザードの最後のページで、フォームのタイトルを入力します。 入力したフォームおよびサブフォームのタイトルに基づいて、フォームの名前とサブフォームのラベルが決まります。, フォームをフォーム ビューまたはデザイン ビューのどちらで開くかを指定します。情報を表示または入力する場合はフォーム ビュー、デザインを変更する場合はデザイン ビューを指定し、[完了] をクリックします。, Access で、サブフォーム コントロールが挿入されたメイン フォームとサブフォーム自身用に 2 つのフォームが作成されます。, この手順を使用して、1 つ以上のサブフォームを既存のフォームに追加します。 サブフォームごとに、Access で新しいフォームを作成するか、既存のフォームをサブフォームとして使用するかを選択できます。, ナビゲーション ウィンドウで既存のフォームを右クリックし、[デザイン ビュー] をクリックします。, [デザイン] タブの [コントロール] グループで、下向き矢印をクリックし、[コントロール] ギャラリーを表示し、[コントロール ウィザードを使用する] が選択されていることを確認します。, [デザイン] タブの [コントロール] グループで [サブフォーム/サブレポート] ボタンをクリックします。, [完了] をクリックすると、フォームにサブフォーム コントロールが追加されます。 既存のフォームを使用せずに、新しいフォームを作成することを選択した場合、Access で新しいフォーム オブジェクトが作成されて、ナビゲーション ウィンドウにそのオブジェクトが追加されます。, 既存のフォームをメイン フォームとして使用し、1 つ以上の既存のフォームをそのフォームにサブフォームとして追加する場合は、この手順を使用します。, ナビゲーション ウィンドウで、メイン フォームとして使用するフォームを右クリックし、[レイアウト ビュー] をクリックします。, サブフォームとして使用するフォームをナビゲーション ウィンドウからメイン フォームにドラッグします。, Access では、サブフォーム コントロールがメイン フォームに追加され、そのコントロールが、ナビゲーション ウィンドウからドラッグしたフォームにバインドされます。 また、データベースで定義されているリレーションシップに基づいて、メイン フォームへのサブフォームのリンクも試行されます。, リンクの設定が成功したかどうかを確認するには、[ホーム] タブの [ビュー] グループで、[ビュー]、[フォーム ビュー] の順にクリックし、メイン フォームのレコード セレクターを使用して、レコード間を移動します。 各社員のサブフォームが正しくフィルター処理されている場合、手順は完了です。, 前のテストが成功しなかった場合は、Access でサブフォームをメイン フォームに、リンクする方法を判定できなかったために、サブフォーム コントロールのリンク子フィールド プロパティとリンク親フィールド プロパティは空になっています。 これらのプロパティは、次の手順を使用して手動で設定する必要があります。, ナビゲーション ウィンドウでメイン フォームを右クリックし、[デザイン ビュー] をクリックします。, [プロパティ シート] 作業ウィンドウが表示されていない場合は、F4 キーを押して表示します。, [ビルド] ボタン 「『番号』上位30件以降の全件(30件以降は、キリが無いときに使用) レポートを使えば可能かと思いますが、 6.区分計を好きな位置に表示できる。例えば区分を選択するコンボボックスのすぐ横など。, 1.全ての区分を一度に表示できない。(ただし、区分数が増えれば、どのような方法をとっても一度には表示できない。画面サイズが物理的に有限なため) ORDER BY テーブル.番号 Access2010で、上記の環境にて、 区分の数が、フォームに設置したサブフォーム数を超えると対応できなくなる。, やるとしたら、メインのフォームに2個以上の表示可能な数のサブフォームを配置しておいて、サブフォームで表示するデータをマクロで切り替える方法でしょうか。, その方法として考えられるのは、番号が1-25,26-50,51-75というようになるようにSQLを組むか、サブフォーム毎に区分を分けるようにフィルターを指定するかになるでしょう。 2.区分を切り替える際に、区分を選ぶ手間とデータを抜き出す処理時間が必要。ただし、データを抜いて表示するまでの処理時間は気にならないレベルだと予想。, 以上のように、運用的にクリアできるのであれば、検討しても良い仕様だと思います。 (1-25を左側。 26-50を右側に表示), ②   Case ... これだと、レコード移動は当然ながら快適ですが、ナビゲーションコントロールよりもサブフォームの切替が一瞬遅くなる気がします。, しかしナビゲーションコントロールでの切替も結局サブフォームを都度読み込んでいるのであれば、切替の負荷は同じような気も...。 番号|名称|金額 2.処理が単純になるので、動作速度、後のコード保守が容易になる。 5.区分毎の明細数が増えても表示のレイアウトに変更がない。     ・ Accessでの複数条件での抽出の仕方を教えてください。 テキストボックスA[会社名],テキストボックスB[所属部署],テキストボックスB[姓],テキストボックスC[電話番号] を入力しコマンドボタン[検索]で該当するレコードをサブフォームに表示させたいです。 「『番号』順の上位10件 .SourceObject = "formA_Sub1" 1|"区分A"|"名称1"|100 リンク子フィールド] プロパティ ボックスの横にあるをクリックします。, [サブフォーム フィールド リンク ビルダー] ダイアログ ボックスが表示されます。, [親フィールド] ボックスと [子フィールド] ボックスの一覧から、フォームをリンクするフィールドを選択し、[OK] をクリックします。 使用するフィールドが不確かな場合は、[推奨] をクリックすると、Access によってリンク フィールドが判定されます。, ヒント: フォームをリンクするために使用しようとしているフィールドが表示されない場合は、リンク フィールドが含まれるように親フォームまたは子フォームのレコード ソースを編集する必要があります。 たとえば、フォームがクエリに基づく場合は、リンク フィールドがクエリ結果に必ず存在するようにします。, メイン フォームを保存した後でフォーム ビューに切り替え、フォームが期待どおりに動作することを確認します。, デザイン ビューでメイン フォームを操作している間にサブフォームにデザインの変更を加える場合は、サブフォームを独自のウィンドウで開くことができます。, [デザイン] タブの [ツール] グループで、[新しいウィンドウでサブフォームを開く] をクリックします。, サブフォームをフォームに追加すると、サブフォームの "既定のビュー" プロパティに従ってサブフォーム/サブレポート コントロールにサブフォームが表示されます。 このプロパティには、次の値を設定できます。, サブフォームを初めて作成するときは、このプロパティを [帳票フォーム] に設定するか、[単票フォーム] に設定することもできます。 ただし、サブフォームの [既定のビュー] プロパティを [データシート] に設定すると、サブフォームはメイン フォームのデータシートとして表示されます。, サブフォームの "既定のビュー" プロパティを設定するには、次の手順を実行します。, ナビゲーション ウィンドウでサブフォームを右クリックし、[デザイン ビュー] をクリックします。, プロパティ シートの上部にあるドロップダウン リストで、[フォーム] が選択されていることを確認します。, プロパティ シートの [書式] タブで、[既定のビュー] プロパティを、使用するビューに設定します。, 注: 使用するビューが一覧にない場合は、ビューの [...ビューの許可] プロパティが [はい] に設定されていることを確認します。 たとえば、フォームの既定のビューとして [データシート] を指定する場合は、[データシートビューの許可] プロパティが [はい] に設定されているか確認します。, 関連データを表示するのに常に個別のフォーム オブジェクトを作成する必要はありません。 たとえば、レイアウト ビューまたはデザイン ビューで作業している場合、ナビゲーション ウィンドウからテーブルまたはクエリをフォームにドラッグすると、Access ではそのオブジェクトのデータを表示するサブフォーム/サブレポート コントロールが作成されます。 オブジェクトの "既定のビュー" プロパティによって、データの表示方法が決まります。 通常はデータシート ビューに設定されますが、テーブルやクエリの [既定のビュー] プロパティを [単票フォーム]、[分割フォーム]、または [帳票フォーム] に設定すると、より柔軟に関連データをフォームに表示することができます。, 注: テーブルまたはクエリの既定のビューのプロパティを変更することを開くたびに、ナビゲーション ウィンドウから開くか、サブフォーム/サブレポート コントロールで表示するかどうかの表示方法を決定します。 テーブルの表示設定を変更することもあります混乱が生じる、ナビゲーション ウィンドウからテーブルを開くときに、ために、クエリを使用してテーブルではなく、この手順をお勧めします。. ORDER BY テーブル.番号 (サブフォームが複数という点以外はオーソドックスなハズ。) Access2013(一般ユーザーはRuntime版)を使用。 Accdbファイルを分割し、サーバに置いたバックエンド(テーブル)を各端末から参照する形です。 【ハードウェアとファイル】     .LinkMasterFields = "MainID" ORDER BY テーブル.番号 注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。 簡単に参照できるように、こちらに英語の記事があります。, リレーショナル データ (別々 のテーブルに格納されている関連データ) を使用しているときに多くの場合、同じフォーム上の複数のテーブルまたはクエリを表示する必要があります。 たとえば、顧客のデータを 1 つのテーブルと同時に別のテーブルからの顧客の注文に関する情報を表示することがあります。 サブフォームは、これを行うための便利なツールとAccessにサブフォームをすばやく作成するためのいくつかの方法が用意されています。, サブフォーム ウィザードを使用して既存のフォームに 1 つ以上のサブフォームを追加する, サブフォームとは、他のフォームの中に挿入されるフォームです。 基になるフォームをメイン フォームと呼び、フォームに包含されるフォームをサブフォームと呼びます。 フォーム/サブフォーム構成のことを "階層フォーム"、"マスター/詳細フォーム"、または "親/子フォーム" ということもあります。, サブフォームは、一対多リレーションシップを持つテーブルまたはクエリのデータを表示する場合に特に便利です。 一対多リレーションシップとは、主テーブル内の各レコードのプライマリ キー値が関連テーブルの多くのレコードの対応するフィールド値と一致する、2 つのテーブル間の関連付けのことです。 たとえば、社員のデータを表示するフォームを作成し、各社員の受注を表示するサブフォームを含めることができます。 "社員" テーブルのデータはリレーションシップの "一" 側となります。 "受注" テーブルのデータはリレーションシップの "多" 側になります (各社員は複数の受注を持つことができます)。, 1. 上記のクエリをサブフォームのレコードソースに持たせたら、番号の間に歯抜けが出来ても昇順の上位10件ずつ取得できて ・クエリ2 複数条件の抽出フォームの設計 その1 ... Access サブフォームでの選択行の取得 ... 5 [Access]あるフォームのクラスモジュールで値を入れた変数を他のフォームでそのまま利用したい 6 [Access]クエリでテキストを合わせて表示させる方法 「『番号』上位10件を含まない上位10件 もしくは、フォームにサブフォームを複数設置する方法では、     .LinkChildFields = "MainID" 2|"区分A"|"名称2"|200 データ登録をしながら、その直下で小計結果を表示させたいです。 画面の縦幅に影響を出さずに表示できるかと考えました。, 申し訳ありません。リクエストされたコンテンツは削除されています。すぐに自動的にリダイレクトされます。. 番号|名称|金額 また、区分を昇順にして、区分ごとの小計を改列する前の最終行に表示させたい  フォームヘッダ: サブフォームを作成または追加する SELECT TOP 10 * FROM テーブル ◇フォーム(規定のビュー = 帳票フォーム ), データ量にもよると思うのですが、データ量が増えた場合の見やすさが問題になりそうな気がします。 普通に考えれば、区分毎に列を設け、その列毎にスクロールできた方が良いでしょう。区分の数が将来増えるようですが、その場合だといずれ1画面に全ての区分が入らなくなるのでしょうか? もし、そうなら横スクロールが発生し、一覧性は落ちます。どのみち限られた数の列しか1画面には入らないわけですから、例えば画面には5列用意しておき、それぞれの列にどの区分を表示させるかをコンボボックスで選択するような形も取れると思います。この場合の利点としては、, 1.表示する区分の順序を変更でき、例えば比べたい区分同士を並べることができる。 メイン フォームには、リレーションシップの "一" 側のデータが表示されます。, この種類のフォームのメイン フォームとサブフォームはリンクされているため、サブフォームには、メイン フォームの現在のレコードに関連するレコードだけが表示されます。 たとえば、メイン フォームに青木俊之さんの情報が表示されている場合、サブフォームには彼の受注だけが表示されます。 フォームとサブフォームがリンクされていない場合、サブフォームには青木さんの受注だけでなく、すべての受注が表示されます。, 次の表に、サブフォームに関連するいくつかの用語を示します。 この記事に示されている手順を使用した場合は細部の処理が Access によって行われますが、後で修正を加える場合に背後でどのような処理が行われているかを知っておくことは重要です。, フォームにフォームを埋め込むコントロール。 サブフォーム コントロールは、データベース内の別のオブジェクト (別のフォーム、テーブル、またはクエリ) の "ビュー" と考えることができます。 サブフォーム コントロールには、コントロールに表示されるデータをメイン フォームのデータにリンクするためのプロパティがあります。, サブフォーム コントロールのプロパティで、コントロールに表示するオブジェクトを示します。, スプレッドシートのような表形式によるデータの表示。 ソース オブジェクトがテーブルまたはクエリの場合、または [既定のビュー] プロパティが [データシート] に設定されているフォームをソース オブジェクトとして使用している場合は、サブフォーム コントロールにデータシートが表示されます。 このようなケースでは、サブフォームはデータシートまたはサブデータシートと呼ばれることがあります。, サブフォーム コントロールのプロパティ。メイン フォームにサブフォームをリンクするサブフォーム内のフィールドを指定します。, サブフォーム コントロールのプロパティ。サブフォームにメイン フォームをリンクするメイン フォーム内のフィールドを指定します。, この記事の手順に従う前に、テーブルのリレーションシップを作成することをお勧めします。 テーブルのリレーションシップを作成しておくと、Access でサブフォームとメイン フォーム間にリンクが自動的に作成されます。 データベース内のテーブル間のリレーションシップを表示、追加、または変更するには、[データベース ツール] タブで [表示/非表示] グループの [リレーションシップ] をクリックします。, サブフォーム コントロールがソース オブジェクトとしてフォームを持つ場合は、フォームに配置されたフィールドを含み、単票フォーム、帳票フォーム、またはデータシートとして表示できます。 フォーム オブジェクトに基づいたサブフォームを使用する 1 つの利点は、[数量] * [単価] のような演算フィールドをサブフォームに追加できる点です。, ソース オブジェクトがテーブルまたクエリとなるサブフォーム コントロールを作成して、データシートまたはピボット ビューをフォームに挿入できます。 詳細については、「サブフォームを作成せずにフォームに関連データを追加する」をご覧ください。, Access でメイン フォームとサブフォームの両方を作成し、サブフォームをメイン フォームにリンクします。, 既存のフォームをメイン フォームとして使用しますが、Access で新しいサブフォームを作成し、そのサブフォームをメイン フォームに追加します。, 既存のフォームをメイン フォームとして使用し、1 つ以上の既存のフォームをそのフォームにサブフォームとして追加します。, この手順では、フォーム ウィザードを使用して、新しいフォームとサブフォームを組み合わせた構成を作成します。 この方法を使用すると、メイン フォームまたはサブフォームとして使用するフォームをまだ作成していない場合に、簡単に始めることができます。, [作成] タブの [フォーム] グループで、[フォーム ウィザード] をクリックします。, ウィザードの最初のページで、[表/クエリ] ボックスの一覧からテーブルまたはクエリを選択します。 たとえば、各社員の受注を表示するサブフォームを含む "社員" フォームを作成するには、一対多リレーションシップの "一" 側に "テーブル: 社員" を選択します。, ウィザードの同じページで、[表/クエリ] ボックスの一覧から、別のテーブルまたはクエリを選択します。 たとえば、一対多リレーションシップの "多" 側のテーブルとして "受注" テーブルを選択します。, 次へ] をクリックするが正しく設定されている [リレーションシップ] ウィザードを開始する前になっているものとして、ウィザードに表示されるデータを表示する方法ですか?