2016-08-09 4 views
3

У меня есть запрос, который я хочу вывести по группе. Вот что я сейчас я сделал https://jsfiddle.net/nbqqp0cb/2/Как получить последнюю запись в выводе группы?

"dataset": [ 
    <cfoutput query="all_dates" group="Month_new"> 
        { 

         "seriesname": "#all_dates.Month_new#", 

        "data": [ 
        <cfoutput> 
         <CFIF all_dates.CurrentRow EQ all_dates.RecordCount> 
          { 

          "value": "#sum_total#" 
          } 

         <br> 
        <cfelse> 
          { 

          "value": "#sum_total#" 

          }, <br> 
         </cfif> 
         </cfoutput> 

        ] 
        },<br> 


         </cfoutput> 

Проблема является последней запятой в каждой группе. Я получил его для работы для последней записи, но даже последняя запись имеет запятую в конце, которой она не должна.

ответ

3

Ваше состояние <CFIF all_dates.CurrentRow EQ all_dates.RecordCount> проверяет CurrentRow на весь RecordCount запрос. Вместо этого вам нужно проверить счетчик каждой группы. Поскольку у вас нет группового счета (я предполагаю) в вашем наборе результатов запроса, вам нужно проверить его по-другому. Это может быть не самый элегантный подход, но он должен работать.

Сначала над этим кодом инициализации новой переменной:

<cfset previous_month = "" > 

Затем изменить свой код следующим образом (это псевдо-код и не был проверен):

"dataset": [ 
<cfoutput query="all_dates" group="Month_new"> 
    { 
     "seriesname": "#all_dates.Month_new#", 
     "data": [ 
     <cfoutput> 
      <cfif all_dates.CurrentRow GT 1> 
       <cfif previous_month EQ all_dates.Month_new and all_dates.CurrentRow LT all_dates.RecordCount> 
        , <br> 
       <cfelse> 
        <br> 
       </cfif> 
      </cfif> 
      { 
       "value": "#sum_total#" 
      } 
      <cfset previous_month = all_dates.Month_new> 
     </cfoutput> 
     ] 
    } 
    <cfif all_dates.CurrentRow LT all_dates.RecordCount>,</cfif> 
    <br> 
</cfoutput> 
+0

да это работает хорошо, только проблема im get into - последняя}, так как последнему не должно быть a, в конце –

+1

вам также нужно добавить аналогичное условие/логику в внешний цикл. Я добавил код в свой ответ. –

+0

Может также иметь возможность [сначала создать список/массив строк значений] (http://trycf.com/gist/a6fdde2dbd28fed824eb0fd1d792da9b/acf2016?theme=monokai) и избежать всей запятой? Тем не менее, @ anatp_123 - вам действительно нужно создавать строки JSON вручную? – Leigh

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