Dynamische tabelle über mehr als eine Seite berechnen

Alles was sich mit dem Thema dynamische XML Formulare auf Basis des LiveCycleDesigners beschäftigt
Antworten
golo
Beiträge: 42
Registriert: 23.03.2013, 13:45

Dynamische tabelle über mehr als eine Seite berechnen

Beitrag von golo » 25.03.2013, 22:39

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

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

Dynamische tabelle über mehr als eine Seite berechnen

Beitrag von nele_sonntag » 26.03.2013, 00:31

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

golo
Beiträge: 42
Registriert: 23.03.2013, 13:45

Dynamische tabelle über mehr als eine Seite berechnen

Beitrag von golo » 26.03.2013, 06:36

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

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

Dynamische tabelle über mehr als eine Seite berechnen

Beitrag von nele_sonntag » 02.04.2013, 01:03

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

Schwerin
Beiträge: 28
Registriert: 11.11.2014, 20:07

Dynamische tabelle über mehr als eine Seite berechnen

Beitrag von Schwerin » 20.04.2015, 09:47

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)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten