我在循環內部有下面的代碼,以便循環迭代我將當前循環迭代的動態變量temp
設置爲getAdvisor_Advisors.advisor_ID
的值。CFML將evaluate()查詢字符串轉換爲結構語法
<cfset temp = "getAdvisor_Advisors#LoopCount#.advisor_ID">
下面這CFINVOKE調用我通過在動態「TEMP」變量,但不得不使用慢評估(臨時)圍繞它來獲取正確值的查詢。
<cfinvoke component="com.appointments" method="get_All_Appointments" returnvariable="getAppointments">
<cfinvokeargument name="Advisor_ID" value="#evaluate(temp)#">
<cfinvokeargument name="StartDay" value="#dateFormat(form.cal,'dd')#">
<cfinvokeargument name="StartMonth" value="#dateFormat(form.cal,'mm')#">
<cfinvokeargument name="StartYear" value="#dateformat(form.cal,'yyyy')#">
</cfinvoke>
我想重寫temp
變量,evaluate()
不使用評估。有人告訴我,我可以使用結構的語法來引用它有點像如下:
沒有評價:
<cfset foo = qBar["text#lang#"][CurrentRow]>
getAdvisor_Advisor["advisor_ID"][CurrentRow]
如何使用結構語法改寫
<cfset temp = "getAdvisor_Advisors#LoopCount#.advisor_ID">
?
添加更多的代碼,所以你可以看到爲什麼這是複雜的這些是複合循環。
<cfquery name="getAdvisor_Advisors1" dbtype="query" cachedWithin="#CreateTimeSpan(0,0,15,0)#">
Select *
From getAdvisors
Where Express = 'FR/SO'
Order by Specialization, Advisor
</cfquery>
<cfquery name="getAdvisor_Advisors2" dbtype="query" cachedWithin="#CreateTimeSpan(0,0,15,0)#">
Select *
From getAdvisors
Where Express = 'JR/SR'
Order by Specialization, Advisor
</cfquery>
<cfquery name="getAdvisor_Advisors3" dbtype="query" cachedwithin="#CreateTimeSpan(0,0,15,0)#">
Select *
From getAdvisors
Where Specialization IS NULL AND Appointments = 1 AND Campus_ID > 0
Order by Campus_ID, Advisor
</cfquery>
<cfquery name="getAdvisor_Advisors4" dbtype="query" cachedwithin="#CreateTimeSpan(0,0,15,0)#">
Select *
From getAdvisors
Where Specialization IS NOT NULL
AND Title != 'BCC-GA'
Order by Specialization, Advisor
</cfquery>
<div id="calendarGrid">
<!--- looping over the filter queries above that split advisors into groups --->
<cfloop index="LoopCount" from = "1" to = "4">
<!--- FR/SO Advisors --->
<cfif LoopCount LTE 3>
<cfset currGroup = "campus_id">
<cfelse>
<cfset currGroup = "specialization">
</cfif>
<cfoutput query="getAdvisor_Advisors#LoopCount#" group="#currGroup#">
<div class="advisorGrouping">
<div id="calcontainer">
<table class="pickme" border="0" cellspacing="1" cellpadding="1">
<tr class="hdr">
<td width="6.9%">
<cfif (Specialization IS "BCC") OR (Specialization IS "HONORS")>
#uCase(Specialization)#
<cfelse>
#uCase(Campus_Text)#
<cfif Len(Express) NEQ 0>
- #uCase(Express)#
</cfif>
</cfif>
</td>
<td width="4.9%" class="border">8:00</td>
<td width="4.9%" class="border">8:30</td>
<td width="4.9%" class="border">9:00</td>
<td width="4.9%" class="border">9:30</td>
<td width="4.9%" class="border">10:00</td>
<td width="4.9%" class="border">10:30</td>
<td width="4.9%" class="border">11:00</td>
<td width="4.9%" class="border">11:30</td>
<td width="4.9%" class="border">12:00</td>
<td width="4.9%" class="border">12:30</td>
<td width="4.9%" class="border">1:00</td>
<td width="4.9%" class="border">1:30</td>
<td width="4.9%" class="border">2:00</td>
<td width="4.9%" class="border">2:30</td>
<td width="4.9%" class="border">3:00</td>
<td width="4.9%" class="border">3:30</td>
<td width="4.9%" class="border">4:00</td>
<td width="4.9%" class="border">4:30</td>
<td width="4.9%" class="border">5:00</td>
</tr>
<cfoutput group="advisor_id">
<cfset temp = "getAdvisor_Advisors#LoopCount#.advisor_ID">
<!--- get Appts for cal date --->
<cfinvoke component="com.appointments" method="get_All_Appointments" returnvariable="getAppointments">
<cfinvokeargument name="Advisor_ID" value="#evaluate(temp)#">
<cfinvokeargument name="StartDay" value="#dateFormat(form.cal,'dd')#">
<cfinvokeargument name="StartMonth" value="#dateFormat(form.cal,'mm')#">
<cfinvokeargument name="StartYear" value="#dateformat(form.cal,'yyyy')#">
</cfinvoke>
變量的範圍是什麼?使用相同的括號表示法語法,只需添加範圍即'#scopeName [「get_Advisors」&loopIndex] [「advisor_ID」] [someRowNumber]#'。可能還想調查動態變量名是否是必要的。 – Leigh
目前「temp」是一個變量作用域,但如果我可以使用直接表示法,則不需要臨時變量。我只是知道我可以通過在臨時動態上使用evaluate()來達到目標......這種方法的工作起來很慢,但並不是最佳實踐。 但我需要的值是一個cfquery「getAdvisor_Advisor.advisor_ID」是一個帶有advisor_ID列的cfquery。 – user2676844
使用上面的括號表示法進行嘗試。儘管如此,根據代碼的作用,可能並不需要動態名稱。 – Leigh