Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] IIF в Access. Не выполняется условие. (http://forum.oszone.net/showthread.php?t=224730)

NecroTYN 08-01-2012 18:31 1831071

IIF в Access. Не выполняется условие.
 
Работа с Б/Д происходит через программу использующую язык 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 1831726

Цитата:

Цитата NecroTYN
IIf([ServicesType]="'Подъем на этаж";[Price]=[FloorCalc]-1*50+150) »

А где условие, если ServiceType не равно "подъем на этаж" ?

NecroTYN 09-01-2012 20:20 1831965

Цитата:

Цитата Delirium
IIf([ServicesType]="'Подъем на этаж";[Price]=[FloorCalc]-1*50+150) »
А где условие, если ServiceType не равно "подъем на этаж" ?

я не знаю, не разбираюсь...

Delirium 10-01-2012 06:22 1832237

попробуй так

Код:

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 1833303

Цитата:

Цитата Delirium
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 1836136

отредактировли составленное ранее выражение

Код:

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 1836151

Наверное сразу стоит сказать что работа с Б/Д происходит через программу использующей язык Transact-SQL

Delirium 16-01-2012 01:06 1836802

NecroTYN, открою тебе секрет - неважно, какая используется программа, Transact-SQL все равно используется при составлении запросов в SQL.
В твоем же случае это не T-SQL запрос, а обыкновенное условие в ACCESS.
Данную формулу куда подставляешь, в форму или в запрос Access? Может быть, стоит поискать другой способ проверки введенных данных?

NecroTYN 16-01-2012 12:16 1836988

Цитата:

Цитата Delirium
Данную формулу куда подставляешь, в форму или в запрос 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
Цитата:

Цитата Delirium
Может быть, стоит поискать другой способ проверки введенных данных? »

SWITCH или CASE ???


Время: 01:24.

Время: 01:24.
© OSzone.net 2001-