У меня проблема с кросс-табличным запросом на основе запроса, который содержит подзапрос. Сам запрос работает нормально, но когда я использую его в запросе кросс-таблицы, я получаю сообщение об ошибке, связанное с именем нераспознанного поля, и указывая на поле, используемое в подзапросе. Странно то, что я могу без труда определить сводную таблицу или сводную диаграмму по этому запросу.ms-access crosstab запрос на основе запроса, содержащего подзапрос
Таким образом, запрос TestqryMeasurement
определяется по формуле:
SELECT *,
(SELECT min(subMeas.MeasDate) FROM tblMeasurement AS subMeas
WHERE subMeas.idTest = mainMeas.idTest AND subMeas.idMovement =
mainMeas.idMovement) AS FirstMeasDate,
DateDiff("d",FirstMeasDate,MeasDate) AS DaysSinceFirstMeas
FROM tblMeasurement AS mainMeas;
Он в основном используется, чтобы определить время, проведенное между первым измерением и текущим для данного движения в данном тесте. При выполнении этого запроса я получаю правильные результаты.
перекрестный запрос записывается:
TRANSFORM Sum(TESTqryMeasurement.[Amplitude]) AS SumOfAmplitude
SELECT TESTqryMeasurement.[DaysSinceFirstMeas],
Sum(TESTqryMeasurement.[Amplitude]) AS [Total Of Amplitude]
FROM TESTqryMeasurement
GROUP BY TESTqryMeasurement.[DaysSinceFirstMeas]
PIVOT TESTqryMeasurement.[idMovement];
Когда я запускаю это, я получаю сообщение:
... двигатель базы данных не распознает «mainMeas.idTest», как действительный название поля или выражение
Это поле используется только в подзапросе TestqryMeasurement
, который сам по себе работает.
Любая идея?
NB: У меня есть V.14 Ms-Access, часть MS-Office 2010
- EDIT -
мне удается получить вещи работать, заменяя подзапрос с помощью функции VBA который возвращает дату первого измерения. Это решение, тем не менее, не слишком хорошо, потому что потеря производительности кросс-таблицы огромна (с или без вычисленного поля). Странно то, что сам запрос имеет сопоставимые характеристики с функцией VBA или эквивалентным подзапросом ...
Вы пытались переместить содержимое запроса mainMeas прямо в запрос кросс-таблицы? – DHW
Привет, @ DHW, спасибо, что помогли мне! Я попробовал ваше предложение (т.что я понял об этом: в основном заменяя предложения SELECT и FROM кросс-таблицы запросами тегов TestqryMeasurement и делая необходимые корректировки). К сожалению, я все равно получаю такое же сообщение об ошибке! – jxrossel
Извините - я далеко от доступа, поэтому я не могу набрать рабочий запрос для вас. Но попробуйте это .. # 1: сделайте один запрос, который имеет три поля (idTest, idMovement и MeasDate). Группируйте по двум полям id и min поле MeasDate. Вызовите этот запрос «SubMeas». # 2 Создайте новый запрос, в котором tblMeasurement и SubMeas добавлены в качестве таблиц в запрос. Присоединитесь к двум таблицам с полями idTest и idMovement. Добавьте все поля tblMeasurement, которые вам нужны, и добавьте в поле MinOfMeasDate. Теперь вы можете изменить этот запрос на запрос типа кросс-таблицы и получить результаты, которые вы после. – DHW