coldfusion中的条件查询

时间:2014-12-08 19:42:08

标签: coldfusion coldfusion-10

我需要在表格的最后一栏中为我的表格中的项目提供一些状态。 首先,我去查询一个表格,看看我是否对该项目有确认。

<cfquery name="focnotice" datasource="******" result="FocResult">
    SELECT ecspc  
    FROM   tbl_CNR_H 
    WHERE  icsc = '#myarray[i].ICSC#' 
    AND    asr_no = '#myarray[i].ASR#'
</cfquery>

ECSPC是我的表中的一个字段,因此逻辑是查看是否有记录。如果是,请查看ECSPC值是否为“”之外的其他值。如果是,请查询另一个表以查看该ECSPC是否有匹配的记录。

<cfset ISUPStatus = "#focnotice.ecspc#">
<cfif ISUPStatus NEQ "">
    <cfquery name="isupStatus" datasource="******" result="ISUPResult">
        select * 
        from   tbl_ISUP 
        where  dpc = '#ISUPStatus#'
    </cfquery>

    <cfset isupcount = #ISUPResult.RecordCount#>
    <cfif #isupcount# GT 0>
        <cfset ISUPorder = "Yes">
    <cfelse>
        <cfset ISUPorder = "No">
    </cfif>

<cfelse>
    <cfset ISUPorder = "No">
</cfif>

我的调试中出现以下错误

  

无法将复杂对象类型转换为简单值。

     

表达式已请求变量或中间表达式   结果作为一个简单的价值。但是,结果无法转换为   简单的价值。简单的值是字符串,数字,布尔值和   日期/时间值。查询,数组和COM对象是其示例   复杂的价值观导致错误的最可能原因是您尝试过   使用复杂的值作为一个简单的值。例如,您尝试使用   cfif标记中的查询变量。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您将无效参数传递给查询&#34; myarray [i] .ICSC&#34;,&#39; #myarray [i] .ASR#&#39;。您需要指定要使用的数组索引。

<cfquery name="focnotice" datasource="*******" result="FocResult">
 Select ecspc
 From tbl_CNR_H
 Where icsc = <cfqueryparam cfsqltype="cf_sql_varchar" value="#myarray[1].ICSC#">
        AND
      asr_no = <cfqueryparam cfsqltype="cf_sql_varchar" value="#myarray[1].ASR#"> 
</cfquery>

答案 1 :(得分:0)

我认为导致问题的错误在于:

<cfset isupcount = #ISUPResult.RecordCount#>

快速查看代码,请尝试使用:

<cfset isUpCount = isUpStatus.recordCount>

但另外请查看上面的评论,特别是加入。