Accessにサブフォームを二つと、ボタンを一つ作りました。
サブフォーム1に商品コードを入力し、ボタンをクリックすると、
商品マスタからデータを取得し、サブフォーム2に値を表示させるようにしたいです。
サブフォーム1
商品コード | |
---|---|
A001 | |
B001 | |
C001 |
サブフォーム2
商品コード | 商品名 | 単価 |
---|---|---|
A001 | りんご | 100 |
B001 | ぶどう | 200 |
C001 | 柿 | 80 |
VBA
1 2Dim rst_sub1 As DAO.Recordset 'サブフォーム1用 3Dim sfrm2 As SubForm 'サブフォーム2 4Set sfrm2 = Me!サブフォーム2 5Dim rst_sub2 As Recordset 6Set rst_sub2 = sfrm.Form.Recordset 7 8Set rst_sub1 = CurrentDb.OpenRecordset("テーブル_サブフォーム1", dbOpenTable) 9Dim record_count As Long 10record_count = rst_sub1.RecordCount 11 12If record_count = 0 Then 13 Exit Sub 14End If 15 16rst_sub1.MoveFirst 17 18For i = 1 To record_count 19 rst_sub2.AddNew 20 rst_sub2.Fields("商品コード") = rst_sub1.Fields("商品コード") 21 rst_sub2.Update 22 23 rst_sub1.MoveNext 24 rst_sub2.MoveNext 25Next i
このコードを実行しますと、rst_sub2.MoveNext
で次のようなエラーが出ます。
実行時エラー'3021': カレントレコードがありません。
しかし、サブフォーム2に、商品マスタから取得した値が1行だけ正しく表示されています。
(本来なら、サブフォーム1に3行あれば、サブフォーム2にも3行表示されるはずですが、1行だけ表示されます。しかし、この1行に表示されている値は正しいものです。)
このrst_sub2.MoveNext
を削除しますと、
今後は、サブフォーム2に#Name?
と表示されるようになり、
正しい値が1行も表示されなくなります。
どのようにすればサブフォームに正しい値を表示させられるか、ご教授のほど、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー