2011-05-13 43 views
0

到目前爲止,我已經用產品和它的總和表做了一個表,根據一個月,我是一個新的,所以我有一個錯誤:變量total2_1_27是未定義的。我不能得到月產品的總和,我發現迄今爲止,但不能通過列...所以這裏是代碼: http://jsfiddle.net/Tskak/1/我只是不明白我該如何定義這total2,這一行:得到行和列的總和

<cfset 'total2_#ddd_other#_#p_index#'=evaluate('total2_#ddd_other#_#p_index#') + #evaluate('alan2_#ddd_other#_#p_index#')#> 

請有人幫忙!並感謝大家的幫助!

+1

我肯定會開始一些重構。至少分割數據準備和渲染將有助於使其更具可讀性。 – Sergii 2011-05-13 11:34:08

+0

你可以看看jsfiddle的代碼,有更方便的 – user745110 2011-05-13 11:37:22

回答

0

不要使用評估或將變量名稱放在cfset中的引號內,如<cfset 'blah_#x#' = foo>

相反引用變量是這樣的:

<cfset variables['total2_#ddd_other#_#p_index#'] = variables['total2_#ddd_other#_#p_index#'] + variables['alan2_#ddd_other#_#p_index#']> 

<cfset variables['total2_' & ddd_other & '_' & p_index] = variables['total2_' & ddd_other & '_' & p_index] + variables['alan2_' & ddd_other & '_' & p_index]> 

這是假設該值在變量範圍。如果是在會話範圍內,你可以參考session['total2_' & ddd_other & '_' & p_index]。你也可以在CF8和CF9中使用+ =,所以這樣可以:

<cfset variables['total2_' & ddd_other & '_' & p_index] += variables['alan2_' & ddd_other & '_' & p_index]> 
1

希望你在SQL Server 2005或更高版本。我假設你在SQL Server上,因爲使用了DATEPART函數。實際上,我會在SQL Server中使用PIVOT命令解決您的問題,根據產品ID和月份獲取總計列表,並將它們轉換爲您的CFQUERY中的列。這將大大減少頁面上的代碼量,如果你這樣做,查詢中的總計應該將代碼減少到表格周圍的CFQUERY,然後簡化爲CFOUTPUT/CFLOOP。它將擺脫列表中的所有列表和循環。將使這個頁面代碼的快樂,而不是現在的頭痛。

+0

謝謝,所以我應該重寫查詢?我只是不知道,這個PIVOT現在在我的服務器上工作了嗎,我從一開始就不知道那麼多的sql,我認爲如果我在這裏找到答案會更好:) – user745110 2011-05-13 12:15:03