• 締切済み

フォーム内で複数のレコードを表示

アクセスで、表形式のサブフォーム(S_フォーム)を作成し、データを入力するとテーブル(T_明細)に追加されるようになっています。これをサブフォームのテキストボックスに入力するのではなく、別のクエリ(Q_クエリ)にあるデータを実行ボタンを押すことでサブフォームのテキストボックスに表示するようにし、テーブルのレコード(何件もある)を入力させていきたいと思っています。下記のようにコードをまず作成してみました。 Public Db As Database Public rs As Recordset Private Sub 実行_Click() Dim Temp_count As Integer Dim I As Integer Set Db = CurrentDb Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset) Temp_count = DCount("ID", "Q_クエリ") For I = 1 To Temp_count If IsNull(rs![氏名]) = False Then 氏名テキスト = rs![氏名] If IsNull(rs![住所]) = False Then 住所テキスト = rs![住所] rs.MoveNext Next I End Sub すると、ループした内容が全て同じテキストボックスに上書きされていき、結局1つのレコードしか追加できない状態です。入力操作でENTERしていくとサブフォーム内で複数のレコードが入力出来るように、出来ないでしょうか??良い記述があれば教えてください。お願い致します。

みんなの回答

回答No.1

>別のクエリ(Q_クエリ)にあるデータを実行ボタンを押すことでサブフォームのテキストボックスに表示するようにし、 >テーブルのレコード(何件もある)を入力させていきたいと思っています。 A:実行ボタンを押した時に (1) Q_クエリで抽出したレコードをテーブルに追加 (2) その追加した複数レコードをフォームに表示 (3) 変更の必要があるデータを変更する→テーブルに反映される という動作でいいのでしょうか? それとも B (1) Q_クエリで抽出したレコードをフォームに表示 (2) 変更の必要があるデータを変更する (3) ボタンクリックで、フォームに表示している複数レコードをまとめてテーブルに追加 という動作にしたいのでしょうか? Aなら、Q_クエリを追加クエリにして、それとは別のクエリーを作り、追加されたテーブルを元にして、追加されたレコードのみを表示するようにしてやればいいと思います。 Bなら作業用テーブルを作って、それに追加→表示とすることになると思います。

simple-t
質問者

お礼

ご返答ありがとうございます。質問の仕方がわかりにくかったですね。すいません m(_ _)m 今回あるテーブル(T_テーブル)をもとに作成したフォームを利用してデータを入力していくのですが、その際に別クエリ(Q_クエリ)のデータを変数か何かに取り込んで、先のフォームのテキストボックスに実行ボタンを押すと代入されるようにする事で、入力せずテーブルにデータを追加したいと考えていました。何とか解決をしたんですが、アドバイス頂いた更新クエリを利用して一度考えてみます。ありがとうございました。

関連するQ&A