У меня есть перекрестный запрос, который использует функцию динамической даты, чтобы получить заголовки столбцов и, следовательно, имена полей. Пример: ForecastPeriod: DateAdd ("m", [Period], [StartDate])
Это означает, что каждый раз, когда я запускаю кросс-таблицу, у меня могут появляться разные имена полей.
Мне нужно взять результаты этой кросс-таблицы и объединить ее с результатами 3 других аналогичных кросс-таблиц, чтобы создать новую таблицу. Прямо сейчас я использую запрос make table и 3 запроса на добавление. Причина, по которой я это делаю, заключается в том, чтобы включить 4 разных категории данных для каждой позиции материала в течение периода прогнозирования.
Результат выглядит примерно так:
Категория материала Значение Per1 ... Значение Per2 ...... Значение Per24
МатА Спрос 0 ... 10 ....... 0
долларов США MatA $ 0 ... $ 10 ....... $ 0
Прогноз MatA 10 ... 20 ....... 50
MatA Прогноз Долларов $ 10 ... $ 20 ....... $ 50
Проблема в том, что запрос make table уже построен на основе результатов текущего кросс-таблицы. Когда я буду запускать кросс-таблицу в следующем месяце, результаты будут иметь разные имена полей. Поэтому я застрял, вручную изменяя периоды в дизайне запросов make table, удаляя тот, которого больше нет в результатах, и добавляя новый.
Есть ли способ использовать VBA для создания новой таблицы, не зная имен полей, до тех пор, пока не запустится кросс-таблица?
Или есть способ кодировать имена полей или извлекать их из кросс-таблицы после ее запуска?
Если я использую код вроде:
strSQL = "ВЫБЕРИТЕ tblForecast.Material, tblForecast.Category, tblForecast.X" & _
"INTO tblTemp" & _
"ОТ tblForecast;"
Я действительно не знаю, как будет называться tblForecast.X. Это может быть 11/1/08 или 12/1/08 и т. Д.
Если я объявляю переменную для хранения имени поля и использую код даты, чтобы изменить его, как мне добавить его в таблицу? Должен ли я использовать Alter Table?
Я уверен, что это можно сделать, я просто не могу понять, как это сделать, поэтому любая помощь будет оценена !! Спасибо!