Microsoft Access 掲示板

帳票フォームで変更した行のみ更新

6 コメント
views
4 フォロー

帳票フォームで入力したデータを変更したりしているのですが
変更に伴って入力値に対し、テキストの色を変更しています。

しかし帳票フォームのデータ量が多くなると、1個のレコード?行?を変更し、更新されるときに
全レコード更新されるので、再表示までに毎入力、時間がかかってしまいます、

できるかわからないですが、変更したレコード?行?のみ更新する方法などありませんでしょうか?

たく
作成: 2023/02/17 (金) 13:56:39
通報 ...
1
りんご 2023/02/17 (金) 14:12:16 935bc@0e907

>更新されるときに全レコード更新されるので、再表示までに毎入力、時間がかかってしまいます、

1つのレコード更新時に、全てのレコードをもう一度更新するようなコードを書いていませんか?取り敢えず、テキストの色を変更するコードをOFFにして確認してみるといいかも。

2
たく 2023/02/17 (金) 18:57:27 5acda@0a7dd

色の変更は条件付き書式で変更しています。
データを入力しても 条件付き書式が動作してくれないので
DoCmd.Requery "" を行って更新している状況です

3
りんご 2023/02/17 (金) 19:17:35 07313@0e907 >> 2

DoCmd.Requery "" を行って更新している状況です

 もし、それを外して改善するならば、まずは外し、色の変更は別の質問で誰かに教えて貰うとか。

4

Me.Refresh
あるいは
Me.Recalc
でどうでしょう

5
たく 2023/02/18 (土) 14:14:52 5acda@0a7dd

Me.Recalc で少しはやくなりました!

6

条件付き書式は重い処理になるので、別案を検討してみるといいかも。

方法としては下記で紹介している方法の応用になります。下記では背景色ですが、前面色(文字色)を対象に同じ設定にします。

カレント行の背景色の変更 その3 - hatena chips

文字色を変更したいテキストボックスの前面にぴったり重なるようにテキストボックスを配置して下記のように設定します。

 =IIf(条件式,[フィールド名],"")

プロパティ設定値
コントロールソース=IIf(条件式,[フィールド名],"")
背景スタイル透明
タブストップいいえ
前景色ご希望の色
名前txtフィールド名

上記のテキストボックスのフォーカス取得時のイベントプロシージャ

Private Sub txtフィールド名_Enter()
    Me.元のテキストボックス名.SetFocus
End Sub

元のテキストボックスの更新後処理

Private Sub txtF2_AfterUpdate()
    Me.txtフィールド名.Requery
End Sub