• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サブフォームに全レコードを表示させておく方法)

ACCESS2013でサブフォームに全レコードを表示させる方法

このQ&Aのポイント
  • ACCESS2013を使用してアンケートを入力する画面を作成しています。
  • 名前や性別などはメインの画面上部にあり、サブフォームにアンケート設問を表示させて回答をいただくイメージを考えています。
  • VBAで設問項目テーブルの内容をメイン画面下部にラベル表示させる方法はできたのですが、サブフォームで最初から質問項目が全て表示できる方法があれば教えてください。

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

  • ベストアンサー
  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.2

VBA以外であれば、サブフォームにそのままテーブルを 指定してみてはどうでしょうか。 例えば、質問テーブルに「チェック」というフィールドを追加し テキスト型/コンボボックスで設定し、値リストで○×とします。 で、テーブル上で質問毎に○、×を選択してもらって登録ボタンが押されたら その○×結果を保存するテーブルに登録しつつ、質問テーブルの ○×をクリアする・・・って感じですかね。 わたしもあまり詳しくないので、これぐらいの方法しか思いつきませんが もっとよい方法はあるかと思います。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

メインフォームを開くときに、設問テーブルをループで回して サブフォームの設問用テキストボックスを順次埋めていくって のはどうでしょうか。 こんな感じです。 テキストボックスが埋まらなかったら○×の選択コンボボックスも 非表示にするなどした方がよいかもしれませんが。 Private Sub Form_Open(Cancel As Integer) Dim count As Integer Dim tbox As String Dim MyDB As Database Dim Mytable As Recordset Set MyDB = DBEngine.Workspaces(0).Databases(0) Set Mytable = MyDB.OpenRecordset("質問テーブル", DB_OPEN_DYNASET, dbSeeChanges) Mytable.MoveFirst count = 1 Do Until Mytable.EOF Forms![フォーム4]![フォーム3].Form.Controls("T" & count).Value = Mytable![質問] count = count + 1 Mytable.MoveNext Loop End Sub フォーム4がメイン、フォーム3がサブフォームで、フォーム3には T1、T2・・・という名前でテキストボックスがあります。

utdx019
質問者

お礼

ご丁寧な回答をいただきありがとうございます。 やはりVBAでしかできないのでしょうか。質問数が可変で対応できそうですので、VBAで開発する場合は参考にさせていただきます。

すると、全ての回答が全文表示されます。

関連するQ&A