• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:access2007 フォームについて)

access2007 フォームについて

このQ&Aのポイント
  • 初心者向けのaccess2007 フォームについての質問です。フォームで「グループ化の設定」はできるのでしょうか?具体的には、フィールド1が3レコードずつあるテーブルをフォームで表示し、効率的なデータ編集ができるようにしたいです。
  • 質問者はaccess2007の初心者であり、フォームにおける「グループ化の設定」について知りたいとのことです。具体的には、3つずつのレコードをグループ化して表示したいと考えています。ご教示いただけないでしょうか?
  • access2007のフォームにおける「グループ化の設定」について質問があります。フィールド1が3つずつあるテーブルのレコードをフォームで表示し、データ編集を効率的に行いたいです。具体的な方法や手順を教えていただけると助かります。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

方法はいろいろですが、一つの案として。 質問の「テーブル」をそのままフォームのレコードソースに するならば、 (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保存」を押すと訂正、あるいは新規に入れた データがテーブルに保存されます。

kryc
質問者

お礼

返信遅くなって申し訳ありません。 教えていただいた内容で、できました! もう一つの方法も教えていただきありがとうございました! また、機会があったからご教示お願いします!

その他の回答 (2)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> ※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)
回答No.2

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

関連するQ&A