
いつもお世話になっています。
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
このQ&Aを見た人はこんなQ&Aも見ています
-
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
2つ目のレコードの値を取得するには?
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
ACCESS 表形式フォームで1レコードずつ計算したい
Visual Basic(VBA)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
7
ACCESSのBookmarkプロパティの使い方
その他(データベース)
-
8
帳票フォームに全レコードを表示できない
その他(データベース)
-
9
アクセスのコンボボックスの重複をなくすには?
Access(アクセス)
-
10
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
11
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
12
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
13
Access_Formのデザインビュー画面を拡大表示
Access(アクセス)
-
14
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
15
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
16
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
17
帳票フォームのなかにリストを表示させたい
Access(アクセス)
-
18
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
新規レコード行を非表示にしたい
-
Access 「このレコードを保存す...
-
レコードを保存するコード ア...
-
Accessでレコードの保存をせず...
-
Accessで上の行を自動でコピー...
-
アクセスの自動保存解除はでき...
-
Access データのないフォーム...
-
Accessでのデータ消滅に...
-
レコードをダブルクリックする...
-
アクセス:フォーム入力で、最...
-
access 自作の移動ボタンのエラ...
-
Access2010、値を入力したら自...
-
Accessでフォーム上に 直前の...
-
アクセス帳票フォームのループ...
-
レコードの移動
-
ACCESSフォームのリストボック...
-
アクセス データの競合を非表...
-
Access 帳票フォームでカレント...
-
アクセスでの警告について教え...
-
Accessでチェックボックスで抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
アクセスのフォームで立ち上げ...
-
ACCESSフォームのリストボック...
-
アクセスの自動保存解除はでき...
-
アクセス:フォーム入力で、最...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
Accessでのデータ消滅に...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
アクセスでの警告について教え...
おすすめ情報