2016-08-09 8 views
3

Ich habe eine Abfrage, die ich nach Gruppe ausgeben möchte. Hier ist, was ich jetzt habe ich ein https://jsfiddle.net/nbqqp0cb/2/Wie erhält man den letzten Datensatz in einer Ausgabe nach Gruppe?

"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> 

Das Problem ist das letzte Komma in jeder Gruppe. Ich habe es für den letzten Datensatz arbeiten lassen, aber selbst der letzte Datensatz hat am Ende ein Komma, was nicht sein sollte.

Antwort

3

Ihre Bedingung <CFIF all_dates.CurrentRow EQ all_dates.RecordCount> überprüft die CurrentRow gegen die gesamte RecordCount aus der Abfrage. Sie müssen stattdessen die Anzahl der einzelnen Gruppen überprüfen. Da Sie in Ihrer Abfrageergebnismenge keine Gruppenanzahl haben (nehme ich an), müssen Sie auf andere Weise danach suchen. Dies ist vielleicht nicht der eleganteste Ansatz, aber es sollte funktionieren.

Zuerst über diesem Code initialisiert eine neue Variable:

<cfset previous_month = "" > 

Dann wird Ihr Code wie folgt ändern (diese Pseudo-Code ist und wurde nicht geprüft):

"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

ja, es funktioniert gut, Das einzige Problem, das ich habe, ist das letzte}, da das letzte} kein a haben sollte, am Ende müssen –

+1

eine ähnliche Bedingung/Logik der äußeren Schleife hinzugefügt werden. Ich habe den Code zu meiner Antwort hinzugefügt. –

+0

Könnte auch in der Lage sein, [eine Liste/ein Array von Wertzeichenfolgen zuerst zu erstellen] (http://trycf.com/gist/a6fdde2dbd28fed824eb0fd1d792da9b/acf2016?theme=monokai) und das ganze Komma-Problem vermeiden? Das heißt, @ anatp_123 - musst du wirklich JSON-Strings manuell erstellen? – Leigh

Verwandte Themen