So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelIch möchte gerne eine Formelindikatorspalte für Doppeldaten erstellen, indem Sie den folgenden JSL-Code anwenden:
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
Obwohl ich die richtigen Ergebnisse bekomme, erzeugt der Code viele Fehlermeldungen. Es wäre toll, wenn der Code verbessert werden könnte.
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelIch hoffe, dass es ein Community-Mitglied gibt, das Ihre Frage besser lösen kann als die unten beschriebene Methode. In Anbetracht dessen, was Sie möchten, gibt es widersprüchliche Probleme, wenn Sie versuchen, die Auswahlfunktion der Datentabelle zu verwenden, aber dann möchten Sie die Auswahl aufheben. Das würde die Neuberechnung der Formel erzwingen. Was ich also getan habe, ist, die Formel eine Untermenge der Datentabelle erstellen zu lassen, Ihre Berechnungen an der untergeordneten Datentabelle durchzuführen (die Auswahl zu isolieren) und dann die Ergebnisse aus der Untermenge in die ursprüngliche Datentabelle zurückzulesen. und löschen Sie dann die subsettierte Datentabelle. Schauen Sie nach, ob Sie verstehen, was ich mache. Es scheint zu funktionieren.
If( Row() == 1,
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2 );
dt2 = dt << subset(
private,
dt,
selected rows( 0 ),
selected columns( 1 )
);
dt2 << Select Duplicate Rows();
dt2 << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 )
);
);
x = dt2:MultipleData[Row()];
If( Row() == N Rows( dt ),
dt << clear column selection;
Close( dt2, nosave );
);
x;
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelHallo Jim,
danke für deine Unterstützung. Ich habe versucht, mein Thema zu vereinfachen. Mein Ziel ist es, eine Spalte zu erstellen, in der die mehreren Daten angesprochen werden. Ich konnte dies mit der folgenden JSL machen:
Names Default To Here( 1 );
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
für mehrere Daten aus Spalte 1 und 2 der angehängten Datei. Das funktioniert gut. Da die Arbeitsdateien jedoch häufig über SQL mit neuen Daten aktualisiert werden, würde ich es vorziehen, eine Formelspalte "MultipleData" zu erstellen.
Leider bekomme ich nur Nullen, wenn der letzte Code angewendet wird. Was könnte eine Lösung sein?
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelOK ... mein vorheriger Kommentar basierte auf der Annahme, dass der Code in offenem Code ausgeführt wurde und nicht als Formel. Bei der Verwendung dieser Formel gibt es einige Bedenken.
- Der Zeiger auf die Datentabelle dt muss in der Formel definiert werden, wenn Sie darauf verweisen möchten.
- Sie verwenden Funktionen, die sich beim Ausführen automatisch durch alle Zeilen bewegen. Formeln durchlaufen auch alle Zeilen in einer Datentabelle und führen die Formel einmal für jede Zeile aus. Wenn Sie den Code so verwenden, wie Sie dies tun, bedeutet dies, dass Sie die "Select Duplicate Rows" immer und immer wieder ausführen. In diesem Fall müssen Sie ihn nur einmal ausführen.
- Die rote Linie für Ihre erste Zeile in der Formel ist wirklich eine Warnung und kein Fehler.
Nachfolgend finden Sie eine Version Ihres Codes, die ich verwenden würde, wenn Sie diese als Formel verwenden.
If( Row() == 1,
dt = Current Data Table();
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
);
Ich weiß nicht genau, warum Sie dies in eine Formelspalte einfügen möchten, da die Spalte, in der Sie sie einfügen, alle fehlenden Werte enthält ... also sollten Sie Ihren Prozess überdenken.
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelZuerst
Im Formeleditor wird die erste Codezeile mit der roten Linie markiert.
Zweite
Wenn die Formel angewendet wird, wird ein Popup-Fenster mit den folgenden Meldungen angezeigt: "Send Expects Scriptable Objects ...; Send, dt << / * ### * /" oder "Selection () / * ### * / "
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelIhr Code sieht gut aus ...... welche Fehler bekommen Sie?
Betreff: So erstellen Sie eine Indikatorspalte für Doppeldaten mit einer FormelHallo Jim,
Danke für die Lösung. Ich habe Ihren Code mit einer Formelspalte in einer großen Datenbank (etwa 100.000 Zeilen und 100 Spalten) getestet. Es hat gut funktioniert.
Meine Lösung ist der folgende JSL-Code:
Names Default To Here( 1 );
dt = Current Data Table();
//Delete preveious version of the indicator column
dt << Delete Columns("MultipleData");
wait(2);
//Create the new version of the indicator column
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
dt << Clear Column Selection();Wie bereits erwähnt, wird eine Formulierungslösung wie Ihr Code bevorzugt. Dies ist bequemer, falls der Datensatz aktualisiert wird.