
いつもお世話になっています。
win7,Access2010 です。
帳票フォーム上にいくつかの連結フィールドがあり、A,B,Cとします。
Aには初期値が入力されています。
Bに1レコードづつ値を入力し、すべてのレコードに入力し終わった後に、
全レコードにおいて、A-Bの値をCに代入したいのです。
以下のようなコードを書きましたが、
カレントフィールドにのみ適用されます。
一括で全レコードに適用するためには、
どうすればいいのでしょうか?
よろしくお願いします。
Private Sub コマンド71_Click()
Dim rs As Recordset
Set rs = Me.Recordset.Clone
rs.MoveFirst
Do Until rs.EOF
Me!C = A - B
rs.MoveNext
Loop
rs.Close
MsgBox "計算が終了しました"
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No3 です。
余計なコメントマークが付いていました。
> 'rs.Update
> ADO と異なり、Update しないと、変更がキャンセルされます。
rs.Update
ADO と異なり、Update しないと、変更がキャンセルされます。
No.3
- 回答日時:
添削とちょっとだけ解説
Private Sub コマンド71_Click()
' Dim rs As Recordset
Dim rs As DAO.Recordset
' 参照設定によっては ADO の Recordset とみなされ、型不一致のエラーになる。
' 明示的に DAO の Recordset と宣言しましょう。
' Set rs = Me.Recordset.Clone
Set rs = Me.RecordsetClone
RecordsetClone なら Recordset に加えられた変更が
すぐに フォームに反映します。
rs.MoveFirst
Do Until rs.EOF
' Me!C = A - B
rs.Edit
ADO と異なり、レコードを編集する場合、 その前に Edit メソッド が必要です。
rs!C = rs!A - rs!B
レコードの内容で計算し、フィールドに書き込みます。
RecordsetClone の ポインタを変えても
フォームのカレント行は変わりません。
'' Me!C = A - B
は フォームの現在のレコードで、 コントロールの値の代入を しているだけです。
フォームで、移動していないので、カレント行だけ繰り返し同じ処理をするのみです。
'rs.Update
ADO と異なり、Update しないと、変更がキャンセルされます。
rs.MoveNext
Loop
rs.Close
MsgBox "計算が終了しました"
End Sub
フォームの Recordset、 RecordsetClone、 Recordset.Clone の違いを
ヘルプ等でご確認ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
2つ目のレコードの値を取得するには?
Access(アクセス)
-
-
4
ACCESS 表形式フォームで1レコードずつ計算したい
Visual Basic(VBA)
-
5
アクセスのコンボボックスの重複をなくすには?
Access(アクセス)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
8
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
9
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
Excelで〇のついたものを抽出し...
-
Office2024インストール後の疑問点
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
マイクロソフト オフィスのサポ...
-
Office2021を別のPCにインスト...
-
大学のレポート A4で1枚レポー...
-
エクセルで質問です。 ハイパー...
-
マクロ自動コピペ 貼り付ける場...
-
Microsoft365について
-
エクセルからメールを作れるか...
-
エクセル 日付順に並べてかえた...
-
Microsoft Office Homeインスト...
-
office2019 のoutlookは2025年1...
-
Office 2021 Professional Plus...
-
パソコンWindows11 Office2021...
-
エクセル:一定間隔で平均値を...
-
別シートの年間行事表をカレン...
-
Excel 日付を比較したら、同じ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
マイクロソフト オフィスのサポ...
-
Office2021を別のPCにインスト...
-
エクセル 日付順に並べてかえた...
-
outlookのメールが固まってしま...
-
Excelで〇のついたものを抽出し...
-
Microsoft Formsの「個人情報や...
-
マクロ自動コピペ 貼り付ける場...
-
Office2024インストール後の疑問点
-
office2019 のoutlookは2025年1...
-
エクセルで質問です。 ハイパー...
-
エクセル 同じ数字を他の列に自...
-
別シートの年間行事表をカレン...
-
【Excel VBA】PDFを作成して,...
-
Excel 日付を比較したら、同じ...
-
パソコンWindows11 Office2021...
-
Office 2021 Professional Plus...
-
エクセル:一定間隔で平均値を...
-
Teams内でショートカットって貼...
おすすめ情報