rince1984
Mitglied
Hallo zusammen,
ich bin gerade dabei ein JavaScript-Macro für ein spezielles Programm zu schreiben (PrintShop Mail) und komme dabei einfach nicht weiter. Ich möchte einen bestimmten Eingabewert (kommt aus einer geladenen "Datenbank" bzw. "Datenquelle") in einem mehrdimensionalen Array speichern und ausgeben bevor die nächste ID kommt.
Software PrintShop Mail:
PrintShop Mail ist eine Druckproduktionssoftware zur Personalisierung. Man kann dort eine Datenbank laden (Excel-, Access-, CSV-, TXT-Dateien sind die am häufigsten genutzten Formate) und die Datenbankfelder als Variablen in seinem Layout platzieren. Diese Variablen werden dann datensatzweise mit dem jeweiligen Datenfeldwert befüllt.
Es ist möglich JavaScript-Macros einzubinden (.js Datei, wird im Programmverzeichnis abgelegt) und diese als Funktion innerhalb von PrintShop Mail zu verwenden.
Beispiel-Aufbau eines PrintShop Mail Macros:
Bei diesem Macro wird anhand von Eingabewerten ein Zähler um 1 erhöht, wenn ein Wechsel eines bestimmten Wertes erfolgt. Wobei die hier ausgewiesene Variable "wechsel" ein True oder False liefert, weil in PrintShop Mail eine andere Funktion verwendet wird die bei einem Wertwechsel True oder False ausgibt.
In PrintShop Mail wird bei jedem Datensatz der aktuelle der Wert der Variablen _counter ausgegeben.
Gegebenheiten:
Ich habe eine .xls-Datei als Datenbank/-quelle für mein Programm mit folgendem Aufbau.
Kunde | ID | Zaehler | Farbe
Thomas | 1 | 0 | Blau
Thomas | 1 | 1 | Rot
Thomas | 1 | 2 | Gelb
Michael | 2 | 0 | Grün
Marco | 3 | 0 | Orange
Marco | 3 | 1 | Rot
Anforderung:
Ich möchte alle Farben zu einer ID in einem Array speichern und diese Werte ausgeben, sobald die letzte Zeile dieser ID erreicht wurde, wobei jede ID unterschiedlich viele Werte haben kann.
Beispiel:
Bei Datensatz 5 (Zeile 4) sollen die Farben Blau, Rot, Gelb ausgegeben werden.
Bei Datensatz 6 (Zeile 5) soll die Farbe Grün ausgegeben werden.
Bei Datensatz 8 (Zeile 7) sollen die Farben Orange, Rot ausgegeben werden.
Bisheriger Ansatz:
Ich habe aktuell folgenden Code geschrieben in dem ich einen mehrdimonsianelen Array erschaffe und mit meinen Werten befülle. Sobald der Wert der Variablen readwrite „READ“ ist werden die zum Datensatz passenden Array-Werte ausgegeben.
Ausgabe-Beispiel:
Datensatz 1 ergibt: Blau
Datensatz 2 ergibt: Blau_Rot
Datensatz 3 ergibt: Blau_Rot_Gelb
Datensatz 4 ergibt: Grün
Datensatz 5 ergibt: Orange
Datensatz 6 ergibt: Orange_Rot
Das wäre für mich auch schon in Ordnung wenn ich nun bei dem letzten Datensatz einer ID (in diesem Fall z.B. Datensatz 3) eine zusätzliche Markierung hätte die ich dann in meinem Programm abfragen kann.
Hilfreiche Ausgabe:
„_Ende“ hinter jeden Ausgabestring einer letzten ID-Zeile.
Datensatz 1 ergibt: Blau
Datensatz 2 ergibt: Blau_Rot
Datensatz 3 ergibt: Blau_Rot_Gelb_Ende
Datensatz 4 ergibt: Grün_Ende
Datensatz 5 ergibt: Orange
Datensatz 6 ergibt: Orange_Rot_Ende
Vielleicht hat hier ja jemand eine Idee oder gar eine Lösung für mein Problem?
Vielen Dank bereits vorab für alle die sich die Zeit nehmen meinen Beitrag zu lesen, sich Gedanken machen und mir Ansätze oder sogar eine Lösung geben!
LG
rince
ich bin gerade dabei ein JavaScript-Macro für ein spezielles Programm zu schreiben (PrintShop Mail) und komme dabei einfach nicht weiter. Ich möchte einen bestimmten Eingabewert (kommt aus einer geladenen "Datenbank" bzw. "Datenquelle") in einem mehrdimensionalen Array speichern und ausgeben bevor die nächste ID kommt.
Software PrintShop Mail:
PrintShop Mail ist eine Druckproduktionssoftware zur Personalisierung. Man kann dort eine Datenbank laden (Excel-, Access-, CSV-, TXT-Dateien sind die am häufigsten genutzten Formate) und die Datenbankfelder als Variablen in seinem Layout platzieren. Diese Variablen werden dann datensatzweise mit dem jeweiligen Datenfeldwert befüllt.
Es ist möglich JavaScript-Macros einzubinden (.js Datei, wird im Programmverzeichnis abgelegt) und diese als Funktion innerhalb von PrintShop Mail zu verwenden.
Beispiel-Aufbau eines PrintShop Mail Macros:
Javascript:
_counter = 0;
function psmCOUNT_CHANGED(wechsel,datensatz) {
if(datensatz == 1) {
_counter = 1;
}
if(wechsel) {
_counter = _counter + 1;
}
return _counter;
}
Bei diesem Macro wird anhand von Eingabewerten ein Zähler um 1 erhöht, wenn ein Wechsel eines bestimmten Wertes erfolgt. Wobei die hier ausgewiesene Variable "wechsel" ein True oder False liefert, weil in PrintShop Mail eine andere Funktion verwendet wird die bei einem Wertwechsel True oder False ausgibt.
In PrintShop Mail wird bei jedem Datensatz der aktuelle der Wert der Variablen _counter ausgegeben.
Gegebenheiten:
Ich habe eine .xls-Datei als Datenbank/-quelle für mein Programm mit folgendem Aufbau.
Kunde | ID | Zaehler | Farbe
Thomas | 1 | 0 | Blau
Thomas | 1 | 1 | Rot
Thomas | 1 | 2 | Gelb
Michael | 2 | 0 | Grün
Marco | 3 | 0 | Orange
Marco | 3 | 1 | Rot
Anforderung:
Ich möchte alle Farben zu einer ID in einem Array speichern und diese Werte ausgeben, sobald die letzte Zeile dieser ID erreicht wurde, wobei jede ID unterschiedlich viele Werte haben kann.
Beispiel:
Bei Datensatz 5 (Zeile 4) sollen die Farben Blau, Rot, Gelb ausgegeben werden.
Bei Datensatz 6 (Zeile 5) soll die Farbe Grün ausgegeben werden.
Bei Datensatz 8 (Zeile 7) sollen die Farben Orange, Rot ausgegeben werden.
Bisheriger Ansatz:
Ich habe aktuell folgenden Code geschrieben in dem ich einen mehrdimonsianelen Array erschaffe und mit meinen Werten befülle. Sobald der Wert der Variablen readwrite „READ“ ist werden die zum Datensatz passenden Array-Werte ausgegeben.
Javascript:
function psmSCHLEIFE_tut(ID,Zaehler,Farbe,readwrite) {
schleife[ID] = new Array();
if ( Zaehler == 0) {
schleife[ID][0] = speicherwert;
ds1 = schleife[ID][0];
x = ds1;
}
if ( Zaehler == 1) {
schleife[ID][1] = speicherwert;
ds2 = schleife[ID][1];
x = ds1 + "_" + ds2;
}
if ( Zaehler == 2) {
schleife[ID][2] = speicherwert;
ds3 = schleife[ID][2];
x = ds1 + "_" + ds2 + "_" + ds3;
}
if ( Zaehler == 3) {
schleife[ID][3] = speicherwert;
ds4 = schleife[ID][3];
x = ds1 + "_" + ds2 + "_" +ds3 + "_" + ds4;
}
if ( Zaehler == 4) {
schleife[ID][4] = speicherwert;
ds5 = schleife[ID][4];
x = ds1 + "_" + ds2 + "_" +ds3 + "_" + ds4 + "_" + ds5;
}
return x;
Ausgabe-Beispiel:
Datensatz 1 ergibt: Blau
Datensatz 2 ergibt: Blau_Rot
Datensatz 3 ergibt: Blau_Rot_Gelb
Datensatz 4 ergibt: Grün
Datensatz 5 ergibt: Orange
Datensatz 6 ergibt: Orange_Rot
Das wäre für mich auch schon in Ordnung wenn ich nun bei dem letzten Datensatz einer ID (in diesem Fall z.B. Datensatz 3) eine zusätzliche Markierung hätte die ich dann in meinem Programm abfragen kann.
Hilfreiche Ausgabe:
„_Ende“ hinter jeden Ausgabestring einer letzten ID-Zeile.
Datensatz 1 ergibt: Blau
Datensatz 2 ergibt: Blau_Rot
Datensatz 3 ergibt: Blau_Rot_Gelb_Ende
Datensatz 4 ergibt: Grün_Ende
Datensatz 5 ergibt: Orange
Datensatz 6 ergibt: Orange_Rot_Ende
Vielleicht hat hier ja jemand eine Idee oder gar eine Lösung für mein Problem?
Vielen Dank bereits vorab für alle die sich die Zeit nehmen meinen Beitrag zu lesen, sich Gedanken machen und mir Ansätze oder sogar eine Lösung geben!
LG
rince