- ベストアンサー
access2007 フォームについて
- 初心者向けのaccess2007 フォームについての質問です。フォームで「グループ化の設定」はできるのでしょうか?具体的には、フィールド1が3レコードずつあるテーブルをフォームで表示し、効率的なデータ編集ができるようにしたいです。
- 質問者はaccess2007の初心者であり、フォームにおける「グループ化の設定」について知りたいとのことです。具体的には、3つずつのレコードをグループ化して表示したいと考えています。ご教示いただけないでしょうか?
- access2007のフォームにおける「グループ化の設定」について質問があります。フィールド1が3つずつあるテーブルのレコードをフォームで表示し、データ編集を効率的に行いたいです。具体的な方法や手順を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
方法はいろいろですが、一つの案として。 質問の「テーブル」をそのままフォームのレコードソースに するならば、 (1) フォームの新規作成から、 「元になるテーブルまたはクエリの選択」で「テーブル」 を選択し、「オートフォーム表形式」を選択し、そのまま フォームを自動で作成し、適当な名前で保存します。 (2) フォームをデザインビューで開き、「詳細」の上部にマウスの カーソルを当て、十字になったら下のほうに2cm位下げます。 残りの「フィールド1」、「フィールド2」のラベルも二つ 同時に選択して、引き下げて「詳細」の上部にくっつけます。 (3) 空いたフォームのスペースにテキストボックスを一つ 設定します。そのテキストボックスの名前を「tx検索」 とします。 ボタンを三つ設定し、名前を「cmd検索」、「cmd全表示」、 および「cmd保存」とします。 とします。 (3) ボタン「cmd検索」の上で右クリックして プロパティシートを開き、その中の「クリック時」 のところで右端をクリックして、「ビルダの選択」 というフォームを表示し、その中の「コードビルダ」 を選択して、「OK」のボタンを押します。 コード表が開かれるので、表示されたコードを 以下のように設定します。 Private Sub cmd検索_Click() Me.Filter = "フィールド1='" & Me![tx検索] & "'" Me.FilterOn = True End Sub この場合の「フィールド1」はテーブルの「フィールド1」 のフィールド名を指しています。 (4) 同様に、ボタンの「cmd全表示」のプロパティ表から 「クリック時」のところで「コードビルダ」を 表示して「OK」として、コード表を表示し、 以下のように設定します。 Private Sub cmd全表示_Click() Me.FilterOn = False Me.Requery End Sub (5) 同様に、ボタンの「cmd保存」のプロパティ表から 「クリック時」のところで「コードビルダ」を 表示して「OK」として、コード表を表示し、 以下のように設定します。 Private Sub cmd保存_Click() DoCmd.RunCommand acCmdSaveRecord End Sub 以上で、設定が終了です。テキストボックスに 適当にたとえば、日本と入れて、「cmd検索」 を押すと、「フィールド1」が日本のデータが 選択されて表示されます。 「cmd全表示」を押すと全てのデータが表示されます。 「cmd保存」を押すと訂正、あるいは新規に入れた データがテーブルに保存されます。
その他の回答 (2)
- DexMachina
- ベストアンサー率73% (1287/1744)
> ※Null 値に対し、レコードの更新を行いたく、また、実際には > フィールド1が30レコードずつあるため、グループ化設定を行い > 効率的なフォームを作りたいのですが、、、 フィールド1に記録されるデータの追加/更新はなく、あくまでNullの 上書きということでしたら、「データシート型のサブフォーム」(=サブ データシート)を使用するのが簡単かと思います。 実際のフォームとしては、3階層使用します。 親フォーム: GF 子フォーム: MF 孫フォーム: SF 各プロパティは以下の通りです。 (デフォルト設定に対して、必要最小限の項目のみを提示) (「< >」の中は、プロパティシートのタブ名) 【SF】 [フォーム] <書式> ・既定のビュー=データシート <データ> ・レコードソース=当該テーブル [コントロール] ○テキストボックス <データ> ・コントロールソース=フィールド2 【MF】 [フォーム] <書式> ・既定のビュー=データシート <データ> ・レコードソース=下記クエリ [コントロール] ○テキストボックス <データ> ・コントロールソース=フィールド1 ○サブフォーム <データ> ・ソースオブジェクト=SF ・リンク子フィールド=フィールド1 ・リンク親フィールド=フィールド1 【GF】 [フォーム] ※このフォームはデフォルトのままでもOkですが、見た目から 下記設定を推奨。また、レコードソースは空白のままで。 <書式> ・レコードセレクタ=いいえ ・移動ボタン=いいえ [コントロール] ○サブフォーム <データ> ・ソースオブジェクト=MF (リンクフィールドは空白のまま) ※他、必要に応じて、レコード保存用のコマンドボタンなどを適宜追加。 (データシート型のフォームではコマンドボタン等は表示されません) なお、「MF」で使用するクエリは、以下の手順で作成します: 1)新規クエリをデザインビューで開く 2)当該テーブルを追加 3)フィールド1を表示対象として追加 4)デザインビューの上半分の何もないところをダブルクリックするなど して、プロパティシートを開く 5)『固有の値』を「はい」に設定 6)クエリを保存して閉じる ・・・以上です。 ※サブデータシート間にまたがるレコード移動は、Tabキーで行えます。 (逆方向への移動はShift+Tab)
- piroin654
- ベストアンサー率75% (692/917)
No1です。 もう少し便利にしようと思えば、 (1) テキストボックスをコンボボックスに して、名前を「cmb検索」とします。 (2) コンボボックスの「値集合ソース」 に以下をコピーして貼り付け、保存します。 SELECT テーブル.フィールド1 FROM テーブル GROUP BY テーブル.フィールド1; (3) No1の(3)の Private Sub cmd検索_Click() Me.Filter = "フィールド1='" & Me![tx検索] & "'" Me.FilterOn = True End Sub を以下に変更します。 Private Sub cmd検索_Click() If Not IsNull(Me![cmb検索]) Then Me.Filter = "フィールド1='" & Me![cmb検索] & "'" Me.FilterOn = True End If End Sub これで、コンボボックスで日本、アメリカなどを 選択し、検索ボタンを押せばフォームに絞られた データが表示されます。 なお、No1のテキストボックスのままで行なうときは、 No1の(3)のコードを以下に変更してください。 Private Sub cmd検索_Click() If Not IsNull(Me![tx検索]) Then Me.Filter = "フィールド1='" & Me![tx検索] & "'" Me.FilterOn = True End If End Sub
お礼
返信遅くなって申し訳ありません。 教えていただいた内容で、できました! もう一つの方法も教えていただきありがとうございました! また、機会があったからご教示お願いします!