1

私はAccess2003を使用しており、ユーザーがさまざまなフィルターから選択できるフォームを持っています。VBAを使用して、それらのフィルターに基づいてサブフォームのレコードセットを更新します(VBAでSQLステートメントを生成します)。このサブフォームには重複するクライアントIDが含まれている可能性があるため、クライアントIDの一意のリストを取得しようとしています。

サブフォームのソースSQLがある場合、VBAを使用して一意のクライアントIDをクエリする簡単な方法はありますか?私はこれらのオプションについて考えました:

  • すべてのIDを一時テーブルに書き込み、そのテーブルにクエリを実行します(必要以上の作業/リソースのようです)
  • どういうわけか、VBAのレコードセットオブジェクトにクエリを適用します(これは可能ですか?)。レコードセットオブジェクトをSQLクエリと同じに設定してから、を実行しようとしましたがSELECT DISTINCT client_id FROM <the recordset object>、これが可能であると信じるような情報が見つかりません。
  • 元のクエリに基づいて新しいSQLクエリを生成します(SELECT DISTINCT client_id FROM ('original select query text here')うまくいくことを期待していましたが、FROMステートメントで構文エラーが発生しました
4

1 に答える 1

2

3番目の選択肢を目指します。これは、サブクエリのエイリアスを作成する場合に機能するはずであり、'original select query text here'適合できます。

SELECT DISTINCT sub.client_id
FROM
    (
        'original select query text here'
    ) AS sub

それでもAccessが詰まる場合は、何のために持っているかを教えてください'original select query text here'

あなたは代替案#1について正しいです...それは無駄です。

FROMAccessではレコードセットオブジェクトをソースとして使用してクエリを実行できないため、代替方法2は不可能です。

于 2012-08-06T21:18:21.803 に答える