MS Access

Accessのフォームを開く際、acHiddenとVisibleの組み合わせで高速化

投稿日:

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

めでたし。

-MS Access

執筆者:

関連記事

no image

VBAで英字混じりの引数から数字のみを取り出す関数

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。 VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。 カスタム関数を作るにも、これはという情報がググ …

no image

Accessで、見積書のような「サブフォームつきフォームを丸々コピー」する方法・・・見つけるのに、四苦八苦。

最初、複雑でかつ読み取り専用のクエリを元にしたフォームをコピーしようとしていたために、 acCmdPasteAppendのラインで「コマンドまたはアクション”追加貼り付け”は無効です」のエラーが出て、 …

no image

パラメータクエリにパラメータをセットして実行した結果をデータシートで表示する」というコードの実行で3065エラー

Accessの仕様として、パラメータクエリだけが駄目なのかと思ったら、なんと選択クエリが駄目なのだそう。 理由は、Executeメソッドはアクションクエリのもので、選択クエリのものではないからだそう。 …

no image

Accessで1件ずつレコードを読んでスナップショットファイルを作ってメール送信する処理

作るのにWebに情報が無くてすごく苦労したので備忘録。 私にしかわからないかもしれないけど、見た人も何か参考になるかもしれないから、公開しよっと。 ■事前準備 1.処理を起動するフォームにボタン「調査 …

no image

SqlServer 2008 Express R2 をインストールしようとしているのだが、最後の最後でうまくいかない

前回、試しに自分の普段のPCでSqlServer2008をインストールしたのだが、今回はサーバ(といってもXP)を対象に同様のことをしてみた。 しかしインストールの最後で「there was an e …