Microsoft Access 掲示板

requeryで帳票の頭に戻る件

4 コメント
views
4 フォロー

お世話になります。現在案件リストの帳票から、1件ずつ詳細画面をダイアログで開けるようにしているのですが、その画面での修正をリストに反映させるため、me.requeryを使っています。
しかし、requeryするとリストの頭に画面が戻ってしまい、大変煩わしく感じられます。
この問題は解決できないですよね…?
念のためご確認をお願い致します。(requeryのせいではない、等、勘違いあれば申し訳ありません。)

セロハン
作成: 2021/03/05 (金) 11:53:48
通報 ...
1
hiroton 2021/03/05 (金) 13:01:42 bfb00@d3250

フォームに対してrequeryした場合にリストが再読み込みされて先頭に戻ってしまうのは仕様ですね

requery前にスクロール状態を保存して再度スクロール位置を調整する(面倒)か、メイン-サブフォーム形式にしてサブフォームコントロールをrequeryするのがセオリーでしょうか

Me!サブフォーム.Requery '=>スクロール位置は変わらない
Me!サブフォーム.Form.Requery '=>先頭に移動する
2
セロハン 2021/03/05 (金) 13:19:27 0029a@1c915 >> 1

ご回答ありがとうございます。
そんな方法があるんですね。
今、帳票1案件毎に左に詳細フォームに飛ぶボタンがあるのですが、ここはメインに残しておいて、その他の部分をサブにして埋め込むイメージでしょうか・・?
(イメージがわいておらずスミマセン)

3
hiroton 2021/03/05 (金) 15:08:37 bfb00@d3250 >> 1

メイン-サブ形式で単純にやるなら、親フォームの枠いっぱいにサブフォームを置いてしまうのが楽だと思います。親フォームはただの外枠扱いですね

帳票1案件毎に左に詳細フォームに飛ぶボタン

案件毎ということはボタンがたくさん並んでいると思います。これをメインとサブに分けて同期してスクロールさせるのは現実的ではありません。上記方法のように親フォームを外枠扱いとするか、「詳細ボタン」はメインに一つにして、選択中の案件が分かりやすいようにサブフォームは選択中の行の背景色を変えるような仕組みにするかですかね

4

Requeryは全レコードの再読み込みですので、先頭に戻ります。

帳票フォームのカレントレコードを詳細フォームで更新したのなら、カレントレコードの更新のみ反映させればいいので、その場合は、Refresh を使うといいでしょう。これなら、先頭に戻ることはないです。

Requeryは複数レコードを更新してそれを一気に反映させたい場合に使えばいいでしょう。