0

Daten ergänzen bis zum nächsten validierten Datensatz

Ich habe eine Tabelle, in der leider für zwei Typen (Aktien und Investments) nicht für jeden Tag die Kurse abegrufen werden.

Ich möchte nun, dass auch die Daten in den Feldern "aufgefüllt werden", solange keine neuen Zahlen vorliegen:

Bildschirmfoto 2020-07-21 um 00.01.34

Die Formel in Spalte 3 ist einfach

let d := 'Datum (Zusammenfassung)';
sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile')

 

Ich kriege es aber nicht hin, eine Formel zu schreiben, die den letzten Wert (hier z.B. 09.07.) fortschreibt (also wiederholt) bis ein neuer Wert erreicht wird (hier z.B. 17.07.)

Kann mir jemand dabei helfen? Das wäre sehr freundlich!

 

Alexander

10 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Alexander,

    wenn die Berechnung nicht von den vorhandenen Werten in der dritten Spalte abhängig ist kann man die Werte in einer Schleife mit Bedinging durchrechnen. Entweder als Button:

    ---

    for i in select DEINETABELLE where 'Gesamtwert(For....'=0 do
    i.'Gesamtwert(For....':=sum((select 'Historische Rücknahmepreise' where Datum =i. 'Datum (Zusammenfassung)').'Gesamtwert Investmentfondsanteile')
    end

    ---

    Oder wenn die Werte nur in der Tabellenspalte sichtbar sein sollten dann:

    ---

    if 'Gesamtwert(For....'!=0 then 'Gesamtwert(For....' else 
    let d := 'Datum (Zusammenfassung)';
    sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile')
    end

    ---

    Den Namen 'Gesamtwert(For....' musst du ergänzen - ist auf dem Bild nicht mehr zu sehen.

     

    Leo

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Lieber Leo,

     

    ich würde Variante 2 wählen, weil die Werte nur in der Tabellenspalte benötigt werden: Das funktioniert aber leider nicht, weil Ninox meldet, dass in Zeile 1 ein Zirkelbezug besteht bei

    if 'Gesamtwert (Fonds') !=0 then 'Gesamtwert (Fonds')

    ...

    'Gesamtwert (Fonds') ist das Feld 'Gesamtwert(For....', welches auf dem Bild abgeschnitten ist

     

    Alexander

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Alexander,
    ist  'Gesamtwert (Fonds') ein Zahlenfeld ode ein Funktionsfeld?

    Leo

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Es ist ein Funktionsfeld mit bisher folgendem Inhalt let d := 'Datum (Zusammenfassung)';
    sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile')

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Dann habe ich dich falsch verstanden/nicht richtig gelesen:

    ---

    let me:=this;
     if 'Gesamtwert (Fonds)'=0 then
    let myDate:=max(select DEINETABELLE[ 'Datum (Zusammenfassung)'<me. 'Datum (Zusammenfassung)' and 'Gesamtwert (Fonds)'!=0].'Datum (Zusammenfassung)');
    sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
    else
    'Gesamtwert (Fonds)'
    end

    ---

     Leo

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hm. Leider nicht. Immer noch ein Zirkelbezug:

    let me := this;
    if F = 0 then
    let myDate := max((select Werte)['Datum (Zusammenfassung)' < me.'Datum (Zusammenfassung)' and F != 0].'Datum (Zusammenfassung)');
    sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
    else
    F
    end

    wobei F eigentlich für 'Gesamtwert (Fonds)' in der Formel stand.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Warum jetzt F?

    öffne Bitte einen Datensatz in der Tabelle Werte und erstelle dort ein Funktionsfeld F(x) namens Gesamtwert (Fonds). Als Formel für dieses Feld:

    ---

    let me := this;
    sum((select 'Historische Rücknahmepreise' where Datum = me.'Datum (Zusammenfassung)').'Gesamtwert Investmentfondsanteile')

    ---

    Jetzt öffne die Tabellenansicht und füge bei der Spalte Gesamtwert (Fonds) die Formel ein:

    ---

    let me := this;
    if 'Gesamtwert (Fonds)' = 0 then
    let myDate := max((select Werte)['Datum (Zusammenfassung)' < me.'Datum (Zusammenfassung)' and 'Gesamtwert (Fonds)' != 0].'Datum (Zusammenfassung)');
    sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
    else
    'Gesamtwert (Fonds)'
    end

    ---

    Leo

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Lieber Leo, 

    vielen lieben Dank! Ich habe mich zwar schon relativ intensiv mit Ninox beschäftigt, aber eine Formel in die Tabellenansicht einzufügen, war mir bislang fremd und unbekannt!

    Bildschirmfoto 2020-07-22 um 00.00.55

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Lieber Leo,

    ich empfinde es als außerordentlich beeindruckend, wie vielen Benutzern Du so schnell, so unkompliziert Lösungen bereitstellst. Ich möchte Dir dafür einen großen Dank aussprechen. Viele Deiner Vorschläge in anderen Beiträgen habe ich auch in meiner Datenbank untergebracht, die sehr gut funktionieren (auch wenn ich nicht immer verstanden habe, warum...).

    Vielleicht hast Du auch eine Lösung für einen anderen Post von mir: Wenn ich nun versuche, die Daten in einem Diagramm anzueigen, passiert gar nichts. 

     

    Ich möchte Gesamtwert (Aktien) anzeigen (und das wiederum ist das Ergebnis von:

    let d := 'Datum (Zusammenfassung)';
    sum((select 'Historische Kurse' where Datum = d).Wert)

    und

    Gesamtwert (Fonds)

    na, das ist die hervorragende Formel von Dir

     

    Und daraus bekomme ich aber nur ein Diagramm mit leeren Werten. Also, lange Rede, kurzer Sinn:

     

    Ich würde gerne ein Diagramm haben (Tag für Tag) mit der Summe aus Gesamtwert (Aktien) + Gesamtwert (Fonds).

    Daran scheitere ich auch. Es bleibt immer leer.

    Aber es mir peinlich, Dich immer wieder fragen zu müssen.

     

    Es ist spät, ich gehe mal schlafen, und vielen herzlichen Dank für die Hilfe!

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Alexander,

    bei Diagramm gibt es eine Option Spalten einblenden. Dort sollte man nur drei Spalten stehen lassen. Als erst die Datumsspalte, dann die beibden Wertspalten. Die Formel für Gesamtwert (Fonds) sollte auch die Selbe sein wie in der Tabelle wenn die Werte gefülltsein sollten. 

    Bei Datenreihen sollte auch die Option Spalten ausgewählt sein.

    Leo