0

Werte extrahieren

Bestimmt wurde es schon oft gefragt, trotzdem will es nicht in meinen Kopf,

wie kann ich die werte extrahieren?

let myY := year(Anfang_Auswertungszeitraum);
let n := number('Vertragspartner auswählen');
let myYM := yearmonth(Anfang_Auswertungszeitraum);
let vArray1 := [];
let vArrayObj1 := [];
let vObj1 := {};
let datorder := ((select Abrechnungen
        where 'Aufträge'.Vertragspartner.Nr = n and 'anfahrt Nr' = 1 and
        yearmonth('Abrechnung vom') >= myYM) order by 'Abrechnung vom');
for ZY in range(myY, year(today()) + 1) do
    let myArray := for ZM in range(1, 13) do
            cnt(datorder[year('Abrechnung vom') = ZY and month('Abrechnung vom') = ZM])
        end;
    vObj1 := {
            Jahr: ZY,
            value: myArray
        };
    vArrayObj1 := [vObj1];
    vArray1 := array(vArray1, vArrayObj1)
end;
formatJSON(vArray1)
---
Ergebniss sieht dann so aus:
[{"Jahr":2022,"value":[4,6,6,9,4,6,10,6,12,8,4,4]},{"Jahr":2023,"value":[4,3,5,3,1,2,1,1,0,0,0,1]},{"Jahr":2024,"value":[0,0,0,0,0,0,3,2,4,0,0,0]}]
wie kann ich jetzt die value für die Jahre separieren und ausgeben?
.........................................
benötigen würde ich es so:

let jahr1:= [4,6,6,9,4,6,10,6,12,8,4,4];
let jahr2:= [4,3,5,3,1,2,1,1,0,0,0,1];
.
.
---

7 Antworten

null
    • UweG
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Bei einem Array mit Objekten kann man mit item() die jeweiligen Objekts ansprechen. Die Nummerierung beginnt mit 0.

    item(Array,0).value ergibt die value des ersten Objekts

    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Z. B. ergibt das ein Array der Ergebnisse, die Du dann ansprechen kannst. Mirko

    let result := [{
                Jahr: 2022,
                value: [4, 6, 6, 9, 4, 6, 10, 6, 12, 8, 4, 4]
            }, {
                Jahr: 2023,
                value: [4, 3, 5, 3, 1, 2, 1, 1, 0, 0, 0, 1]
            }, {
                Jahr: 2024,
                value: [0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0]
            }];
    for i in result do
        i.value
    end
    
    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    ...oder wie der schnellere Uwe schrieb;-)

      • Michi.1
      • vor 3 Monaten
      • Gemeldet - anzeigen

       

      Danke euch beiden. Damit kann ich arbeiten

    • Michi.1
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Jetzt hab ich trotzdem noch eine blöde frage?

    wenn ich let vArray1 ein leeres Objekt mitgebe

    let vArray1 := [{}];
    

    [{},{"Jahr":2022,"value":[4,6,6,9,4,6,10,6,12,8,4,4]},{"Jahr":2023,"value":[4,3,5,3,1,2,1,1,0,0,0,1]},{"Jahr":2024,"value":[0,0,0,0,0,0,3,2,4,0,0,0]}]

    kann ich über item(vArray1, 1).value auf die Objekte zugreifen.

    Lasse ich es so :

    let vArray1 := [];

    [{"Jahr":2022,"value":[4,6,6,9,4,6,10,6,12,8,4,4]},{"Jahr":2023,"value":[4,3,5,3,1,2,1,1,0,0,0,1]},{"Jahr":2024,"value":[0,0,0,0,0,0,3,2,4,0,0,0]}]

    findet: item(vArray1, 1).value , das objekt value nicht.

      • mirko3
      • vor 2 Monaten
      • Gemeldet - anzeigen

       

      Arrays können nur mit Werten des gleichen Typs wie das Ausgangsarray gefüllt werden. Im ersten Fall legst Du ein Array vom Typ "any" an, welches ein leeres Objekt enthält. Nutze besser gleich ein leeres Array durch let vArray1 := [{}][null]. Resultat funktioniert.

      Im zweiten Array legst Du ein leeres Array vom Typ "void" an, welches leer bleiben dürfte. Demzufolge auch kein Ergebnis. Leg die Variablen mal in DebugValueInfo(). Hier erkennst Du das.

      Da man leeren Arrays in Ninox keinen Typ zuweisen kann, kannst Du Dich für Stringarrays, Zahlenarrays und Objectarrays jeweils mit

      [""][null]

      [0][null]

      [{}][null] behelfen. Mirko

      • Michi.1
      • vor 2 Monaten
      • Gemeldet - anzeigen

       danke für die Erklärung , hatte vorher schon mit item versuch zuzugreifen,was ja nicht ging. Dann habt ihr geschrieben das es so geht, also mußte der Fehler von mir wo anders stecken. Das mit [{}][null] werde ich gerne ausprobieren, so kann ich wieder wie immer bei 0 beginnen mit der Zuweisung.