Показать полную графическую версию : [решено] IIF в Access. Не выполняется условие.
NecroTYN
08-01-2012, 18:31
Работа с Б/Д происходит через программу (http://simple-soft.ru/ProductsCount.htm) использующую язык Transact-SQL
Здравствуйте господа форумчане !!!
Очень нужна ваша помощь
есть следующая Б/Д (Это только малая ее часть)
Нужно чтобы запрос qdfServices выполнялся следующим образом:
Если [ServicesType] = 'Монтаж' то [Price] = [OrderAmountCalc] / 100 *[Pct]
Если [ServicesType] = 'Доставка' то [Pct] = Null а поле [Price] заполнять с клавиатуры
Если [ServicesType] = 'Подъем на этаж' то [Price] = [FloorCalc] - 1 *50 + 150
Составили вот такую формулу, Access пишет что не проходит
IIf([ServicesType]="Монтаж";[Price]=[OrderAmountCalc]/100*[Pct];IIf([ServicesType]="Доставка";[Pct]="" And [price]="";IIf([ServicesType]="'Подъем на этаж";[Price]=[FloorCalc]-1*50+150)))
Delirium
09-01-2012, 15:57
IIf([ServicesType]="'Подъем на этаж";[Price]=[FloorCalc]-1*50+150) »
А где условие, если ServiceType не равно "подъем на этаж" ?
NecroTYN
09-01-2012, 20:20
IIf([ServicesType]="'Подъем на этаж";[Price]=[FloorCalc]-1*50+150) »
А где условие, если ServiceType не равно "подъем на этаж" ?
я не знаю, не разбираюсь...
Delirium
10-01-2012, 06:22
попробуй так
IIf([ServicesType]="Монтаж"; [Price]=[OrderAmountCalc]/100*[Pct];IIf([ServicesType]="Доставка"; [Pct]="" And [price]="";IIf([ServicesType]="'Подъем на этаж"; [Price]=[FloorCalc]-1*50+150; [Price]="") ) )
NecroTYN
11-01-2012, 18:48
IIf([ServicesType]="Монтаж"; [Price]=[OrderAmountCalc]/100*[Pct];IIf([ServicesType]="Доставка"; [Pct]="" And [price]="";IIf([ServicesType]="'Подъем на этаж"; [Price]=[FloorCalc]-1*50+150; [Price]="") ) ) »
не сработало
NecroTYN
15-01-2012, 08:57
отредактировли составленное ранее выражение
IIf([ServicesType]="Подъем на этаж",([FloorCalc]-1) * 50 + 150,IIf([ServicesType]="Монтаж",[OrderAmountCalc] / 100 * Val(IIf(pct Is Null,1,pct))))
т.е. я попросту вырезал часть кода:
iif([ServicesType]="Доставка", [Введите значение поля Price])
но в таком случае при значении "Доставка" в [ServicesType], поле [Price] когда в него вводишь значение остается всегда пустым...
что делать ???
NecroTYN
15-01-2012, 10:07
Наверное сразу стоит сказать что работа с Б/Д происходит через программу (http://simple-soft.ru/ProductsCount.htm) использующей язык Transact-SQL
Delirium
16-01-2012, 01:06
NecroTYN, открою тебе секрет - неважно, какая используется программа, Transact-SQL все равно используется при составлении запросов в SQL.
В твоем же случае это не T-SQL запрос, а обыкновенное условие в ACCESS.
Данную формулу куда подставляешь, в форму или в запрос Access? Может быть, стоит поискать другой способ проверки введенных данных?
NecroTYN
16-01-2012, 12:16
Данную формулу куда подставляешь, в форму или в запрос Access? Может быть, стоит поискать другой способ проверки введенных данных? »
Вставляю в запрос - Поле [Price] строка "Поле"
Transact-SQL все равно используется при составлении запросов в SQL.
SELECT tblServices.ID, tblServices.QuantityServices, tblServices.AmountServices, tblServices.Pct, tblServices.OrderID, tblOrdersProducts.Amount AS OrderAmountCalc, tblSales.Floor AS FloorCalc, tblServices.ServicesType, IIf(ServicesType="Подъем на этаж",(FloorCalc-1) * 50 + 150,IIf(ServicesType="Монтаж",OrderAmountCalc / 100 * Val(IIf(pct Is Null,1,pct)))) AS PriceServices FROM (tblServices LEFT JOIN tblOrdersProducts ON tblServices.OrderID = tblOrdersProducts.OrderID) LEFT JOIN tblSales ON tblServices.OrderID = tblSales.OrderID
Может быть, стоит поискать другой способ проверки введенных данных? »
SWITCH или CASE ???
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.