動的日付関数を使用して列ヘッダー、したがってフィールド名を生成するクロス集計クエリがあります。例: ForecastPeriod:DateAdd("m",[Period],[StartDate]) これは、クロス集計クエリを実行するたびに、異なるフィールド名になる可能性があることを意味します。このクロス集計の結果を取得し、他の 3 つの同様のクロス集計の結果と組み合わせて、新しいテーブルを作成する必要があります。現在、テーブル作成クエリと 3 つの追加クエリを使用しています。これを行う理由は、予測期間の範囲にわたって、材料項目ごとに 4 つの異なるカテゴリのデータを含めるためです。
結果は次のようになります。
材料区分 1 あたりの値 ...2 あたりの値 ......24 あたりの値
MatA デマンド 0 ... 10 ... 0
MatA デマンド ドル $0 ... $10 ....... $0
MatA 予報 10 ... 20 ... 50
MatA 予測ドル $10 ... $20 ....... $50
問題は、現在のクロス集計クエリの結果に対してテーブル作成クエリが既に作成されていることです。来月クロス集計を実行すると、結果のフィールド名が異なります。そのため、テーブル作成クエリの設計で期間を手動で変更し、結果に含まれなくなった期間を削除して、新しい期間を追加することに行き詰まっています。
クロス集計が実行されるまでフィールド名を知らなくても、VBA を使用して新しいテーブルを作成する方法はありますか?
または、フィールド名をコード化する方法や、実行後にクロスタブから取得する方法はありますか?
次のようなコードを使用する場合: strSQL = "SELECT tblForecast.Material, tblForecast.Category, tblForecast.X " & _ "INTO tblTemp " & _ "FROM tblForecast;"
tblForecast.X が実際に何と呼ばれるかは本当にわかりません。11/1/08 または 12/1/08 などの可能性があります。
フィールド名を保持する変数を宣言し、日付コードを使用して変更する場合、それをテーブルに追加するにはどうすればよいですか? Alter Table を使用しますか?
私はこれができると確信しています、私はそれを行う方法について頭を悩ませることができないので、どんな助けも大歓迎です!! ありがとう!