0

Nur die letzten 6 Einträge einer eingebundenen child Tabelle durchsuchen

Hallo,

ich habe ein Problem, dass wahrscheinlich simpel zu lösen ist, aber ich bin zu blöd dazu ;-)

Ich habe eine Tabelle mit einer integrierten untertabelle (embedded child). Ich möchte nun aus der Eltern Tabelle heraus die letzten 6 (zugehörigen) records der eingebundenen child tabelle durchsuchen und dabei treffer zählen.

Wenn ich eine "for i in Childtable" Schleife verwende werden ja alle Datensätze durchlaufen.

Wie kann ich das auf die letzten 6 Records der Child Tabelle begrenzen?

(Ich hoffe, dass man mein Geschwurbel verstehen kann:-)

4 Antworten

null
    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Daniel. Wenn es in Deiner Untertabelle nur fortlaufende ID-Nummern gibt, Du also keine Datensätze gelöscht hast, dann ist es einfach: Eine Ansicht mit dem Code:

    *

    let lastNr := last((Childtable order by number(Nr)).number(Nr));

    Childtable[number(Nr) > lastNr - 6]

    *

    Wenn es gelöschte Datensätze gibt, die in dieser 6er Reihe liegen ist es nicht trivial zu zählen (jedenfalls nicht für mich). Dann geht aber:

    *

    let countRecord := cnt(Childtabelle);

    let vonHier := last(for i in Childtabelle do

    if cnt(Childtabelle[number(Nr) < i.number(Nr)]) = countRecord - 6 then

    i.number(Nr)

    end

    end);

    for i in Childtabelle[number(Nr) >= vonHier] do

    record(Childtabelle,i.number(Nr))

    end

    *

    Wenn Du es in einem Funktionsfeld eingeben willst, dann ist in den obigen Scripten noch die Angabe der Feldbezeichnung nötig (Childtable[number(Nr) > lastNr - 6].FELD oder record(Childtabelle,i.number(Nr)).FELD)

    • Daniel.4
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi MZ,

    vielen Dank für den Input. Wenn ich es richtig verstehe, kann ich so innerhalb des Childtable zählen. Mein Problem ist allerdings, dass ich schauen möchte wie oft in den letzten 6 Einträgen z. B. ein Ja / Nein Schakter auf "ja" steht. dazu müsste ich die 6 letzten records des child table doch mit irgend einer Art schleife durchlaufen. Mir fällt da nur die "for i in childtable do" Schleife ein. diese würde aber alle Einträge des child table durchlaufen. Ich kann sie nicht auf die letzten 6 begrenzen. Dieses Problem kann ich nicht lösen.

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    let lastNr := last((Childtable order by number(Nr)).number(Nr));

    cnt(Childtable[number(Nr) > lastNr - 6 and JA/NEIN])

    *

    let countRecord := cnt(Childtabelle);

    let vonHier := last(for i in Childtabelle do

    if cnt(Childtabelle[number(Nr) < i.number(Nr)]) = countRecord - 6 then

    i.number(Nr)

    end

    end);

    cnt( Childtabelle[number(Nr) >= vonHier and JA/NEIN] )

    • Daniel.4
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank, dass du dir so viel Arbeit gemacht hast!

    Das werde ich ausprobieren 😃