Я работаю с CRM онлайн. Вот почему я использую fetchXML. Это моя выборка:Правильное выражение с IIF не работает
`<fetch aggregate="true" distinct="false" no-lock="false" mapping="logical">
<entity name="lead" >
<attribute name="fullname" alias="lead_name" groupby="true" />
<attribute name="new_bpf_stage" alias="lead_stage" groupby="true" />
<attribute name="new_substep" alias="lead_substep" groupby="true" />
<attribute name="leadid" alias="lead_id" groupby="true" />
<filter type="and" >
<condition attribute="createdon" operator="ge" value="@PeriodBeginning" />
<condition attribute="createdon" operator="le" value="@PeriodEnding" />
</filter>
<link-entity name="new_duration_life_cycle" from="new_lead_duration_life_cycleid" to="leadid" link-type="outer" >
<attribute name="new_duration" alias="current_duration" groupby="true" />
<attribute name="new_active" alias="current_is_active" groupby="true" />
<attribute name="new_transition_date" alias="current_transition_date" aggregate="max" />
<filter type="and" >
<condition attribute="new_active" operator="eq" value="1" />
</filter>
</link-entity>
<link-entity name="new_duration_life_cycle" from="new_lead_duration_life_cycleid" to="leadid" link-type="outer">
<attribute name="new_duration" alias="duration_sum" aggregate="sum" />
</link-entity>
</entity>
` Это код выражение:
=IIF(Fields!current_is_activeValue.Value = "True",
DATEDIFF ("d", CDate(Format(Fields!current_transition_dateValue.Value, "MM.dd.yyyy hh:mm:ss")), Now()) +
IIF(DATEDIFF ("h", CDate(Format(Fields!current_transition_dateValue.Value, "MM.dd.yyyy hh:mm:ss")), Now()) Mod 24 > 8,
8,
(DATEDIFF ("h", CDate(Format(Fields!current_transition_dateValue.Value, "MM.dd.yyyy hh:mm:ss")), Now())) Mod 24)/8 +
IIF(Fields!current_duration.Value = "",
0,
CDbl(Replace(Fields!current_duration.Value,",",".")))
,
Fields!current_duration.Value)
В этом коде я проверить некоторые атрибуты, и если его значение верно рассчитать значение поля. Но если некоторые значения не существуют (это в случае current_is_activeValue.Value = ""), в соответствующей ячейке будет отображаться ошибка. Но ошибки не должно быть: должно отображать поля: current_duration.Value, которое должно быть «". Похоже, что выражение все равно вычисляет случаи IIF. Неужели кто-нибудь беспокоится?
' "г" и' "ч" 'не действительны' интервалы DATEDIFF' в SSRS вы можете использовать '' DAY' и HOUR' или 'DateInterval.Day' и 'DateInterval.Hour'. См. Документацию [здесь] (https://technet.microsoft.com/en-us/library/aa337092 (v = sql.100) .aspx). Кроме того, я не уверен, что периоды в строке формата разрешены. Возможно, вам придется изменить «MM.dd.yyyy hh: mm: ss» 'to' 'MM/dd/yyyy hh: mm: ss" или '" MM-dd-yyyy hh: mm: ss "'. – Kidiskidvogingogin