0

Abfrage voriger Eintrag aus derselben Tabelle

Ich tüftel mal wieder an einer Abfrage, bei der ich nicht weiter komme. Ich vermute, Ihr habt da wieder eine gute Idee für mich, ehe ich nochmal 3 Stunden darein stecke und was versuche.

2 relevante Tabellen: Checklistenvorlagen und Wartungschecklisten.

In den Checklistenvorlagen stehen Checklistenpunkte als Vorlagen. Per Script werden für jede Wartungen die Checklistenvorlagen in die Tabelle Wartungschecklisten kopiert.

In den Wartungschcklisten gibt es ein Feld, welches die ID aus Cehcklistenvorlagen speichert. So kann ich jederzeit dne Datensatz aus Wartungschecklisten dem urspringlichen Datensatz aus Checklistenvorlagen zuordnen.

In Wartungschecklisten gibt es ein Feld Bemerkungen.

Nun versuche ich, in dem jeweiligen Datensatz in Wartungschecklisten die Bemerkung des Datensatzes auch aus Wartungschecklisten der auf dem gleichen Datensatz in Checklistenvorlagen basiert, anzuzeigen. Damit man also bei einer Wartung zu jedem Checklistenpunt die Bemerkung aus der vorigen Wartung hat.

Bisher habe ich in einem berechneten Feld versucht, wenigstens schon mal den letzten Datensatz aus Wartungschecklisten anzuzeigen, um dann irgendwie einen abzuziehen um die Bemerkung aus dem vorigen anzuzeigen. Selbst beim Schritt 1 scheitere ich schon. Ich bekomme hier einfach keine Ausgabe. Ich weiß nicht warum. Letztes Statement dazu sieht so aus:

let me := this;
let xPNr := max(select Wartungschecklisten where ChkLstPNr = me.ChkLstPNr);
xPNr

Denke ich wieder zu SQL-kompliziert?

5 Antworten

null
    • Arne.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    habe nun viel versucht, aber ich komme nicht weiter. Ich versuch's noch mal einfacher und etwas abstrakter zu erklären.

     

    Ich habe eine Tabelle "TabA" in der gibt es zwei Felder "Typ" und "Betrag". Das Feld Typ kann die Werte A, B, C und D annehmen. Es gibt reichlich Datensätze mit diversen Beträgen und einem der vier genannten Typen.

     

    Nun versuche ich eine Abfrage zu bastelen, die mir in einem berechneten Feld den Betrag des vorigen Datensatzes vom gleichen Typ ausgibt.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Arne,

    Für ein f(x) Feld würde ich die Formel so vorschlagen:

    ---
    let me:=this;
    let myPrevID:=max(select DEINETABELLE where Typ=me.Typ and number(Nr)<me.number(Nr).number(Nr));
    record(DEINETANELLE, myPrevID).Betrag

    ---

    Leo

    • Arne.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    hab's gerade getestet. Das zweite .number(Nr) ist sicher da rein gerutscht. Ich vermute das kommt weg. Zumindest bekomme ich dann keine Fehlermeldung mehr im Script Editor.

     

    Ich erhalte allerdings leider keine Ausgabe des Betrages. Auch wenn ich mir die myPrevID ausgeben lasse, nichts. Er wählt also aus irgend einem Grund die vorige ID des Datensatzes vom gleichen Typ nicht aus. 

     

    Hast Du noch eine Idee, was ich verändern kann? Das Feld Typ ist ein Zahlenfeld. Ich weiß nicht, ob man hier ggf. etwas beachten müsste?

    • Arne.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Habs. die zwiete .number(Nr war das Feld, welches ausgegeben wird. Eine Klammerebene fehlte. So funktioniert das Script:

     

    let me:=this;
    let myPrevID:=max((select DEINETABELLE where Typ=me.Typ and number(Nr)<me.number(Nr)).number(Nr));
    record(DEINETANELLE, myPrevID).Betrag

     

    Yea. Vielen Dank! Bin wieder einen Schritt weiter. Sowohl Wissenstechnisch, als auch in meinen noch offenen Aufgaben für meine Datenbank.

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    So müsste es auch gehen:

    let myNr := number(Nr);
    let myTyp := Typ;
    last(((select TabA where Typ = myTyp and number(Nr) < myNr) order by number(Nr)).Betrag)

    Nur der Vollständigkeit halber, siehe
    https://ninox.com/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/verstandnisfrage-idnr-feld-5f0733b2cdbb2a0a196d9c90?post=5f074549cdbb2a0a196d9c9b&page=1

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 5Antworten
  • 1092Ansichten