立即IF,它不会短路,返回两个值之一,具体取决于在SQL Server 2012,Visual Basic及其变体中布尔表达式的计算结果为true还是false。
我正在构建一个添加/编辑用户表单,当访问页面时,有一个 if 语句检测我们是否正在编辑当前用户或通过 url id 添加新用户 我正在构建一个添加/编辑用户表单,当访问页面时,有一个 if 语句检测我们是否正在编辑当前用户或通过 url id 添加新用户 <cfif isDefined('URL.id')> <cfquery name="getSquadMember" datasource="#application.datasource#"> SELECT * from squad WHERE id=#URL.id# </cfquery> <cfset #name#=#getSquadMember.athlete_name# /> <cfelse> <cfset SESSION.squad = structNew()> <cfparam name="SESSION.squad.name" default=""> </cfif> 这很好,但问题在于评估会话或值是否存在,我收到错误 <cfinput class="text" name="name" type="text" id="name" value ="#IIf(IsDefined('name'), DE('#name#'), DE("#SESSION.squad.name#"))#" required="yes" /> 元素 team.name 在会话中未定义。为什么在满足第一个条件时评估会话是否存在? 谢谢, R. 首先 - 如果您可以避免使用 iif(),那么就这样做。它造成的头痛比它所解决的要多得多...... 但是,请注意 ColdFusion 文档中有关 iif() 的以下内容: 如果变量未定义,ColdFusion 在处理该函数时会抛出错误。下面的例子说明了这个问题: #IIf(IsDefined("Form.Deliver"), DE(Form.Deliver), DE("no"))# This returns "Error resolving parameter FORM.DELIVER". 为了避免此问题,请在代码中使用 DE 和 Evaluate 函数,如下所示: #IIf(IsDefined("Form.Deliver"), Evaluate(DE("Form.Deliver")), DE("no"))# This returns "no"; ColdFusion does not throw an error. 或者,如果您使用的是 CF9(支持三元运算符): <cfinput class="text" name="name" type="text" id="name" value ="#IsDefined('name') ? name : SESSION.squad.name#" required="yes" /> 为什么同一个项目需要两个不同的变量名称,是否有原因? 你可以这样做吗: <cfif isDefined('URL.id')> <cfquery name="getSquadMember" datasource="#application.datasource#"> SELECT * from squad WHERE id=<cfqueryparam value="#URL.id#" cfsqltype="CF_SQL_INTEGER" /> </cfquery> <cfset name= getSquadMember.athlete_name /> <cfelse> <cfset squad = structNew()> <cfset name = "" /> </cfif> <input type="text" name="name" id="name=" value="#name#" /> 这将反过来消除对 iff 语句的需要 HTH J 几个问题: 1) <cfquery name="getSquadMember" datasource="#application.datasource#"> SELECT * from squad WHERE id=#URL.id# </cfquery> 您在这里请求 SQL 注入。使用cfqueryparam 2) <cfset #name#=#getSquadMember.athlete_name# /> 这是你的第二篇文章,我注意到#的奇怪用法 应该像 Jason 写的那样: <cfset name = getSquadMember.athlete_name /> 3)至于你的问题: <cfinput class="text" name="name" type="text" id="name" value="#IIf(IsDefined('name'), DE('#name#'), DE("#SESSION.squad.name#"))#" required="yes" /> 这种方式不太可读。 首先为该值设置一些变量。 第二件事 - 你不需要像这样将变量放入 DE 中,这样就可以了: DE(name) 当您使用 cfinput 时,整个事情可能需要正确。还有另一个问题 - 你真的不需要在那里使用 cfinput 。普通的 HTML 输入就可以了,并为您节省一些 CF 解析。 您看到的问题是 IIF() 必须评估语句的所有部分。 您不能真正使用它来检查变量是否已定义,因为它总是尝试评估正确和错误响应的内容。 只要在使用 IIF() 时牢记这一点,使用它就没有问题。 只要保持简单,当变量可能不存在时不要尝试使用它。 我本想指出您的代码的其他问题,但其他答案已经很好地涵盖了这些问题。
我无法弄清楚我指定的错误是什么,STUDENT.CURRENT_CURS_ID 列中的空值不会被 iif 或 nvl2 处理,并且一般来说,这个具有空值的学生不包括在内...
我正在开发一个 Excel 项目,该项目涉及将大量 Excel 4.0 宏表函数转换为 VBA。这些函数广泛使用工作表 IF(condition,ifTrue,ifFalse) 很有趣...
我正在开发一个 Excel 项目,该项目涉及将大量 Excel 4.0 宏表函数转换为 VBA。这些函数广泛使用工作表 IF(condition,ifTrue,ifFalse) 很有趣...
我的 SQL 查询未按预期执行并返回不完整的结果。在下面的查询中,如果 t2 中没有匹配的 id,则有效的 t1 行不会包含在查询结果中。 塞尔...
使用 IIF / CurrentMember 条件计算的聚合成员
这里是 MDX 新手。 我正在尝试定义和聚合包含 IIF 条件的自定义度量。 假设对于这个数据模型: 类别 姓名 物品种类 价格 CATA 项目1 普通的 4.0 CATA 我...
IIF Microsoft Access 语句错误帮助 - 一个查询中存在多个 IIF 语句
希望有人能帮助我。 我正在尝试运行此查询,但出现以下错误。我需要根据不同表中的不同字段构建逻辑,然后将该数据写入到 ta 中的新字段...
尝试插入值时,Access VBA SQL 语句收到语法错误
我正在使用 Access VBA 根据表单中的信息将值插入到表中。 SQL 语句抛出语法错误,但是,如果我将 SQL 拉入查询生成器,它将运行,所以我...
我在 SQLite 中有一个非常典型的任务。 如果 X 返回 Y,否则返回 Z。 为此,我使用了 CASE 语句 “当 X 结束时 Y ELSE Z 结束”。 然而,我在
我使用Visual studio 2017。我的表达如下; =Microsoft.VisualBasic.Strings.Trim(Fields!QUESTION.Value) & “ 平均的:” & ROUND(AVG(字段!Multiple_Choice_Value...
如何进行这样的查询? 选择 人员 ID, 姓名, ( DECLARE @p INT=(SELECT (Not1 + Not2 + Not3)/3 FROM Tablo_Not WHERE NotId=PersonId); 声明@s INT; 如果@p>84 设置...
Microsoft Access 表达式生成器中 IIF 内的表达式
我想在特定字段中的值大于零时执行计算。具体来说,如果字段 1 中的值 > 0,我想计算字段 2 和 3 中的百分比总计。(否...
计算字段未正确显示在折线图中,但在 Tablix 报告中正确显示。计算的字段格式因描述符而异。可以是百分比 1 位小数,2
我定义了一个计算字段,我需要根据格式描述在折线图上显示不同的小数位。它工作正常,除非数字没有任何...
我想在scala中实现嵌套的IIF。我有 IIF 说。IIF(cond, IIF(cond, y,n), value) IIF最多可以嵌套4-5层. 如何在scala中实现这个功能。
我如何使用iif()运算符正确实现条件debounceTime()运算符?
我有一个BehaviourSubject,可以通过Service的构造函数中的getSaveBehaviorSubject()进行订阅。此behaviourSubject可以从其他组件/服务接收多种类型的数据...
我正在尝试修改一些参数,并将其附加到一部分网址以使其成为合格的网址。我在字典中使用了这些参数,然后使用IIf函数对其进行了简化。脚本...
采购价格差异(在我的特定情况下(截图)),报告显示的是装运(步骤1),然后显示发票(步骤2)。我想将所有这些信息都放在一行中。当...