我在其中一个窗体上有一个组合框,它返回一个数字,我将这个数字用作查询中某个字段的条件,但是如果没有选项在组合框中已被选中我想使用的标准默认设置,但访问总是告诉我,我有无效的语法。有人能告诉我我该如何做到这一点?如何在访问查询中使用“iif”中的不等式
IIf(IsNull([Forms]![frm_a]![cmbo_b]),<2 or >3,[Forms]![frm_a]![cmbo_b])
的问题,当我在if语句中使用<2 or >3
发生。
我在其中一个窗体上有一个组合框,它返回一个数字,我将这个数字用作查询中某个字段的条件,但是如果没有选项在组合框中已被选中我想使用的标准默认设置,但访问总是告诉我,我有无效的语法。有人能告诉我我该如何做到这一点?如何在访问查询中使用“iif”中的不等式
IIf(IsNull([Forms]![frm_a]![cmbo_b]),<2 or >3,[Forms]![frm_a]![cmbo_b])
的问题,当我在if语句中使用<2 or >3
发生。
您的问题是两个部分。首先,这里是一个伪IIF语句来帮助你了解他们的工作:
IIF(IsNull(SomeFieldOrControl),ConditionIsTrueSoDoThis,ConditionIsFalseSoDoThis)
另一种方式来解释,这是与这个例子中,我们将展示一个零长度字符串,如果cmbo_b为null:
这将显示一个零长度字符串,如果cbmo_b为null:
IIF(IsNull([Forms]![frm_a]![cmbo_b]),"",[Forms]![frm_a]![cmbo_b])
我想你需要你的IsNull函数切换到NZ(零到零)功能。
对于第二部分,当涉及到评估你通常需要用括号,这样的事情围绕着它由两个部分组成的条件。我真的不认为这会工作,但它是我能想到的,如果你坚持尝试一次评估两种不同的可能性尝试的唯一的事情。如果条件评估为真,我已经设置为0。我真的不知道要显示该语句,因为你没有使用IIF函数正确地开始是真实的。
IIF(Nz([Forms]![frm_a]![cmbo_b],0)(<2 or >3),0,[Forms]![frm_a]![cmbo_b])
我在想为什么你不只是检查是否自认为条件= 3是要在周围的方式评估显然是什么。只是为了展示一下,如果条件被发现是真的,我真不知道,因为你的代码不给任何线索:
IIF(Nz([Forms]![frm_a]![cmbo_b],0)=3,0,[Forms]![frm_a]![cmbo_b])
对于最后一句话,这可能是个人喜好的问题,但我尽量远离其他形式引用控件消失,除非它周围有只是没有办法。像这样的代码往往是非常脆弱的,因为重命名窗体或控件,或者只是将窗体变成子窗体都会导致代码失败和/或错误。这并不是说它完全不正确,只是我试图坚持易于阅读和尽可能维护的代码。
我要做的往往做的是形式或子窗体创建公共职能,然后使用下面的语句调用它们:
Call Forms("frm_a").MyPublicFunctionName()
或
Call Me.Parent.MyPublicFunctionName() 'Call function on main form from subform
或
Call Me.subform1.Form.MyPublicFunctionName() 'Call function on subform
一旦再次,我认为这可能只是个人喜好的问题。像这样的公共函数很难调试,因为如果在MyPublicFunctionName内发生任何错误,您的代码将停止在上面的行,并且您将不知道哪一行实际上导致了问题。
你引用的默认标准是什么? – 2012-04-16 09:15:13