2014-12-08 2 views
0

Мне нужно предоставить некоторый статус для элементов в моей таблице, которые я делаю в последнем столбце моей таблицы. Сначала я иду и запрашиваю одну таблицу, чтобы узнать, есть ли у меня подтверждение для элемента.условный запрос в coldfusion

<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.

Что мне здесь не хватает?

+4

Именно эта линия вызывает ошибку? Почему бы просто не использовать sql JOIN вместо всей логики if/else? – Leigh

+1

Я смотрю на ваш вопрос, но некоторые вопиющие проблемы с кодированием заставляют меня прокомментировать их: 1. (кавычки и хэш) 5. используйте , не используйте «*» - вместо этого используйте имена столбцов 9. (хэш уведомлений) 10. (сокращенное обозначение и хэш) –

+2

Хорошо, я нашел проблему, которая была вызвана на моей стороне дерьмовая трещина. Я использовал , а также дал новый запрос имя cfquery name = "isupStatus", которое было проблемой. Первоначально он был либо «", либо имел значение, но как только я использовал одно и то же имя для имени запроса, он стал сложным, и я больше не мог его отображать. Таким образом, я меняю имя запроса и выполняю работу и работаю так, как ожидалось. – NoSoup4you

ответ

0

Я считаю, что ошибка, приводящая к вам вопрос заключается в:

<cfset isupcount = #ISUPResult.RecordCount#> 

Из беглого взгляда вашего кода, попробуйте использовать вместо:

<cfset isUpCount = isUpStatus.recordCount> 

Но в дополнение пожалуйста, посмотрите на приведенные выше замечания , особенно присоединяется.

+0

ОК, точно так же, как fyi, это не проблема, протестировали ее и остались такими же ... – NoSoup4you

+0

Я предлагаю вам сбросить ваши вары и определить, какой var вы ссылаетесь как простой объект и действительно сложный объект –

1

Вы передаете недопустимый параметр в запрос «myarray [i] .ICSC», '# myarray [i] .ASR #'. Вам нужно указать, какой индекс массива вы используете.

<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> 
+0

мой запрос работает просто отлично, так что это тоже не проблема. – NoSoup4you

+0

вы выполняете запрос внутри цикла? Я имею в виду, как вы получаете значение индекса «i»? –

+0

да его внутри цикла, у меня есть таблица в массиве и петля через него, поэтому я для строки в массиве – NoSoup4you