2011-10-18 4 views
8

나는 질의 결과를 반복하고 있으며, 나는 표시된 행의 수를 제한해야한다. group 특성을 사용 중이기 때문에 cfoutput을 사용해야하며 모든 행이 표시되지 않기 때문에 maxrows을 사용할 수 없습니다.Cfoutput에서 탈옥하는 방법

<cfoutput> 안에 <cfbreak>을 사용하려고 시도했지만 오류가 발생합니다.

<cfoutput> 루프에서 어떻게 벗어날 수 있습니까?

+2

http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=72819 – Henry

+4

는'cfoutput' 호텔 더불어 Calfornia 같은 비트입니다. AFAIK, 일찍부터 탈옥하는 우아한 방법이 없습니다. MS SQL 2005와 같은 데이터베이스를 사용하는 경우 cfoutput이 아닌 SQL의 행을 제한하는 것이 좋습니다. – Leigh

+0

당신은 쿼리에서 "그룹화"하여 속임수를 제거하지 않고 cfbreak를 사용할 수 있습니까? –

답변

8

귀하의 그룹이 결과에서 중복을 제거하기위한 목적으로 만 존재할 경우 귀하의 쿼리를 사용하여 잘라내어 cflinop (고유 선택 및 반환 된 열 목록 축소)을 제안 할 수 있습니다.

결과를 "그룹화"하기 위해 그룹을 사용하는 경우 루프 내에서 카운터를 실행하고 첫 번째 루프에서 cfif 문을 실행하여 이후 결과를 생략 할 수 있습니다.

당신 수 가짜 당신이 CFBREAK해야 할 경우 이전 행에서 값과 일치하여 CFLOOP에서 옵션으로 그룹

<cfloop query="queryname"> 
    <cfif queryname.column[currentrow-1] neq queryname.column[currentrow]> 
    #queryname.column# 
    </cfif> 
</cfloop> 

랜덤 참고 : 어떤에서 MAXROWS 수 있습니다/당신의 그룹화 cfoutput과 모든 수준의

<cfset tmp = querynew('id,dd')> 
<cfloop from="1" to="20" index="i"> 
    <cfset queryaddrow(tmp,1)> 
    <cfset querysetcell(tmp,'id',rand(),i)> 
    <cfset querysetcell(tmp,'dd',(i mod 4),i)> 
</cfloop> 
<cfquery dbtype="query" name="tmp">select * from tmp order by dd</cfquery> 

<cfoutput query="tmp" group="dd" maxrows="2">#dd#<br 
    <ul> 
    <cfoutput maxrows="2" group="id"><li>#id#</li></cfoutput> 
    </ul> 
</cfoutput> 
+0

아! 맥스 로우! 나는 그것이 거기에 있다는 것을 알았지 만,이 사용에 대해 생각하지 않았다. 완전한! – Barry

+0

cfoutput의 모든 레벨에서 maxrows에 대해 더하기 하나! 그것은 가지고 있어야 할 중요한 지식입니다. – tobylaroni

4

cfthrow 태그를 사용하여 cfcatch를 사용하여 루프를 벗어날 수있는 예외를 트리거하면 예외를 무시하고 처리를 계속할 수 있습니다. 그것은 당신이 원하는 것을 줄 것입니다.

<cftry> 
    <cfset i = 0> 
    <cfoutput query="qMyQuery" group="someGroup"> 
      <cfset i = i + 1> 
      Parent 
        <cfoutput> 
          Child 
        </cfoutput> 

        <cfif i GTE 10> 
          <cfthrow type="break"> 
        </cfif> 
    </cfoutput> 

    <cfcatch type="break"> 
      <!--- DO NOTHING - THIS IS A HACK FOR NOT BEING ABLE TO USE CFBREAK inside cfoutput. ---> 
    </cfcatch> 
    </cftry>