Bindung für neu erzeugte Zeilen

Ob nun dynamisch agierende Subformulare, oder einfach nur Textfelder...
Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 27.07.2010, 07:04

Irgendwo ist da noch ein Fehler. Vom Prinzip her ist das genau so wie ich es möchte, nur funktionierts leider noch nicht.

Gruß

Benutzeravatar
FileAffairs
Beiträge: 372
Registriert: 15.09.2008, 20:14

Bindung für neu erzeugte Zeilen

Beitrag von FileAffairs » 27.07.2010, 08:23

Hallo Andon,

nun - der Code stellt nur das Prinzip dar. Du musst das dann dahingehend anpassen wie a) Deine Formularstruktur und b) die Datenstruktur ist.

Wenn Du Beispieldaten hast kann ich das ja für Dein Formular mal machen.

Lieben Gruß

Maruan Sahyoun // fileaffairs.de

Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 27.07.2010, 09:09

Ich habe die Beispielmerkmale CHAR_MENGE1 - 5 angelegt, um das zu testen.

Das Feld 'FS' hat die Bindung zum Merkmal CHAR_MENGE1.

Ich habe dann im Feld FS im Event initialize den Code eingefügt:

// Ermittle die Instanz des Feldes FS im Container und addiere
// 1 dazu, da die Instanzzählung mit 0 beginnt
var instanz = this.parent.instanceIndex + 1;

// Baue die Referenz auf den Knoten auf
var oNode = xfa.resolveNode("xfa.record.CHAR_MENGE"+instanz);

// lese den Wert des XML Knotens und schreibe diesen in das Feld
this.rawValue = oNode.value;

Leider gibt er immernoch  jeder neuen Zeile bzw jedem neuen Feld 'FS' das Merkmal CHAR_MENGE1 mit...

Benutzeravatar
FileAffairs
Beiträge: 372
Registriert: 15.09.2008, 20:14

Bindung für neu erzeugte Zeilen

Beitrag von FileAffairs » 27.07.2010, 17:08

Hallo Andon,

hier einmal das korrekte Script für das calculate Event. Bitte darauf achten im Script Editor JavaScript einzustellen.

Code: Alles auswählen

// Ermittle die Instanz des Feldes FS im Container und addiere
// 1 dazu, da die Instanzzählung mit 0 beginnt
var instanz = this.parent.parent.instanceIndex + 1;

// Baue die Referenz auf den Knoten auf
var oNode = xfa.resolveNode("xfa.record.CHAR_MENGE"+instanz);

// lese den Wert des XML Knotens und schreibe diesen in das Feld
this.rawValue = oNode.value;
 
Da fehlt natürlich noch Fehlerbehandlung wenn z.B. gar keine Daten gefunden werden.

Lieben Gruß

Maruan Sahyoun // fileaffairs.de


Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 28.07.2010, 07:18

Das scheint zu funktionieren, nur ich kann das Formular nun nicht mehr ausfüllen. Wenn ich im Feld FS etwas eintrage und irgendwo anders hinklicke ist der Inhalt weg. D.h. eventuell habe ich jetzt verschiedene Merkmale in jeder Zeile und kann ich keins davon befüllen...

Benutzeravatar
FileAffairs
Beiträge: 372
Registriert: 15.09.2008, 20:14

Bindung für neu erzeugte Zeilen

Beitrag von FileAffairs » 28.07.2010, 07:34

Hallo Andon,

das Beispiel ist ja auch so gedacht, das Daten aus SAP im Feld angezeigt werden. Damit ist das Feld erst einmal für eigene Dateneingaben gesperrt. Es sollte ja auch nur den Mechanismus der Datenbindung zeigen den Du nehmen kannst.

Da ich schlussendlich nicht weis was Du eigentlich genau erreichen möchtest kann es kein Beispiel sein das Deine gesamten Anforderungen abdeckt.

Schönen Gruß

Maruan Sahyoun // fileaffairs.de

Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 28.07.2010, 07:38

Die Eingaben sollen in dem Fall in die Merkmale CHAR_MENGE1-5 geschrieben werden. D.h. wenn ich das Dokument im Reader öffnen und im Feld einen Wert eintrage soll der in CHAR_MENGE1 gespeichert werden. Das klappt bei allen Feldern die eine Bindung haben. Durch das neue Skript zeigt es mir, wenn ich es mit XML exportiere nun alle 5 Merkmale an, nur bin ich nicht mehr in der Lage die Felder zu befüllen.

Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 29.07.2010, 14:12

Nochmals die Bitte mir einen kleinen Tipp zu geben. Ich muss nur noch in der Lage sein die Felder im Adobe Reader zu befüllen und sie zu speichern, denke das ist nur noch ein kurzer Weg bis zum Glück!

Vielen Dank für die Mühe.

Benutzeravatar
FileAffairs
Beiträge: 372
Registriert: 15.09.2008, 20:14

Bindung für neu erzeugte Zeilen

Beitrag von FileAffairs » 29.07.2010, 14:32

Hallo Andon,

ich würde an der Stelle wirklich empfehlen die Daten nicht als CHAR_MENGE1-5 sondern als CHAR_MENGE zu deklarieren. Du sparst Dir damit einen Haufen Arbeit. Es ist ja nicht nur damit getan die Daten im Reader so abzuspeichern, sondern die Daten müssen ja konsistent bleiben. Also z.B. geladen werden können, beim löschen einer Datenzeile angepasst werden ....

Mir ist nicht klar warum das mit CHAR_MENGE1-5 so sein muss!

Ansonsten gibt es 2 Lösungsansätze

a) die Datenbindung dynamisch zu erstellen. Das ist aber nicht so ohne weiteres möglich wenn Du mit dem Reader und Reader Extensions arbeitest, da dazu das Template Modell angepasst werden muss, was aber bei Reader Extensions Teil der Signatur ist.

b) das Record Modell selbst erstellst und löschst sprich die Datenknoten die in xfa.record enthalten sind direkt manipulierst.

Lieben Gruß

Maruan Sahyoun // fileaffairs.de


 



Andon
Beiträge: 17
Registriert: 02.12.2008, 17:55

Bindung für neu erzeugte Zeilen

Beitrag von Andon » 29.07.2010, 15:05

Ok, aber wenn ich nur das Merkmal CHAR_MENGE deklariere und mehrere Zeilen befülle, wird ja nur ein Wert dort eingetragen. In der XML File später wird dann nur das Merkmal mit einem Wert angezeigt. Die anderen Werte der anderen Zeile werden dann keinem Merkmal zugeordnet.

Antworten