SUMMEWENN in Tabelle

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
acronaut_azubi
Beiträge: 5
Registriert: 20.02.2013, 21:32

SUMMEWENN in Tabelle

Beitrag von acronaut_azubi » 20.02.2013, 21:55

Hallo acronauten,

brauche Eure Hilfe.

In den Zeilen a-m können absolute oder %-tuale Werte eingetragen werden.
Es funktioniert alles wie gewünscht, bis auf die Aufaddierung der zeilenweisen eingegebenen %-tualen Werte.

Meine bspw.:
  1. in allen Zeilen außer a und c wird ein absoluter Betrag ausgewäht (DD gleich EUR)
  2. wenn in a im DD "%" ausgewählt wird und im Feld rechts daneben 10 eingetragen wird errechnet sich der korrekte %-tuale Wert
Wie schaffe ich es
  1. mit einer Schleife alle Zeilen zu durchlaufen
  2. abzuprüfen, ob "%" ausgewählt wurde und
  3. nur, wenn "%" ausgewählt wurde,
  4. nebenstehende Werte aufzuaddieren und
  5. im Feld "Gesamtprozent" auszugeben?
Hatte die Hoffnung, dass es folgendes Script tut..tut es leider nicht.. :(

Code: Alles auswählen

var prozentGesamt = 0;

for(var i = 1; i < 14; i++)
{    
    if(Row[i+1].valueFormat[i] == "%")
    {
        prozentGesamt = Row[i+1].value[i].rawValue;
        //app.alert(prozentGesamt);
    }
    this.rawValue = prozentGesamt;
}
Danke für Eure Hilfe.
acronaut_azubi

PS: Selbst bemerkt, dass hier wohl die Aufaddierung fehlt, ändert aber nichts daran, dass es nicht funktioniert

Code: Alles auswählen

prozentGesamt = prozentGesamt  + Row[i+1].value[i].rawValue;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

acronaut_azubi
Beiträge: 5
Registriert: 20.02.2013, 21:32

SUMMEWENN in Tabelle

Beitrag von acronaut_azubi » 21.02.2013, 16:43

Nächsten eigenen Fehler bemerkt. Führt leider aber auch nicht zum Funktionieren. :(

Hatte rawValue bei der ersten Bedingung vergessen:

Code: Alles auswählen

var prozentGesamt = 0;

for(var i = 1; i < 14; i++)
{    
    if(Row[i+1].valueFormat[i].rawValue == "%")
    {
        prozentGesamt = prozentGesamt + Row[i+1].value[i].rawValue;
        app.alert(prozentGesamt);
    }
    this.rawValue = prozentGesamt;
}
Jemand eine Idee, was falsch ist oder wie ich es anders lösen könnte?

LG acronaut_azubi

acronaut_azubi
Beiträge: 5
Registriert: 20.02.2013, 21:32

SUMMEWENN in Tabelle

Beitrag von acronaut_azubi » 22.02.2013, 00:00

Warum funktioniert meine Schleife nicht?

Arbeite ich die Zeilen zeilenweise einzeln ab und lege das Skript in das Calculate-Event, dann funktioniert's.

Code: Alles auswählen

var gesamtprozent = 0;
if(Row2.valueFormat1.rawValue == "%"){gesamtprozent = gesamtprozent + Row2.value1.rawValue;}
this.rawValue = gesamtprozent;
if(Row3.valueFormat2.rawValue == "%"){gesamtprozent = gesamtprozent + Row3.value2.rawValue;}
this.rawValue = gesamtprozent;
if(Row4.valueFormat3.rawValue == "%"){gesamtprozent = gesamtprozent + Row4.value3.rawValue;}
this.rawValue = gesamtprozent;
...
...
Wo ist mein Fehler? Ich würde es gern mit einer Schleife lösen.

LG acronaut_azubi

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

SUMMEWENN in Tabelle

Beitrag von radzmar » 25.02.2013, 19:26

Hi,

ich hab jetzt mal versucht, dein Formular zu fixen.
Es gibt da ein paar spezielle Probleme, die behoben werden mussten/müssen.

1. Du darfst Feldern keinen Namen wie "value" geben, da dies reservierte Wörter für Methoden/Skripteigenschaften sind.

2. Du hast eine Datenbindung, die mir unnötig erscheint. Wenn Du mal in die Berichtsleiste unten in Designer guckst, solltest Du da diverse Fehlermeldungen diesbzgl. sehen können.
Ich hab die Datenbindung gelöscht, da das für ich keine Sinn machte.

3. Deine Berechnungsscripte habe ich mal komplett verworfen und neu in FormCalc angelegt. Hierfür habe ich diverse Felder umbenannt.

Schau mal, ob das so passt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

acronaut_azubi
Beiträge: 5
Registriert: 20.02.2013, 21:32

SUMMEWENN in Tabelle

Beitrag von acronaut_azubi » 25.02.2013, 19:50

Hallo radzmar,

oh, da muss ich mich für das "schlechte Ausgangsmaterial" entschuldigen.

Die Bindungen machen schon Sinn, das ist nur ein Teil aus einem Dokument, welches ich leider nicht komplett hochladen kann.

Meine Kollegen hatten dieses PDF (XDP) begonnen und ein wenig unschön die Berechnungen umgesetzt. Anstatt die Berechnung wie üblich im Calculate-Event zu hinterlegen, hatten sie immer im Exit mit execCalculate gearbeitet. :(

MIt dem Value hast du definitiv recht, das ist mir völlig entgangen!!! Danke schon mal hierfür.

Ich werde mir gleich, dein Bespiel ansehen. DANKE schon einmal für deine Mühe.

Problem:
In der Umgebung, in der das Original-XDP läuft, funktioniert Formcalc nicht. Ebenso dürfen manche Ereignisse, bspw. das Initialize nicht verwendet werden. Hättest du noch eine JavaScriptSchleifenIdee, die auf Zeile1.Format1.rawValue und Zeile2.Format2.rawValue abfragt?

Des Weiteren müssen die Felder eindeutig benannt sein. Also Zeile1[0].Format und Zeile2[1].Format reichen wohl leider bei dieser Tabelle nicht.

Vor allem habe ich in Spalte 2 (neben a), b)) unterschiedlichen (etwas längeren erklärenden) Text. Oder aber eine Javascript-Idee mit Zeile.Format, aber dafür eine Idee, wie ich den variablen Beschreibungstext in Spalte 2 bekomme, ähnlcih wie dein "a, b, c,..)-Ansatz, nur nicht in Formcalc??

LG acronaut_azubi

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

SUMMEWENN in Tabelle

Beitrag von radzmar » 25.02.2013, 19:57

In welcher Umgebung läuft FormCalc nicht?

acronaut_azubi
Beiträge: 5
Registriert: 20.02.2013, 21:32

SUMMEWENN in Tabelle

Beitrag von acronaut_azubi » 25.02.2013, 19:59

Das ist eine Bankenumgebung OSPlus.

Antworten