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

Accessで「イベントプロパティに指定した式MouseMoveでエラーが発生しました。フォームまたはレポート上のActiveX コントロールを読み込むときにエラーが発生しました。」

フォームに配置したプログレスバーコントロールの上をマウスポインタが横切ろうとすると、必ず上のエラーメッセージが表示される。 原因がわからず、対処もできず、困っていた。 Google先生も頼りにならず、 …

no image

AccessからExcelフォーマットでファイルに出力するサンプルコード

Excelから外部データの接続の際に,ユーザー定義関数を含んだクエリを指定するとエラーになったので、こんなやり方で対処。 Private Sub btnB2_Click() DoCmd.OutputT …

no image

Accessでのテーブルのエクスポート定義

Access2007のテーブルをcsv保存したいのだが、結果ファイルにダブルコーテーションを付けたくない・・・。 ダブルクォーテーションつきであれば、例えば、 DoCmd.TransferText a …

no image

Accessでフォームフィルタの結果をExcelにエクスポートする

ちょっと、苦労した。 Private Sub cmdDMデータ作成_Click() On Error GoTo Err_cmdDMデータ作成_Click Dim rstf As String Dim …

no image

DoCmd.GoToRecordよりもMe.SaveよりもMe.Refresh

Accessで、一旦フォーム上のレコードを保存したいとき、 Me.Save とやってもレコードが保存されない。 そこで、今までは、DoCmd.GoToRecordで無理矢理レコードを移動して保存してい …