Accessのフォームを開く際、acHiddenとVisibleの組み合わせで高速化
Accessのとあるシステムで、
フォームを開いてフィルタをセットして実行してさらに並べ替える・・・という処理をしようとしたら、これがなかなか終わらない。
30秒以上かかる。
フィルタしている様子が画面上くるくる変わって処理がかかっている。
以下をためしてみると、確かに画面は更新されない分処理は速いのだが、画面が白くなるので、ユーザーは不安になりそうだ。
Application.Echo True
DoCmd.Echo True
というわけで、以下に落ち着いた。
DoCmd.OpenForm (フォーム1), acFormDS, , , , acHidden Forms!フォーム1.Visible = True
acFormDSはデータシートで表示するおまじない、acHiddenは開いたフォームをバックグラウンドで実行して、後述のVisible = Trueで表に見せる。
処理も20秒程度で終わることになった。
DoCmd.OpenForm (フォーム1), acFormDS, , , , acHidden 'acHiddenとVisibleで表示高速化 With Forms!フォーム1 .RecordSource = フォーム1 .Filter = お名前の先頭 in ( rmsg ) .FilterOn = True .OrderBy = お名前の先頭 .OrderByOn = True .Visible = True End With
めでたし。