none
Accessのコンボボックスへのデータセットについて(AZURE) RRS feed

  • 質問

  • クライアント・サーバ共にAccessで実行していたシステムで、サーバのみをAZUREに移行して、
    システムを再構築しています。AccessからAZUREへのDB接続は問題なくできていますが、
    性能面で問題が出ているので、ご教示頂ければと思います。

    AZUREへのデータ更新の大半はパススルークエリを使用して、性能向上を図っているのでそこは問題ありませんが
    とある画面では、コンボボックスを十数個配置しており、Form_loadの段階で、値集合(rowsource)にSQLで
    データをセットしています。

    例)
        Dim stSQL       As String
        
        '●●名コンボボックス初期設定
        Select Case frm.name
            Case "F00_受付"
                stSQL = "SELECT MT●●.●●名, MT●●.●●コード FROM MT●● "
        End Select
        
        'フォーム別設定
        Select Case frm.name
            'azure対応-20180512-S
            Case "F00_受付"
                With frm.●●名
                    .BoundColumn = 2
                    .RowSource = stSQL  ← ココ
                    .ColumnCount = 3
                    .ColumnWidths = "3cm;0cm;0cm"
                End With
        End Select


    これまでは、Accessの中だけで実行されていたので感じませんでしたが、
    全てのコンボボックスに対してこの処理が発生するため、コンボボックスの数が多ければ
    画面表示に時間を要します。
    これらの性能を向上させるために、どのような手段があるのでしょうか。ご教示ください。
    よろしくおねがいします。

    2018年5月25日 23:50

すべての返信

  • もし、何度も発生するラウンドトリップで時間がかかっているのであれば、一度のランドトリップで必要な全てのデータを取得してしまうという方法も考えられます。例えば、

    SELECT 'MT●●' 区分名, MT●●.●●名 名前, MT●●.●●コード コードFROM MT●●
    union
    SELECT 'MT■' 区分名, MT. 名前, MT.コード コード FROM MT
    union
    SELECT 'MT▲' 区分名, MT. 名前, MT.コード コード FROM MT
         ・
         ・
         ・
    で、ワークテーブルを作成しておいて、
        '●●名コンボボックス初期設定
        Select Case frm.name
            Case "F00_受付"
                stSQL = "SELECT 名前, コード FROM ワークテーブル where 区分名 = ' MT●●' "
        End Select

    ただ、どこで時間がかかっているかですが・・・



    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年5月26日 4:46