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
-
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
oderrecord(Childtabelle,i.number(Nr)).FELD
) -
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.
-
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] )
-
Vielen Dank, dass du dir so viel Arbeit gemacht hast!
Das werde ich ausprobieren
Content aside
- vor 3 JahrenZuletzt aktiv
- 4Antworten
- 168Ansichten