Seite 1 von 1

Dynamische tabelle über mehr als eine Seite berechnen

Verfasst: 25.03.2013, 22:39
von golo
hallo

habe hier diesen code gefunden :


var page = xfa.layout.page(this)-1;
var fields = xfa.layout.pageContent(page , "field", 0);
i = 0;
this.rawValue = 0;
var total = 0;

for (var i=0; i <= fields.length-1; i++)
{
    //"summe" musst du natürlich durch en Namen deines aufzusummierenden Feldes ersetzen
    if (fields.item(i).name == "Zelle4")
    {
        total = total + fields.item(i).rawValue;
    }
}
 
this.rawValue = total;

geht soweit auch , so lange meine tabelle nur 1 seite lang wird.
wird die tabelle grösser als eine seite werden nur die summen der 2.seite berechnet.

was muss ich ändern

gruß

golo

Dynamische tabelle über mehr als eine Seite berechnen

Verfasst: 26.03.2013, 00:31
von nele_sonntag
Hallo golo,

dieses Script (aus Mustervorlagen: Pflichtfelder) durchläuft alle Seiten..das kannst du kombinieren.

Code: Alles auswählen

for(var i = 0; i < xfa.host.numPages; i++){
    var oFields = xfa.layout.pageContent(i, "field");
    var nodesLength = oFields.length;            
    for(var j = 0; j < nodesLength; j++){
        var oItem = oFields.item(j);
        
        if(oItem.ui.oneOfChild.className != "button" & oItem.rawValue == null | oItem.rawValue == ""){
            Valid = false;
            Sammelmeldung = Sammelmeldung + oItem.name + "\n";            
        }
    }
}
LG Mandy

Dynamische tabelle über mehr als eine Seite berechnen

Verfasst: 26.03.2013, 06:36
von golo
Hy

Danke für die schnelle Meldung.

Leider habe ich keine Ahnung was der Script bedeutet oder was man jetzt damit
machen kann.

Kopiere eigentlich nur Scripte aus anderen projekten.

Kannst du mir noch erzählen was ich damit jetzt machen soll-

MFG

Golo

Dynamische tabelle über mehr als eine Seite berechnen

Verfasst: 02.04.2013, 01:03
von nele_sonntag
Hallo golo,

da hilft es, wenn mann die einzelnen Begriffe in der Hilfe (F1) sich anschaut. ;-) Damit hätte man beide Skripte kombinieren können.

Code: Alles auswählen

this.rawValue = 0;
var total = 0;

for(var i = 0; i < xfa.host.numPages; i++)
{
    var oFields = xfa.layout.pageContent(i, "field");
    var nodesLength = oFields.length;            
    for(var j = 0; j < nodesLength; j++)
    
    if (oFields.item(j).name == "summe") 
    {
        total = total + oFields.item(j).rawValue;
    }
}
 
this.rawValue = total;
Falls es dich interessiert:
//numPages = Gibt die Anzahl der Seiten im aktuellen Dokument zurück.
   
//pageContent = Ruft Formularentwurfsobjekttypen von einer angegebenen Seite eines Formulars ab.
//param1 = Eine Ganzzahl, die die gewünschte Seitenzahl darstellt. Dieser Wert ist 0-basiert.
    //param2 = Gibt die folgenden Containertypen zurück:
    //field = Gibt die folgenden Formularentwurfsobjekte zurück:
    //    - Schaltfläche,                  - Kontrollkästchen,
    //    - Datums-/Uhrzeitfeld,     - Dropdown-Liste,
    //    - Unterschriftsfeld,           - Bildfeld,
    //    - Listenfeld,                      - Numerisches Feld,
    //    - Kennwortfeld,                - Optionsfeld und
    //    - Textfeld.
   
//length = Gibt die Anzahl der Objekte in der Liste an.
   
//item = Beschreibt einen nullbasierten Index zur Sammlung.
   
//className = Legt den Namen der Klasse dieses Objekts fest.

LG Mandy

Dynamische tabelle über mehr als eine Seite berechnen

Verfasst: 20.04.2015, 09:47
von Schwerin
Hallo nele_Sonntag,

ein Hinweis. Das Skript funktioniert einwandfrei, aber man sollte es nicht unter dem Ereignis "calculate" verwenden, da das PDF danach nicht mehr ordentlich zu benutzen ist. => Das PDF berechnet ununterbrochen, sodass eine Eingabe beinahe unmöglich wird...

Zur horizonal als auch vertikal Berechnung in Tabellen/Teilformularen eignet sich meiner Erfahrung nach FormCalc besser:

Horizonale/quer Berechnung (Zeile)

Sum(Feld1*Feld2) -- hier wird für jede Zeile das Produkt ermittelt

Vertikale/hoch Berechnung (Spalte)

Sum(Teilform'['*']'.Feld3) -- hier wird die Summe aller Feld3-Instanzen ermittelt (' entfernen, wird hier sonst nicht korrekt angezeigt)

Hinweis: FormCalc nicht vergessen einzustellen!
Viele Grüße

(Als Anhang eine PDF-Datei aus einem anderen Thread mit dem gleichen Verfahren)