0

Syntax where Bedingung

Hallo,

ich bin neu mit Ninox, die Syntax lässt mich (noch) verzweifeln.

Ich möchte in einer Tabelle mit Bankbuchungen im Formular den jeweiligen Saldo anzeigen, und zwar nur bis zu dem Datensatz, bei dem ich mich befinde. Das kann eigentlich nicht schwer sein. Ich versuche mit

let Position:=Nr;

sum(Datenfeld where Position<=Nr)

und ähnlichem, u.a. Vorschlägen aus dem Forum. Der Texteditor meckert in allen Fällen rum und erwartet ein Symbol nach dem where. Welches Symbol bitte? Bin ratlos.

Danke

2 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Udo,

    versuche es mal so:

    ---

    let me:=this;
    sum((select DEINETABELLE where number(Nr)<=number(me.Nr)).Datenfeld)

    ---

    mit let me:=this definiert man den auktuellen Datensatz. So kann man mit me.Faldname alle Felder in dem Datensatz ansprechen. Mit (select DEINETABELLE where number(Nr)<=number(me.Nr)) definiert man die Datensätze, die deinen Bedingungen entsprechen. Intern speichert Ninox einen Array aus Datensatz-IDs. Und als letztes notiert man  alle Datenfelder im Array und errechnet eine Summe. Die Umwandlung number(Nr) ist hier notwendig, weil bei Ninox intern die Datensatz-ID aus Tabellen-ID und einer fortlaufenden Nummer zusammengesetzt wird. (z.B. A1, A2, A3). Beim Vergleich der Texte ist A2>A10. number(Nr) wandelt die IDs in Zahlen und dann sind die logische vergleiche auch korrekt.

    Man kann es auch so schreiben:

    ---

    let me:=this;
    let myChoice:=select DEINETABELLE where number(Nr)<=number(me.Nr);
    sum(myChoice.Datenfeld)

    ---

    Leo

    • udonadolski
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank für die Vorschläge und Deine Erklärung. Funktioniert prima und ich beginne zu verstehen.

    Danke nochmal

    Udo