Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
チェックボックスがtrueのレコードに代入
投稿日時: 18/10/03 07:31:31
投稿者: ゴマゴマ

お世話になります。
帳票フォームにある複数レコードのうちチェックボックス(連結)をtrueにした全てのテキストボックスにNow()の値を代入をしたいのですが最後にtrueにしたレコードにしか代入されません。
 
trueにしたレコードの全てのテキストボックスにNow()の値を代入する方法をご教示ください。
以下実行ボタンのコードです。
 
Private Sub cmd実行ボタン_Click()
If Me.選択チェックボックス = True Then
Me.テキストボックス1 = Now()
DoCmd.RunCommand acCmdSaveRecord
 
以上

回答
投稿日時: 18/10/03 13:41:35
投稿者: Suzu

Me.テキストボックス1 = Now()
これは、カレントレコードの テキストボックス1 に Now() の値を代入しています。
 
ループ処理等、条件に該当するレコードに全てに対しての処理を行わない限り、
『True にした全レコード』とはなりません。
 
 
この様な時には、
 
1. UPDATE フォームレコードソース
    SET テキストボックスコントロールソース = Now
    WHERE チェックボックスのコントロールソースフィールド = True
 
    の様なSQLの更新クエリを実行し、再クエリを行う。
(フォームのカレントレコード周辺に対してレコードロックが掛かっている場合には更新クエリが失敗します。
 この場合には、レコードソースに "" を渡して、フォームとレコードソースの連結を切り、
 更新クエリ実行後、再度レコードソースを設定する事で対処)
 
2. フォームのレコードセットを直接操作し、ループ処理にて、Nowの値を代入する
 
のどちらかを採る事が多いです。
 
1の方が難易度は低いですので、チャレンジしてみましょう。

投稿日時: 18/10/04 18:21:08
投稿者: ゴマゴマ

Suzu 様
 
いつもお世話様です。
1.で解決できました。感謝いたします。
引き続き宜しくお願い致します。
 
以上