Moin,
Ich habe eine Frage zum ansprechen eines Feldes einer Instanz.
Ich habe eine dynamische Tabelle in der ich die Anzahl der Tage zwischen zwei Daten errechne und in einem Ergebnisfeld (Dauer) ausgebe. Dies passiert alles in einer Tabellenzeile ("rechnung"). Der Button für die Berechnung liegt außerhalb.
Das Ausrechnen der Anzahl der Tage ist kein Problem. Jedoch möchte ich eine Schleife, die diese Berechnung für jede Zeile/Instanz vornimmt.
Soweit bin ich bisher:
if(nDate2 > nDate1){
for (var i = 1; i <= Tabelle1._rechnung.count; i++)
Tabelle1.Fußzeile.Anzahl.rawValue = Tabelle1._rechnung.count; // Das ist nur für Testzwecke, um zu prüfen, ob die korrekte Anzahl an Instanzen ausgelesen wird. Funktioniert.
Tabelle1.rechnung.Dauer.rawValue = Math.round((Number(nDate2) - Number(nDate1))/1000/60/60/24); // Hier liegt wahrscheinlich das Problem?! Irgendwie schaffe ich nicht, daß Textfeld "Dauer" mit den errechneten Werten zu befüllen. Spreche ich das Feld falsch an?
}
else{
app.alert("Aktuelles Datum ist älter als " + nDate2Pr);
}
Bin für Hinweise dankbar.
Gruß
Dennsen
Instanzen über den Index ansprechen
- FileAffairs
- Beiträge: 372
- Registriert: 15.09.2008, 20:14
Instanzen über den Index ansprechen
Hallo Dennsen,
mit Tabelle1.rechnung.Dauer sprichst Du nur die 1. Instanz von Tabelle1.rechnung an. Am besten geht es so:
Wichtig ist der "*" bei Rechnung, denn der bezieht sich auf alle Instanzen.
Lieben Gruß
Maruan Sahyoun | fileaffairs.de
mit Tabelle1.rechnung.Dauer sprichst Du nur die 1. Instanz von Tabelle1.rechnung an. Am besten geht es so:
Code: Alles auswählen
var oNodes = Tabelle1.resolveNodes("rechnung[*]);
for (var i=0, numItems = oNodes.length;i<numItems;i++) {
...
}
Lieben Gruß
Maruan Sahyoun | fileaffairs.de
Instanzen über den Index ansprechen
Hallo Maruan,
Danke für den Tipp, leider komme ich nicht ganz weiter. Anbei mal meine PDF. Vielleicht kannst du mal drüber schauen?!
Gruss
Dennsen
Danke für den Tipp, leider komme ich nicht ganz weiter. Anbei mal meine PDF. Vielleicht kannst du mal drüber schauen?!
Gruss
Dennsen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- FileAffairs
- Beiträge: 372
- Registriert: 15.09.2008, 20:14
Instanzen über den Index ansprechen
Hallo Dennsen,
Deine innere Schleife muss wie folgt lauten:
Zudem musst Du natürlich noch die Datumsabfragen zu nDate1 und nDate2 mit in die Schleife nehmen, da Du sonst immer das Datum der ersten Zeile abfragst. Also
Hoffe Du kommst mit den Hinweisen klar.
Schönen Gruß
Maruan Sahyoun | fileaffairs.de
Deine innere Schleife muss wie folgt lauten:
Code: Alles auswählen
for (var i=0, numItems = oNodes.length;i<numItems;i++) {
Tabelle1.Fußzeile.Anzahl.rawValue = Tabelle1._rechnung.count;
oNodes.item(i).Dauer.rawValue = Math.round((Number(nDate2) - Number(nDate1))/1000/60/60/24);
}
Code: Alles auswählen
var startDate = oNodes.item(i).DatumsUhrzeitfeld1.rawValue;
var endDate = oNodes.item(i).DatumsUhrzeitfeld2.rawValue;
...
Schönen Gruß
Maruan Sahyoun | fileaffairs.de
Instanzen über den Index ansprechen
Hallo Maruan,
Ich habe das Sktipt jetzt auf folgendes reduziert, aber leider noch immer ohne Erfolg.
Ich komme irgendwie nicht weiter.
Gruss
Dennsen
Ich habe das Sktipt jetzt auf folgendes reduziert, aber leider noch immer ohne Erfolg.
Code: Alles auswählen
var oNodes = xfa.resolveNodes("Tabelle1.rechnung[*]");
for (var i=0, numItems = oNodes.length;i<numItems;i++)
var startDate = oNodes.item(i).DatumsUhrzeitfeld1.rawValue;
var endDate = oNodes.item(i).DatumsUhrzeitfeld2.rawValue;
var nDate1 = util.scand("yyyy-mm-dd", startDate);
var nDate2 = util.scand("yyyy-mm-dd", endDate);
oNodes.item(i).Dauer.rawValue = Math.round((Number(nDate2) - Number(nDate1))/1000/60/60/24);
Gruss
Dennsen
- FileAffairs
- Beiträge: 372
- Registriert: 15.09.2008, 20:14
Instanzen über den Index ansprechen
Hallo Dennsen,
da fehlen geschweifte Klammern bei der for Schleife also
da fehlen geschweifte Klammern bei der for Schleife also
Code: Alles auswählen
var oNodes = xfa.resolveNodes("Tabelle1.rechnung[*]");
for (var i=0, numItems = oNodes.length;i<numItems;i++) {
var startDate = oNodes.item(i).DatumsUhrzeitfeld1.rawValue;
var endDate = oNodes.item(i).DatumsUhrzeitfeld2.rawValue;
var nDate1 = util.scand("yyyy-mm-dd", startDate);
var nDate2 = util.scand("yyyy-mm-dd", endDate);
oNodes.item(i).Dauer.rawValue = Math.round((Number(nDate2) - Number(nDate1))/1000/60/60/24);
}
Instanzen über den Index ansprechen
Jup, das wars.
Vielen Dank für die Hilfe!!
Vielen Dank für die Hilfe!!