2014-12-09 4 views
0

Хорошо, хорошо, я сейчас разрабатываю базу данных для моей университетской курсовой работы. Я пытаюсь вычислить поле в запросе. Вычисленное поле составлено из выражения IIF через построитель выражений. Основная проблема заключается в том, что вычисленное поле работает, однако, поскольку я поставил «Не применимо» в ложную часть IIF, он все еще выглядит как #Error? Вот ниже мой МИФ!Расчетное поле (IIF)

IIf([Quantity]=20,[Total After Discount]*0.95, 
    IIf([Quantity]=50,[Total After Discount]*0.925, 
     IIf([Quantity]=100,[Total After Discount]*0.9, 
      IIf([Quantity]>=200,[Total After Discount]*0.875,"Not Applicable.")))) 

Любая помощь/идеи или предложения, пожалуйста?

ответ

0

Этот запрос вычисляет общую скидку ПОСЛЕ. Поэтому его ввод должен быть общей скидкой BEFORE. Вы, вероятно, делать что-то вроде этого:

SELECT IIf([Quantity]=20,[Total After Discount]*0.95,...) AS [Total After Discount] 
FROM ... 

Таким образом, в этом выражении [Total After Discount] имеет в виду себя, что невозможно. Измените его на

SELECT IIf([Quantity]=20,[Total Before Discount]*0.95,...) AS [Total After Discount] 
FROM ... 

Если [Total After Discount] столбец в другой запрос или таблицу, и вы хотите использовать то же имя столбца в результате опять же, вы можете сделать это, квалифицируя имя столбца таблицы или производной таблицы запроса имени:

SELECT 
    IIf([Quantity]=20, MyTable.[Total After Discount]*0.95, ...) 
     AS [Total After Discount] 
FROM MyTable 

Это устраняет недопустимую рекурсию.


Но ваша логика действительно правильная? Не должно быть:

IIf([Quantity]>=200,[Total Before Discount]*0.875, 
    IIf([Quantity]>=100,[Total Before Discount]*0.9, 
     IIf([Quantity]>=50,[Total Before Discount]*0.925, 
      IIf([Quantity]>=20,[Total Before Discount]*0.95,[Total Before Discount])))) 

Включите логику. Вы не показываете свой аккаунт, но после скидки, поэтому вы должны отображать общее количество, а не «Не применимо».

Если вы показывали скидку, то да, надпись «Не применимо»:

IIf([Quantity]>=200,"12.5%", 
    IIf([Quantity]>=100,"10%", 
     IIf([Quantity]>=50,"7.5%", 
      IIf([Quantity]>=20,"5%","Not Applicable")))) As DiscountPercent 
+0

Ах! Хорошо, я просто использовал ваше последнее выражение, просто показывая скидку, и он работает! ОДНАКО, Как я могу размножить его? Как вы не можете многократно поле «Не применимо»? – SRATNA

+0

BTW, компания предназначена для покупки книг у издателя на дисквалифицированной ставке, поэтому у меня есть итоговая сумма после скидки. HOWEVER Меня попросили добавить скидку сверху в зависимости от размера заказа. Надеюсь, что это помогло вашему пониманию моей базы данных. – SRATNA

+0

Хорошо, я использовал вашу логику и добавил два поля, поэтому один показывал скидку, а один показывал общую сумму после всех скидок! Ты, мой друг, ЛЕГЕНДА! – SRATNA

0

Я не думаю, что вы можете смешивать номер/текстовые ответы в вычисляемого поля. Вам лучше будет использовать запрос в этом случае, а не вычисленное поле. До сих пор я избегал использования расчетных полей для их ограничений (таких как это).

+0

Привет, да, я использую запрос, однако мне нужно разработать скидки в отношении размера заказа ... например, если заказ составляет 20, тогда мне нужна скидка 5% и т. Д. ... так что лучший способ сделать это? – SRATNA

Смежные вопросы