Оператор If в запросах доступа при выборе 2 цен из 1 товара на основе заказанного количества

#ms-access

#ms-access

Вопрос:

Итак, допустим, у меня есть 3 таблицы. Первая таблица — это таблица продуктов, в которой она состоит из

Prod_code, Prod_name, Prod_qty, Prod_Price1, Prod_Price2.

Вторая таблица — это таблица заказов, в которой она состоит из

Order_ID, Order_Date, Total_price.

И последняя таблица — это таблица сведений о заказе, которая состоит из

Order_Detail_ID, Order_ID (внешний ключ из таблицы заказов), Prod_code (внешний ключ из таблицы продуктов), Qty_Ordered и Price

Если вы видите, у меня есть 2 цены для каждого продукта в таблице продуктов с целью:

  1. Если Qty_ordered из таблицы сведений о заказе превышает 10 единиц, тогда столбец цены в приведенной информации о заказе будет Prod_price2
  2. Если Qty_ordered из таблицы сведений о заказе равно или меньше 10 единиц, тогда столбец цены в приведенной информации о заказе будет Prod_price1

Как я могу сделать так, чтобы при создании формы сведений о заказе она могла автоматически выдавать мне цену продукта на основе введенного мной Qty_ordered? Я полагаю, что для этого могут потребоваться некоторые операторы if в запросе, но я новичок в Ms Access, и мне нужна ваша помощь, ребята. Большое спасибо

Комментарии:

1. Total_Price должна рассчитываться из OrderDetails, а не сохраняться в Orders.

Ответ №1:

В запросе, который объединяет заказы и продукты в OrderDetails, вычислите поле с:
IIf(Qty_Ordered <= 10, Prod_Price1, Prod_Price2)

Если вам нужно отобразить это в форме ввода данных, привязанной к OrderDetails, создайте выпадающее меню, в котором перечислены продукты и указаны обе цены в виде столбцов (при желании их можно скрыть). Выражение в текстовом поле может ссылаться на столбцы выпадающего списка по их индексу. Итак, если Price1 находится в третьем столбце, его индекс равен 2.
=IIf(Qty_Ordered <= 10, Me.cbxProduct.Column(2), Me.cbxProduct.Column(3))

Для сохранения этого вычисленного результата потребуется код (макрос или VBA) в каком-либо событии, возможно, form BeforeUpdate .
Me!Price = Me.tbxPrice

Комментарии:

1. Большое вам спасибо, дорогой сэр! Я немедленно попробую это сделать!

2. В запросе должен ли я записать расчет в поле Цена таблицы сведений о заказе?

3. Используйте подход запроса с вычисляемым полем только в том случае, если вы не сохраняете результат в таблицу. И нет, расчет не может быть выполнен в поле OrderDetails Price.