Die Summe will nicht

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 02.03.2010, 12:14

Hallo zusammen.

Mit meinen Copy & Paste -Fähigkeiten habe ich einen Stundenzettel zusammengeklickt.
Es soll in mehreren Zeilen Stunden berechnet werden (klappt! :cool:). Die Felder rechts solen aber automatisch addiert werden (klappt nicht :shock:).

Soweit ich vermuten kann, liegt es daran, dass die Ergebnis-Felder Textfelder sind und keine numerischen. Und an dieser Stelle bringen meine Copy & Paste -Fähigkeiten nicht viel: Ich verstehe den XML-Code nicht wirklich.

Ich habe die Datei angehängt und wäre sehr dankbar für einen kleinen Tipp. Ich brauch nur einen kleinen Hinweis, dann kämpfe ich weiter ... :D

Viele kämpferische Grüße, winflix
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Die Summe will nicht

Beitrag von nele_sonntag » 02.03.2010, 12:40

Hallo winni,

ein erster Blick in Dein PDF sah für mich Nichtvollprofi etwas wüst aus :-)

Leider habe ich gerade auf der Arbeit zu tun, aber vielleicht hilft Dir das schon mal weiter:

http://www.acronaut.de/attachment.php?id=187 aus diesem Diskussionsbeitrag: http://www.acronaut.de/view_topic.php?id=450&forum_id=35&highlight=Tabelle

Liebe Grüße Mandy

 
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 02.03.2010, 12:46

Danke für die schnelle Antwort.
Werde die Dateien mal durchforsten ... :?
Merci schon mal!
winnie.

Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 02.03.2010, 13:13

Buhuuu.
Es klappt leider nicht.

Vielleicht muss ich meine Frage nochmal anders umschreiben:

Über einen Button wird die Tagesarbeitszeit berechnet (JavaScript) und in ein Textfeld geschrieben (Das Script habe ich nicht selbst geschreieben, weil ich es nicht kann. Nur Copy & Paste. Funktioniert aber). Diese Funktion brauche ich, weil ich die Tagesarbeitszeit so immer auf 1/4 Stunde runden kann.

Die Ergebnisfelder sind also Textfelder, die auf Knopfdruck mit dem Ergebnis befüllt werden. Wenn ich davon mehrere habe und die addieren möchte, bekomme ich immer eine Null.

Ich denke, ich brauche eine Button "Summe berechnen", um mir die einzelnen Zwischenergebnisse in einem neuen Feld berechnen zu lassen.

Vielleicht erbarmt sich einer von Euch und hilft mir auf die Sprünge.

winnie
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Die Summe will nicht

Beitrag von nele_sonntag » 02.03.2010, 13:29

Ich schau mal später, aber Dein jetziges funktioniert bei mir nicht. Sagt immer, sie haben länger pausiert als gearbeitet :-(

Bis später, Mandy

Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 02.03.2010, 13:34

Hallo Mandy, das hört sich toll an.

Die Startzeit wird in HH:MM formatiert
Die Pausenzei in Minuten
Die Endzeit in HH:MM
und das Ergebniss dann in ZZ,Z

Ich kämpf mal noch ein bißchen ... :)

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Die Summe will nicht

Beitrag von nele_sonntag » 02.03.2010, 13:48

Hallo winni,

ein kurzer Schnellschuss, der Dir hoffentlich hilft.

- Also zuerst die erste Zeile anlegen und benennen (anfang, ende, gesamt)

- dann in das CALCULATE-Ereignis des gesamt-Feldes hinterlegen (anfang+ende) 

- nun die 3 Objekt markieren, auf editieren und duplizieren gehen

- so oft wiederholen, wie Du es brauchst

- jetzt siehst du schon in der Hierarchie (einblenden über Fenster), das die kopierten Felder genauso heißen, aber in eckigen Klammern eine Zahl haben

- Das ist auch nötig für die Gesamtberechnung.

- Nun ein Gesamtfeld hinzufügen und in das Calculate ereignis folgendes schreiben:

Code: Alles auswählen

Sum(gesamt[*])
 

Du müsstest nun "nur noch" Deine Zeitformatierung mit Copy+Paste hinterlegen. Dein Skript funktioniert mit eingetragener Pause nicht.

Liebe Grüße Mandy

PS: Deine Skript hinterlegen macht keinen Sinn, da die Text in Zahlen umwandeln. Schaue doch mal, was Du alles zu DATUM/ZEIT/UHRZEIT/DIFFERENZ im Forum findest. Meiner Meinung nach gab es einiges. Ich muss jetzt leider erst mal zu einem Meeting.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 02.03.2010, 14:15

Hallo nele_sonntag.

Ich danke Dir für Deine schnelle Antwort.
Dein Formular habe ich verstanden, aber leider ist das nicht mein Problem.

Mein Problem ist die Berechnung, das Script.
 Bei Klick auf den Button wird folgendes ausgelöst:

<script contentType="application/x-javascript">if(Textfeld1.rawValue != null & Textfeld2.rawValue != null){
    var sTimeStart = Textfeld1.formattedValue.split(":");
    var sTimeEnde = Textfeld2.formattedValue.split(":");
    var nTimeStart = (sTimeStart[0] * 3600) + (sTimeStart[1] * 60);
    var nTimeEnde = (sTimeEnde[0] * 3600) + (sTimeEnde[1] * 60);
    var nPausen = 0;
    var nTimeDifferenz = 0;
   
    if(Textfeld3.rawValue != null){
        nPausen = Textfeld3.rawValue * 60;
    }
   
    if(nTimeEnde > nTimeStart){
        if((nTimeEnde - nTimeStart - nPausen) > 0 ){
            nTimeDifferenz = nTimeEnde - nTimeStart - nPausen;
            var nStd = Math.floor(nTimeDifferenz / 3600);
            var nStdRest = nTimeDifferenz - (nStd * 3600);
            var nMinuten = Math.floor(nStdRest / 60);
            var nMinutenHunderter = Math.round(nMinuten / 60 * 100);
            var nViertelTeiler = Math.ceil(nStdRest / 60 / 15);
            var nStdViertel = nStd;
            var nViertel = 0;
            if(nViertelTeiler > 3){
                nStdViertel += 1;
            }
            else{
                nViertel = nViertelTeiler * 25;
            }
       
            Textfeld6.rawValue = nStdViertel + "," + nViertel;
        }
        else if((nTimeEnde - nTimeStart - nPausen) == 0 ){
            app.alert("Abz¸glich Ihrer Pause betr‰gt Ihre Arbeitsleistung 0 Minuten!");
        }
        else{
            app.alert("Sie haben l‰nger pausiert als gearbeitet!");
        }
    }
    else{
        app.alert("Ende muss grˆsser sein als Anfang!");
    }
}
</script>


Es wird also das Ergebnis in Textfeld6 geschrieben.
Ich brauche unebdingt diese doofe Rundung auf 1/4 Stunde.
Ich kann aber die Ergebnisfelder (weil sie Textfelder sind?) nicht addieren.

Bei mir funktioniert das Formular. Habe es nochmal sauber dokumentiert, vielleicht funzt es ja jetzt auch bei Dir :?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

walde
Beiträge: 611
Registriert: 02.05.2008, 21:22

Die Summe will nicht

Beitrag von walde » 02.03.2010, 21:30

Hallo winni,

 

Anbei das abgeänderte Formular. Dieses Rundet die Arbeitszeit jedoch auf volle 1/4 Std. auf. Wenn Sie also nur 1 Minute gearbeitet habe wird dieses 0,25 Std. anzeigen.

Wenn Sie die Arbeitszeit abrunden möchten (erst ab 15 min. Arbeitszeit wird 0,25 Std. angezeigt), so sollten Sie diese Zeile im Formular

Code: Alles auswählen

var nViertelTeiler = Math.ceil(nStdRest / 60 / 15);
durch diese

Code: Alles auswählen

var nViertelTeiler = Math.floor(nStdRest / 60 / 15);

ersetzen.

 

P.S.:

Im LCD können Sie auch den Skript Editor unter "Fenster" einblenden. Dieser ist etwas hilfreicher als die XML Ansicht alleine.



Gruß,

 

Walde

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
winni
Beiträge: 6
Registriert: 01.03.2010, 16:08

Die Summe will nicht

Beitrag von winni » 03.03.2010, 00:05

Hallo Walde,

nele_sonntag hatte Recht: Du bist ein Gott!
Vielen Dank für die schnelle Antwort und das tolle Ergebniss.

Ich schau mir das mal in Ruhe an und versuche zu verstehen, es macht genau das, was ich will.

Vielen Dank!!!
Wow.

Walde = :dude:

Antworten