hatena
hatena
2021/11/21 (日) 18:35:01
レコード数100万件、カラム数30くらいあるテーブルのデータを複数のビューで
クロス集計クエリをしています。単にクエリを表示するのにかなりの時間がかかります。
テーブルに適切なインデックスは設定されているでしょうか。
列見出しに設定するフィールド、抽出条件を設定するフィールド、並べ替えを設定するフィールドにインデックスを設定してみてください。
複数のテーブルを結合しているなら結合フィールドにもインデックスを設定してみてください。
クロス集計クエリではなく通常の選択クエリであれば、VBAでレコードソースを設定する際、
データが抽出されない条件を初期設定などして、必要なタイミングでコマンドボタンクリック時
のイベントプロシージャで表示させることなどできますが、クロス集計クエリではうまくいきません。
フォームに関しては、デザインビューでは、タブの最初に表示されいるページのみにソースオブジェクトを設定しておいて、ページを変更したときにそのページのソースオブジェクトを設定するという方法が考えられます。
コード例
Private Sub タブ1_Change()
Select Case Me.タブ1.Value 'Value=表示されいるページ番号(0から始まる)
Case 1 '2ページ目
With Me.サブフォームコントロール1
If .SourceObject = "" Then .SourceObject = "サブフォーム1"
End With
Case 2 '3ページ目
With Me.サブフォームコントロール2
If .SourceObject = "" Then .SourceObject = "サブフォーム2"
End With
Case 3
'略
End Select
End Sub
通報 ...