Исправить запрос и ещё добавить условие отбора для поля

Условие:

Access. Исправить запрос и ещё добавить условие отбора для поля: Дата доставки фактическая (задаться значением года)

Условие: Access. Исправить запрос и  ещё добавить условие отбора для поля: Дата доставки фактическая (задаться значением года)

Решение:

Предмет: Информатика
Раздел предмета: Базы данных, запросы в Microsoft Access (SQL, перекрёстные запросы)


🔍 Анализ ошибки

На скриншоте представлен перекрёстный запрос в Microsoft Access. Ошибка возникает из-за недопустимого имени поля:

"[Заказы].[Скидка_за_просрочку, %]" не распознается ядром СУБД Microsoft Access как допустимое имя поля или выражение.

Причина — в имени поля содержится символ «%», который требует особой обработки. В Access такие поля, содержащие спецсимволы, нужно заключать в квадратные скобки целиком.


✅ Исправление запроса

Вот исправленный вариант запроса с учётом правильного обращения к полю и добавленным условием по году "Дата_время_доставки_фактическая" (например, 2023):

TRANSFORM Sum([Исходные данные]![Количество]*(1 - [Заказы].[Скидка_за_просрочку %]/100) * [Сумма к оплате]) 
SELECT [Исходные данные].[Название товара]
FROM [Исходные данные]
INNER JOIN Заказы ON [Исходные данные].[Код заказа] = Заказы.[Код заказа]
WHERE Year([Дата_время_доставки_фактическая]) = 2023
GROUP BY [Исходные данные].[Название товара]
PIVOT Format([Дата_время_доставки_фактическая], "mmm");

🛠 Что было исправлено:

  1. Поле [Скидка_за_просрочку, %] заменено на: [Скидка_за_просрочку %]
    (убран символ запятой, заменён на пробел, или поле должно быть переименовано в таблице — лучше избегать спецсимволов в названиях полей).

  2. Добавлено условие: WHERE Year([Дата_время_доставки_фактическая]) = 2023

  3. Убедитесь, что:

    • Поле [Скидка_за_просрочку %] действительно существует в таблице [Заказы]
    • Связь между таблицами [Исходные данные] и [Заказы] по полю [Код заказа] корректна

✅ Рекомендации

  • Избегайте спецсимволов (%, пробелы, запятые) в названиях полей.
  • Если такие поля уже есть — всегда заключайте их в квадратные скобки.
  • Проверяйте правильность имён таблиц и полей через конструктор запросов.

Если нужно задать другой год — просто замените значение в условии:

WHERE Year([Дата_время_доставки_фактическая]) = 2024

Если дашь точное имя поля, как оно записано в таблице, я помогу адаптировать запрос ещё точнее.

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн