#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 цены для каждого продукта в таблице продуктов с целью:
- Если Qty_ordered из таблицы сведений о заказе превышает 10 единиц, тогда столбец цены в приведенной информации о заказе будет Prod_price2
- Если 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.