Microsoft Access 掲示板

フォームのレコードソース / 2

3 コメント
views
4 フォロー
2

レコード数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
通報 ...