Доступ 2007: Как я могу сделать это ВЫРАЖЕНИЕ менее сложным?

Доступ говорит мне, что мое новое выражение к комплексу. Это раньше работало, когда у нас было 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)))))))))))))))))))

1
задан 01.01.2016, 16:09

3 ответа

Необходимо хранить значения, используемые в выражении в таблице. Тем путем можно сделать вычисление с соединением SQL и несколькими IIf (). И Вы избежите сложных выражений (которые почти невозможно отладить), и зависимость от VBA (который сделает Ваш запрос недоступным за пределами самого Доступа).

0
ответ дан 17.12.2019, 00:44

Где это выражение используется в форме или отчете или запросе?

Я думал бы, что лучший способ будет создавать глобальную функцию и использовать функцию.

Править: btw попробовали функцию Переключателя уже?

0
ответ дан 17.12.2019, 00:44

Вы используете СТРУЮ или Доступ? Если Вы используете Доступ, создают функцию VBA, которая использует Select Case и замените ту путаницу кода с GetServiceLevel([PriceCharged]) AS ServiceLevel. Еще лучше запишите вызванную функцию GetRevenue.

Также обновите до SQL Server.

1
ответ дан 17.12.2019, 00:44

Теги

Похожие вопросы