Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询循环内的coldfusion查询函数调用问题_Coldfusion - Fatal编程技术网

查询循环内的coldfusion查询函数调用问题

查询循环内的coldfusion查询函数调用问题,coldfusion,Coldfusion,我有一个查询循环,在该循环中,我进行一个cfc函数调用以返回第二个查询。它在显示屏上做着奇怪的事情: 在下面的示例中,我创建了一个简单的循环,而不是通过调用函数来获取第二个查询。这显示很好 但是,只要我调用一个函数来获得一个二次查询,显示屏上就会出现令人费解的事情。它呈现半熟的html代码 <cfoutput> <cfif qCal.recordcount> <a class="control" onClick="return hs.getE

我有一个查询循环,在该循环中,我进行一个cfc函数调用以返回第二个查询。它在显示屏上做着奇怪的事情:

在下面的示例中,我创建了一个简单的循环,而不是通过调用函数来获取第二个查询。这显示很好

但是,只要我调用一个函数来获得一个二次查询,显示屏上就会出现令人费解的事情。它呈现半熟的html代码

<cfoutput>
    <cfif qCal.recordcount>
        <a class="control" onClick="return hs.getExpander(this).printHtml()" href="##">Print</a>
    </cfif>
    <table width="100%" cellspacing="0" cellpadding="4">
        <cfloop query="qCal">
            <cfsilent>
                <cfset qCalItems = o_system.getCalendarItems(
                      start=dateformat(vStartDate,"yyyy-mm-yy"),
                      end=dateformat(vEndDate,"yyyy-mm-yy"),
                      classID=qCal.classID,
                      forQuarterlyCalendar=true,
                      order_by="i.startDate")>
            </cfsilent>
            <tr>
                <td align="middle" valign="top" style="width:150px;">
                    <a title="View full-sized image" onclick="return hs.expand(this)" href="/images/classes/#qCal.image#" class="highslide"><img src="/images/classes/#qCal.thumb#" class="resize2"></a></td>
                <td>
                    <table cellspacing="0" cellpadding="3">
                        <tr>
                            <td colspan="2" class="textNormal"><h2>#qCal.title#</h2></td>
                        </tr>
                        <tr>
                            <td class="textNormal"><strong>Date:</strong></td>
                            <td class="textNormal"><strong>Time:</strong></td>
                        </tr>
                        <cfloop query="qCalItems">
                            <tr bgcolor="#iif(qCalItems.CurrentRow MOD(2) eq 1,de('ffffff'),de('EFEFEF'))#">
                                <td>#DayOfWeekAsString(dayofweek(qCalItems.startDate))# #dateformat(qCalItems.startDate,"dd mmm yyyy")#</td>
                                <td>#qCalItems.startTime#-#qCalItems.endTime#</td>
                            </tr>
                        </cfloop>
                    </table>
                </td>
            </tr>
        </cfloop>
   </table> 
</cfoutput>
更新-添加CFC代码 注意:函数根据QuarterlyCalendar的参数返回结构或查询。在这种情况下,它肯定会返回一个查询对象。我已转储查询并确认它是有效的查询对象

<cffunction name="getCalendarItems" access="remote" returntype="any" output="false" returnformat="json">
        <cfargument name="classID" type="any" required="false" default="">
        <cfargument name="forSelect" type="boolean" required="false" default="false">
        <cfargument name="forQuarterlyCalendar" type="boolean" required="false" default="false">
        <cfargument name="start" type="any" required="false" default="">
        <cfargument name="end" type="any" required="false" default="">
        <cfargument name="order_by" type="any" required="false" default="c.title">
        <cfargument name="sort_direction" type="any" required="false" default="asc">
        <cfargument name="json" type="boolean" required="false" default="true">
        <cfargument name="must_have_store_item" type="boolean" required="false" default="true">
        <cfset var qClass = 0>
        <cfset var realStart = "">
        <cfset var realEnd = "">
        <cfset var results = []>
        <cfset var vUrl = "">
        <cfset var vId = "">
        <cfset var vTitle = "">
        <cfset var vStart = "">
        <cfif len(trim(arguments.start))>
            <cfset realStart = EpochTimeToLocalDate(arguments.start)>
        </cfif>
        <cfif len(trim(arguments.end))> 
            <cfset realEnd = EpochTimeToLocalDate(arguments.end)>
        </cfif>

        <cfquery name="qClass" datasource="#application.datasource#">
            select  <cfif arguments.forSelect>
                        c.title, i.calendarItemID as id, convert(varchar, i.startDate, 103)+' '+i.startTime+'-'+i.endTime as text 
                    <cfelseif arguments.forQuarterlyCalendar>
                        c.description, i.calendarItemID as id, i.startDate, i.startTime, i.endTime 
                    <cfelse>
                        i.calendarItemID, i.startDate, i.startTime, i.endTime
                        ,c.classID, c.title, c.description, c.price, c.places, c.exclusive, c.discounted, c.url
                        ,s.storeItemID 
                    </cfif>
            from calendarItem i
            <cfif arguments.must_have_store_item>
                join storeItem s on s.entityID = i.calendarItemID and s.storeItemTypeID = 3 
            </cfif>
            join class c on c.classID = i.classID and c.active=1
            where i.active=1
            <cfif isnumeric(arguments.classID)>
                and i.classID = <cfqueryparam value="#arguments.classID#" cfsqltype="cf_sql_integer">
            </cfif>
            <cfif len(trim(arguments.start))>
                <cfif arguments.forQuarterlyCalendar>
                    and i.startDate >= <cfqueryparam value="#arguments.start#" cfsqltype="cf_sql_date">
                <cfelse>
                    and i.startDate >= <cfqueryparam value="#dateformat(realStart,'yyyy-mm-dd')#" cfsqltype="cf_sql_date">
                </cfif>
            </cfif>
            order by #arguments.order_by# #arguments.sort_direction#
        </cfquery>
        <cfif qClass.recordcount>
            <cfif not arguments.forSelect and not arguments.forQuarterlyCalendar>
                <cfloop query="qClass">
                    <cfset vUrl = qClass["url"]>
                    <cfset vId = qClass["storeItemID"]> 
                    <cfset vTitle = qClass["title"]>
                    <cfset vStart = GetEpochTimeFromLocal(qClass.startDate)>
                    <cfif not len(trim(url)) or len(trim(url)) is 0>
                        <cfset vUrl = "#application.webroot#/class_detail.cfm?id=#vId#">
                    </cfif>
                    <cfset s = structnew()>
                    <cfset s["id"] = vId>
                    <cfset s["url"] = vUrl>
                    <cfset s["title"] = vTitle>
                    <cfset s["start"] = vStart>
                    <cfset arrayappend(results, s)> 
                </cfloop>
            <cfelse>
                <cfset results = qClass>
            </cfif>
        </cfif>
        <cfif arguments.json>
            <cfcontent type="application/json">
        </cfif>
        <cfreturn results>
    </cffunction>

您需要为作用域“s”设置变量:

<cfset s = structnew()>

请在o_系统CFC中发布getCalendarItems函数的源代码。可能有必要发布整个CFC,包括它可能扩展的任何基本CFC,但请从该功能开始。感谢您让我添加代码。在这个过程中,我发现函数返回的是JSON格式的内容。将false传递给json参数可以使其正常工作。我不太清楚为什么您被否决,但同样,您没有说明您的问题到底是什么。你给了我们两个URL,它们显示了一些标记,但你没有说这样的话[然后你确定]:这是错误的。我只看到两个网页,其中一个你说的是错误的,看起来比控件好多了。实际的问题是什么?如我所料陈述[x],但我得到[y]。没有意识到这个论坛上有这么多宝贵的人。很乐意提供任何缺失的信息。当你很好地格式化代码并给出示例页面时,很容易漏掉一些东西。实际上,我不明白你的问题是什么
<cfset s = structnew()>