アクセスフォームまたはレポートのRecordSource
は、テーブルまたはクエリです。テーブルはローカルでもリンクされていても(計算フィールドを含むかもしれません)、クエリは他のクエリや他のテーブルを参照できます。さらに、問合せでは「*」選択、ユーザー定義関数(UDF)、リモートで接続されたソースも使用できます。クロス集計クエリにはフィールド内の値によって決定されるフィールド名が含まれるため、クロス集計フィールド名はデータの変更に応じて変わる可能性があります。私は次の点を考慮して、与えられたレコードのフィールド名を決定するための最も効率的な「光タッチ」の道を見つけようとしているAccess RecordSourceのフィールドを列挙する最も効率的な方法は何ですか?
:
ユーザー定義関数を含むクエリでなければはフィールド名を決定するときに関数を呼び出すため、レコードセットのアプローチは適切ではありません。
ロックは、データベースは、理想的には、リンクテーブルへ
接続がないを開くべき理想的、とも任意のトリガがすべき排他モードではないだろう基礎となるオブジェクト
に置くべきではありませんリモートテーブル上でトリガされます。可能な場合は、リモートデータソースへのアクセスなしにフィールドを決定する必要があります。
フィールド名は必須ですが、フィールドの種類と属性があればいいです。フィールドの説明はボーナスになります。
クロス集計のクエリが潜在的に基礎となるテーブルを開き、UDFを実行することが懸念されるため、クロス集計クエリのフィールドの列挙をスキップする準備はできていますが、クエリはクロス集計クエリであるソースを持っている場合、十分ななりのDAOテーブル定義とクエリ定義を使用している場合、私はわからないんだ、または私はおそらくいくつかの他のADOスキーマおよびカタログを探索したりする必要があるかどうか...
を知っていますアプローチ?
これは非常に基本的なDAO手法ですが、必ずしも最速であるとは言えません。
Sub EnumQueryDefFieldNames()
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Query7_Crosstab")
For Each fld In qdf.Fields
Debug.Print fld.Name
Next fld
End Sub