在这个网站上有这个问题的答案提示,但我问的是一个稍微不同的问题.
Crystal Reports在哪里记录此语法不起作用?
Trim({PatientProfile.First}) + " "
+ Trim(Iif(
IsNull({PatientProfile.Middle})
, Trim({PatientProfile.Middle}) + " "
, " "
)
)
+ Trim({PatientProfile.Last})
Run Code Online (Sandbox Code Playgroud)
我知道解决方案是
If IsNull({PatientProfile.Middle}) Then
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Last})
Else
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Middle})
+ " " + Trim({PatientProfile.Last})
Run Code Online (Sandbox Code Playgroud)
但我们怎么想弄清楚我们不能使用第一个版本?
IsNull的文档说
而Iif给出了
我想如果你盯着关于"返回值类型"的那一行你可以得到它,但是......
我有一个关于使用带有是/否字段的IIF语句的问题.在我的情况下,我试图让声明做一件事,如果是/否字段=是和另一个如果是"否" 我意识到Access将Yes/No字段存储为-1,0并试图以这种方式表达语句.
我做了这个陈述:
NetDonation: IIf([PickupRequired]-1,[DonationValue]-8.75, 0, [DonationValue])
Run Code Online (Sandbox Code Playgroud)
遗憾的是,此声明不区分PickupRequired字段为"No"或"Yes",并且无论PickupRequired字段=否,它都会从所有值中减去8.75.
在我的ASP.Net Web应用程序中,我收到此错误:
从类型"DBNull"到"布尔"类型的转换无效.
从这个功能:
Namespace atc
Public Class Nil
'...
Public Shared Function Bool(ByVal Item As Object) As Boolean
Return IIf(Item IsNot Nothing AndAlso Not IsDBNull(Item), CBool(Item), False)
End Function
'...
End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我明确地检查是否Item是DBNull,如果是,那么我回来了False.
没有错误没有发生时Item是没有 DBNull的,所以我不明白为什么会这样.
一直在看很多关于使用Iif()的帖子/文章.当我尝试像C/C#/ C++等那样使用像条件运算符这样的IIf()时,所有这一切都开始了.
我试图做的完全符合以下帖子的内容:
使用VB.NET IIF我得到NullReferenceException
但是,我实现的解决方案是从以下msdn站点借来的:
http://msdn.microsoft.com/en-us/library/27ydhh0d%28v=vs.80%29.aspx
之后我才了解了vb.net中的If()方法.
所以最后我写了一个函数,它返回适当的值(使用反射)来达到目的.但是那个方法(我写的)没有抛出任何异常.事实上,我能够检查函数内部类型的可空性.
Function ReturnValue(ByVal MyType As SomeType, ByVal PropertyName as String) As Object
If MyType Is Nothing Then Return String.Empty
Dim arrPropInfo As PropertyInfo() = MyType.GetType().GetProperties()
Return arrPropInfo.Where(Function(x) x.Name = PropertyName).Item(0).GetValue(MyType, Nothing)
End Function
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一些内容写在Iif()内来抛出这样的错误? - NullReferenceException
If MyType Is Nothing Then Throw New NullReferenceException()
Run Code Online (Sandbox Code Playgroud)
或者这里有更大的工作吗?所以假设我想编写像iif这样的函数,如果参数列表中的某些内容为null,则抛出错误是上述方法的唯一方法吗?
目前我试图平均一组数字,但具有一定的条件.
是否有可能使用iif()内avg()并返回正确的结果呢?
此外,截至目前,我的计算返回一个小数返回功率(8.9267 .... E -05).
我尝试AVG通过有条件地求和然后除以条件计数来绕过函数,但它给出了相同的结果.
有人可以解释为什么返回并提供帮助吗?
目前我有:
=avg(iif((This_case) AND (That_case) AND (This_conditional)
, Fields!ResponseRate.Value
, 0))
Run Code Online (Sandbox Code Playgroud)
基本上,如果满足某些条件,我想要平均ResponseRate.
该sum功能适用于条件但平均值不适用.
我的数据集中有一列将返回几个不同的值.为了在报告中使用分组,我试图清理数据.在阅读了几篇帖子后,我发现这篇文章似乎与我的需求非常接近.
我设置了这样的表达式
=SWITCH(
Left(Fields!T6_TOW_BY.Value,3)="ACE","ACE WRECKER",
Left(Fields!T6_TOW_BY.Value,3)="CAR","CAR STORE",
Left(Fields!T6_TOW_BY.Value,7)="THE CAR","CAR STORE",
Fields!T6_TOW_BY.Value
Run Code Online (Sandbox Code Playgroud)
)
我预览时表达式不会抛出错误,但所有列都显示"错误"任何人都可以告诉我我在哪里出错吗?
谢谢
iif-function switch-statement reporting-services ssrs-2008-r2
以下作品:
If 1=1
rdoYes.checked = True
Else
rdoNo.checked = True
End If
Run Code Online (Sandbox Code Playgroud)
但是,以下不起作用:
IIF(1=1, rdoYes.checked = True, rdoNo.checked = True)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
谢谢!
In Visual Basic, there is this IIF Function, as in Crystal Report, etc ...
In C # itself, this function does not exist, but it is the same as doing something like this:
bool a = true;
string b = a ? "is_True" : "is_False";
Run Code Online (Sandbox Code Playgroud)
But for the code to be a bit easier to read I wanted to do it as a function for C #, leaving it like this:
public static T IIf<T>(bool expression, T truePart, T …Run Code Online (Sandbox Code Playgroud) iif-function ×8
vb.net ×3
asp.net ×1
asp.net-3.5 ×1
average ×1
c# ×1
function ×1
if-statement ×1
iif ×1
isnull ×1
ms-access ×1
ssrs-2008 ×1
ssrs-2008-r2 ×1