2011-05-13 5 views
0

До сих пор я сделал таблицу с продуктами и ее суммами, в зависимости от месяца, я новичок в этом, поэтому у меня есть ошибка: переменная total2_1_27 не определена. я не могу получить суммы продуктов по месяцам, я нашел до сих пор по строке, но не смог получить по столбцу ... так вот код: http://jsfiddle.net/Tskak/1/ Я просто не понимаю, как определить этот итог2, эта строка:Получить сумму строки и столбца

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

PLS кто-нибудь поможет! и спасибо всем за помощь!

+1

Я бы определенно начал с некоторого рефакторинга. По крайней мере, разделение данных на подготовку и рендеринг поможет сделать его более читаемым. – Sergii

+0

u можете посмотреть код от jsfiddle, там более удобно – user745110

ответ

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. Я бы на самом деле решил вашу проблему, используя команду PIVOT в SQL Server, чтобы взять ваш список итогов по идентификатору продукта и месяцу и преобразовать их в столбцы в вашем CFQUERY. Это значительно уменьшит количество кода на странице, и если вы сделаете суммирование в запросе, уменьшите код до CFQUERY, а затем пропустите CFOUTPUT/CFLOOP вокруг стола. Он избавится от всех ваших списков и циклов в ваших списках. Сделает эту страницу радостью для кода вместо головной боли, которой она является сейчас.

+0

спасибо, так что я должен переписать запросы? я просто не знаю, делает ли это PIVOT на моем сервере сейчас, и я не знаю, что sql, чтобы записать его с самого начала, я думаю, что будет лучше, если я найду ответ здесь :) – user745110

Смежные вопросы