<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Mein Bedürfnis ist: Stapeln einer Tabelle mit einer dynamischen Auswahl der zu stapelnden Spalte.
Ich löste mich mit einer config-Tabelle, in der die Namen der zu stapelnden Spalten als Werte gespeichert sind, dann mache ich ein "get values" und
weist das Ergebnis einer Zeichenfolge zu. Zum Schluss füge ich diesen String dem Stack-Befehl hinzu.
es funktioniert, aber ...
jedes Mal in meinem Protokoll heißt es
Fehler gefunden. bei Zugriff oder Bewertung von "Spalten", Bad Argument (Eval (d))
Spalten (Eval (d)) "
ohne eval läuft es nicht, mit eval läuft es einwandfrei aber verschmutzt mein log. weiß jemand warum?
hier ist der code:
conf3 = open ("\ hier ist die Konfigurationstabelle");
// load config, es handelt sich um eine Excel-Datei, die von den Benutzern bearbeitet werden muss, um auszuwählen, welche "Klasse" sie im Endbericht haben möchten
// Diese Klassensätze sind ziemlich stabil und die meiste Zeit bleibt von der letzten Ausführung unberührt, aber manchmal muss eine Klasse hinzugefügt oder geändert werden
// es ist einfach so: column1: schwarz weiß rot column2: rot weiß etc
d = Spalte (conf3, i) << Werte erhalten;
// Ich bin der Index
// Ich mache es in einem Zyklus, jeder läuft für eine andere Tabelle, die gestapelt werden soll, und liest eine andere Spalte für einen anderen Stapelsatz
// Hier bekomme ich Werte aus der i-ten Spalte der Konfig und ordnet sie dem String d zu -> ist das gut?
snowhite = Open ("\ jmp_tables \ snowhite.jmp", unsichtbar);
// Laden Sie die zu stapelnde Tabelle
Snowhite << Stack (
Spalten (eval (d)),
Quellbezeichnungsspalte ("Klasse"), Gestapelte Datenspalte ("Dichte"), Name ("Nicht gestapelte Spalten") (Behalten (: Split,: Los-ID,: Geräte-ID,)), Ausgabetabelle (n)) ;
Ja, ich nahm an, dass dies ein Problem sein könnte, als ich bemerkte, dass es einen gewissen Wert gab.
Wie Sie sagten, stammt die Liste leider aus einer Excel-Dateispalte, die am Ende automatisch eine leere Zelle einfügt, um alle Spalten mit der gleichen Höhe zu haben, so dass die Werte "" unvermeidlich sind.
Ich werde Ihre Lösung ausprobieren, danke!
und ja, ich war in meiner Erklärung nicht korrekt: d ist keine Zeichenfolge, sondern eine Liste von Zeichenfolgen, da der Stack-Befehl eine Liste und keine Zeichenfolge benötigt!
Ich vermute, dass d ist hier keine Zeichenfolge, aber eine Liste von Zeichenfolgen als << Werte erhalten ergibt eine Liste (oder eine Matrix für fortlaufende Variablen). Wenn sich die Klassensätze in conf3 in der Anzahl der Elemente unterscheiden, enthält die Tabelle so viele Zeilen wie der größte Satz. Dann für einige Entscheidungen d enthält leere Zeichenfolgenelemente, z. B. "". Dies kann die Ursache des gemeldeten Fehlers sein (Spalten müssen einen anderen Namen als "" haben).
Mit der folgenden Codezeile können Sie alle Instanzen von "" aus entfernen d vor dem Stapeln. Das Aufräumen der Listen ist möglicherweise einfacher, aber dies sollte funktionieren.
Während ( Enthält ( d . "" ) > 0 . Entfernen von ( d . Enthält ( d . "" ) ) ) ;