フォームで「グループ化の設定」はできるのでしょうか?
初心者ですが、よろしくお願いします。
例)テーブル(レコードソース)
フィールド1 ,フィールド2
日本 ,ハンバーグ
日本 ,お好み焼き
日本 ,(Null )
アメリカ ,スパゲッティ
アメリカ ,ハンバーグ
アメリカ ,ビール
フランス ,(Null )
フランス ,(Null )
フランス ,(Null )
※フィールド1は必ず3レコードあると想定しまして、、
↓
フォーム(1レコード目)
日本 ハンバーグ
お好み焼き
(Null )
フォーム(2レコード目)
アメリカ スパゲッティ
ハンバーグ
ビール
フォーム(3レコード目)
フランス (Null )
(Null )
(Null )
※Null 値に対し、レコードの更新を行いたく、また、実際にはフィールド1が30レコードずつあるため、グループ化設定を行い効率的なフォームを作りたいのですが、、、
分かりにくいかもしれませんが、ご教示下さい。
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保存」を押すと訂正、あるいは新規に入れた
データがテーブルに保存されます。
返信遅くなって申し訳ありません。
教えていただいた内容で、できました!
もう一つの方法も教えていただきありがとうございました!
また、機会があったからご教示お願いします!
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)
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
ACCESSでの改行コード
-
Accessのフィールド数が255しか...
-
ACCESSでテーブルのフィールド...
-
主キーはオートナンバー型のID...
-
Access 昇順・降順で並び替え...
-
アクセス エラーを数値「0」に...
-
INSERT INTO ステートメントに...
-
ExcelのデータをコピーでACCESS...
-
アクセス VBAで列の入れ替...
-
フォームのデータシートビュー...
-
Access2000のフォームで
-
Officeアクセス テーブル「テ...
-
accessのレポートで元になるテ...
-
SQLServer2005のSQL文での別名...
-
ACCESSでテーブルのチェックを...
-
ACCESS 入力文字数制限
-
ACCESS VBAにてCSV...
-
view作成時にデータ型を変更し...
-
Accessの構造(テーブル名など...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
INSERT INTO ステートメントに...
-
【Access】フォームで自動計算...
-
IT用語について質問です。 以前...
-
アクセス エラーを数値「0」に...
-
SQLServer2005のSQL文での別名...
-
ACCESSでの改行コード
-
accessで重複を防ぎたい
-
ExcelのデータをコピーでACCESS...
-
accessのレポートで元になるテ...
-
ACCESSで和暦を西暦に・・・
-
Accessで、固定アルファベット+...
-
アクセス VBAで列の入れ替...
-
アクセス メモ型 255文字...
-
ACCESSでテーブルのフィールド...
-
Access 昇順・降順で並び替え...
-
ACCESS検索★ある文字を複数のフ...
-
アクセスでオートナンバーをリ...
おすすめ情報