2

В настоящее время у меня есть запрос к базе данных MS Access, который имеет поле с именем FedEXDetTotal, которое насчитывает 9 полей сбора FedEX. У меня есть еще одно поле из нашей внутренней системы, которое называется "Total Charge". Это просто обычное числовое поле. Я создал другое поле в этом запросе

Diff: [FedEXDetTotal]-[Total Charge]

Это говорит мне о разнице между зарядом FedEx и тем, что мы фактически взяли. Все работает нормально с этим, но когда я пытаюсь поставить критерии> 5 для поля Diff, когда я запускаю запрос, я получаю подсказку "Введите значение параметра FedEXDetTotal".

Почему Access делает это? Как мне обойти это? Я пытаюсь начать с чего-то простого (> 5), но что я действительно хочу, так это> [Forms]! [Dis]. [Txtbox_Diff].

2 ответа2

2

Псевдонимы могут использоваться в операторе SELECT с Jet/ACE SQL, но не в предложениях WHERE.

Итак, все в порядке:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff

Но тогда вы не можете сделать это:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff
  FROM Orders
  WHERE Diff > 5

Вместо этого вы должны повторить ВСЕ вычисления в предложении WHERE, таким образом:

 WHERE ([FedEXDetTotal]-[Total Charge]) > 5

(Паренсы не обязательны, но проясните их и требуются для некоторых операторов, таких как * и /).

Диалекты SQL для некоторых баз данных позволяют вам использовать псевдонимы в предложениях WHERE, но я понимаю, что способ Jet/ACE полностью соответствует стандартам SQL.

На самом деле, если вы будете использовать конструктор запросов Access для написания своего SQL, он сделает это за вас.

0

Эта статья от Microsoft может помочь решить вашу проблему. Я предполагаю, что в вашей БД есть данные для проверки этого запроса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .