
いつもお世話になっています。
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(アクセス)
-
2つ目のレコードの値を取得するには?
Access(アクセス)
-
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
-
4
ACCESS 表形式フォームで1レコードずつ計算したい
Visual Basic(VBA)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
アクセスのコンボボックスの重複をなくすには?
Access(アクセス)
-
7
帳票フォームに全レコードを表示できない
その他(データベース)
-
8
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
9
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
10
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
11
Access サブフォームでの選択行の取得
その他(データベース)
-
12
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
13
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
14
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
15
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
16
帳票フォームのなかにリストを表示させたい
Access(アクセス)
-
17
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセス:フォーム入力で、最...
-
Accessでフォーム上に 直前の...
-
Access 帳票フォームでカレント...
-
アクセスでフォームビューがみ...
-
Access データのないフォーム...
-
異なるフォームに属する関数間...
-
レコードをダブルクリックする...
-
重くなってしまったアクセスを...
-
ACCESSでフォームを使って、テ...
-
ACCESSフォームのリストボック...
-
ACCESSのクエリで抽出したデー...
-
Accessで新しいレコードに規定...
-
Accessで上の行を自動でコピー...
-
アクセス2000:マクロで「オブ...
-
Accessでレコードの保存をせず...
-
アクセス帳票フォームのループ...
-
Access2010、値を入力したら自...
-
アクセス データの競合を非表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
レコード削除時に(サブ)フォー...
-
フィルタ後のフォームの件数の...
-
アクセス:フォーム入力で、最...
-
アクセスの自動保存解除はでき...
-
ACCESSフォームのリストボック...
-
AccessVBA RecordSourceのリセ...
-
レコードをダブルクリックする...
-
Access 「このレコードを保存す...
-
Access:フォームプロパティ「...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
ACCESS起動時に所定フォームを...
-
アクセス データの競合を非表...
-
Access サブフォームにフィルタ...
-
Accessでレコードの保存をせず...
-
Accessで上の行を自動でコピー...
-
Access レコード移動時イベント...
おすすめ情報