0

Wie wird ein "Feld x" des letzten Datensatzes mit dem "Feld X" des aktuellen Datensatzes z.B. multipliziert?

Wie wird ein "Feld x" des letzten Datensatzes mit dem "Feld X" des aktuellen Datensatzes z.B. multipliziert?

18 Antworten

null
    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi HGO49,

    let akt_Feld_X := this.'Feld X';
    let letztes_DS_Feld_X := last(select Tabelle1).'Feld X';
    Ergebnis := akt_Feld_X * letztes_DS_Feld_X

    Gruß

    Mirko

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank lieber Mirko, mache mich gleich ans Werk. Wie immer: Eine schnelle und fachmännische Hilfe!

    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Dir,

    dafür ist das Forum ja da.

    Schönes Wochenende!

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Mirko, 

    meine Anpassung:

    let akt_Feld_X := this.'Abgelesener Zählerstand kWh';
    let letztes_DS_Feld_X := last(select 8.1 Stromverbrauch).'Abgelesener Zählerstand kWh';
    Ergebnis := akt_Feld_X - letztes_DS_Feld_X 

    Fehlermeldung: ID erwartet in Zeile 2 Spalte 38

    Vielen Dank!

    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hast du hochkomma bei der Tabelle gesetzt?

    last(select '8.1 Stromverbrauch').'Abgelesener Zählerstand kWh';

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Habe ich korrigiert und nachdem ich (hihi) "Ergebnis :=" herausgenommen habe, bekomme ich auch ein Ergebnis. Das wird aber nicht im aktuellen Datensatz, sondern im letzten Datensatz angezeigt. Im aktuellen Datensatz wird eine 0 angezeigt. Nicht schlimm, aber, wie könnte man das noch verbessern?

    Ganz herzliche Grüße
    Hans Georg

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Hans Georg,

     

    Du ziehst den Zählerstand im letzten Datensatz (aktueller Datensatz) vom Zählerstand im letzten Datensatz (last()) ab - das kann dort nur "0" als Ergebnis haben ;-)

     

    let my := this;
    let akt_Feld_X := this.'Abgelesener Zählerstand kWh';
    let letztes_DS_Feld_X := last(select '8.1 Stromverbrauch' where Nr < my.Nr).'Abgelesener Zählerstand kWh';
    Ergebnis := akt_Feld_X - letztes_DS_Feld_X

     

    lg, Torsten

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank an "Ninox" für die Hilfe bis in die Nacht hinein!

    Jetzt funktioniert es! Sage mir bitte noch: Warum schreibt ihr Ergebnis := ?  Das Skript funktioniert nur, wenn ich es weglasse.

    Viele Grüße und nochmal ganz herzlich: Danke!

    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    „Ergebnis“ ist das DB-Feld, dem der Wert zugewiesen wird, wahrscheinlich hast du kein Feld, dass so heißt 😉

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Verstehe, ich habe ein Formelfeld in dem das Skript erfasst wurde, dann ist der Verweis auf das Feld nicht nötig! Vielen Dank! Hans Georg

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Nachdem ich das Datenfeld Ergebnis erstellt hatte, werde ich im Skript-Editor darauf hingewiesen, dass die Tabellenspalte kein einfaches Datenfeld sei? Viele Grüße Hans Georg

    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hast du ein Berechnungsfeld hinzugefügt? Nimm mal ein Zahlen-Datenfeld. Aber wenn Du die Funktion in das Berechnungsfeld schreibst, weil du das Ergebnis der Rechnung dort stehen haben möchtest, musst du im Code die Zeile

    Ergebnis:=......

    weglassen.

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank und ein schönes Wochenende! 

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Habe es mit einem Zahlen-Datenfeld ausprobiert. Beim Verlassen des Skriptes kommt die Meldung: Diese Funktion darf keine Datenänderung vornehmen.

    • Mirko
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Also so müsste es gehen, im letzten DS steht dann zwar 0 aber das ist ja auch klar, da ja dort aktueller DS = letzter DS ist, oder was willst du da stehen haben?

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Lieber Mirko, mach Dir keine Mühe mehr. Ich habe mit dem Skript von Torsten ein optimales Ergebnis. Ich musste nur "Ergebnis :=" löschen und das richtige Ergebnis steht im Berechnungsfeld des aktuellen Datensatz. Wollte dann wegen eurer Anregung auch mal die Sache mit einem zusätzlichen Feld "Ergebnis" ausprobieren. Das geht aus irgend einem Grund leider nicht. Nochmal vielen Dank und alles Gute Hans Georg

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Georg,

     

    das Berechnungsfeld kann keine Datenänderung in anderen Feldern (die ":="-Anweisung) vornehmen. Das Script könnte alternativ in einem Änderungstrigger z.B. im Feld 'Abgelesener Zählerstand kWh' stehen und dann ein Feld 'Ergebnis' füllen. Die Variante wäre für Dich aber in der Tat ungünstiger, weil sich bei Korrekturen der Ablesung lediglich der aktuelle Datensatz ändern würde, nicht aber der folgende, der ja auch auf den Ablesungswert zugreift.

     

    lg, Torsten

    • Freiberufler
    • HGO49
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wieder ein guter Service, vielen Dank allen Beteilgten! 

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 18Antworten
  • 3268Ansichten