Доступ говорит мне, что мое новое выражение к комплексу. Это раньше работало, когда у нас было 10 уровней обслуживания, но теперь мы имеем 19!Отлично!
Мое выражение проверяет СТОИМОСТЬ наших сервисов в поле [PriceCharged] и затем присваивает соответствующие ЧАСЫ [Уровень обслуживания], когда я выполняю вычисление для разработки, сколько ДОХОДА каждый коллега сделал при работе на клиент. Поле [EstimatedTime] хранит фактические часы, каждый коллега работал.
[EstimatedTime]/[ServiceLevel]*[PriceCharged]
Отлично. Ниже разбивка моей СТОИМОСТИ для выражения ЧАСОВ. Я поместил их на различные строки, чтобы помочь читать - не пугайтесь длины этого сообщения, это все одинаково информация в конце.
Большое спасибо, Mike
ServiceLevel: IIf ([pricecharged] =100 (СТОИМОСТЬ), 6 (ЧАСЫ),
IIf ([pricecharged] =200 или [pricecharged] =210,12.5,
IIf ([pricecharged] =300,19,
IIf ([pricecharged] =400 или [pricecharged] =410,25,
IIf ([pricecharged] =500,31,
IIf ([pricecharged] =600,37.5,
IIf ([pricecharged] =700,43,
IIf ([pricecharged] =800 или [pricecharged] =810,50,
IIf ([pricecharged] =900,56,
IIf ([pricecharged] =1000,62.5,
IIf ([pricecharged] =1100,69,
IIf ([pricecharged] =1200 или [pricecharged] =1210,75,
IIf ([pricecharged] =1300 или [pricecharged] =1310 100,
IIf ([pricecharged] =1400 125,
IIf ([pricecharged] =1500 150,
IIf ([pricecharged] =1600 175,
IIf ([pricecharged] =1700 200,
IIf ([pricecharged] =1800 225,
IIf ([pricecharged] =1900,250,0)))))))))))))))))))
Необходимо хранить значения, используемые в выражении в таблице. Тем путем можно сделать вычисление с соединением SQL и несколькими IIf (). И Вы избежите сложных выражений (которые почти невозможно отладить), и зависимость от VBA (который сделает Ваш запрос недоступным за пределами самого Доступа).
Вы используете СТРУЮ или Доступ? Если Вы используете Доступ, создают функцию VBA, которая использует Select Case
и замените ту путаницу кода с GetServiceLevel([PriceCharged]) AS ServiceLevel
. Еще лучше запишите вызванную функцию GetRevenue
.
Также обновите до SQL Server.