Hallo,
Ich versuche also, etwas ziemlich Einfaches zu tun, aber bei der Zeilenauswahl tritt ein seltsames Verhalten auf.
Also habe ich eine Tabelle mit einigen Mischungsdesigndaten erhalten. Ich habe 12 Spalten für 12 verschiedene Mischungskomponenten. Es gibt drei Spalten, die für jede Zeile angeben, welche drei Komponenten vorhanden sind, mit den Namen comp A, comp B und comp C.
Die Läufe wurden in Serien unterteilt, die mit einem Buchstaben von A bis K benannt sind. Ich möchte ein Skript erstellen, um mehrere Anpassungsmodelle gleichzeitig auszuführen. Dazu muss ich Untertabellen mit den richtigen Zeilen erstellen. Grundsätzlich wählen Sie jede Serie einzeln mithilfe der Spalte „:Serie“ aus. Mein Problem ist, dass es auch Linien mit einer einzelnen Komponente gibt. Ich habe das folgende Skript erstellt.
Names Default To Here( 1 );
Delete Symbols();
mytable = Current Data Table();
Serieslist = {} ;
For Each Row(
If(
:Series !="X" & !Contains item (:Series, Serieslist),
Serieslist = Insert (Serieslist, :Series)
);
);
mytable << clear selected row states ();
Letter = Serieslist [1];
mytable << Row Selection( Select where (:Series == Letter) );
S1 = :Comp A[mytable<<GET selected="" rows=""></GET>Wenn ich jetzt versuche, eine Auswahl mit den richtigen Linien zu treffen, funktioniert es nicht so, wie es sollte. Mithilfe einer Reihe von Print()-Anweisungen habe ich sichergestellt, dass meine Werte korrekt waren.
Überprüfen Sie nun den folgenden Code:
</CODE></PRE><P> </P><PRE><CODE class=" language-jsl">mytable << Row Selection( Select where (:Ref == complist[1]) );
wait (2);
mytable << Row Selection( Select where (:Ref == complist[2]) );
wait (2);
mytable << Row Selection( Select where (:Ref == complist[3]) );
wait (2);
mytable << Row Selection( Select where (:Ref == complist[1]) );
wait (2);
mytable << Row Selection( Select where (:Ref == complist[2]), current selection ("extend") );
wait (2);
mytable << Row Selection( Select where (:Ref == complist[3]), current selection ("extend") );
mytable << Row Selection( Select where (:Ref == complist[1]) );
wait (2);
mytable << Row Selection( Select where (:Ref == "comp 6"), current selection ("extend") );
wait (2);
mytable << Row Selection( Select where (:Ref == "comp 12"), current selection ("extend") );
Die ersten drei Anweisungen wählen die richtigen Zeilen aus. Aber wenn ich versuche, mehrere Zeilen auszuwählen, verwende ich die aktuelle Auswahl („erweitern“) Argument, es funktioniert nicht. Vermisse ich etwas?
Wenn ich in der letzten Zeile manuell einen Wert in das Argument „select where()“ schreibe, funktioniert es zwar, aber wenn der Code eine Auswertung für „==“ durchführen muss, funktioniert es nicht mehr. Hat jemand eine Lösung? Ich bin mir ziemlich sicher, dass es einen besseren Weg gibt, dies zu tun, aber ich würde trotzdem gerne verstehen, warum es nicht funktioniert. Ist es etwas mit Eval Parse?
Ich habe die Datentabelle mit dem Skript angehängt.