Wie weise ich einer Variablen das Ergebnis einer SQL-Abfrage zu?Hallo! Ich bin neu im JMP/JSL-Scripting und habe einige Probleme, die Dinge herauszufinden. Ich habe das Gefühl, dass das, was ich versuche, sehr einfach sein sollte, aber nichts scheint so zu funktionieren, wie ich es erwarte, und Google lässt mich im Stich.
Was ich versuche: Ich habe eine einfache gespeicherte Prozedur, die einfach einen Kontrollgrenzwert aus unserer SQL-Datenbank zurückgibt, basierend auf einigen Parametern, die ich ihr übergebe. Ich versuche dann, diesen Wert einem Levey Jennings-Kontrollgrenzwert für eine Spalte zuzuweisen. Der folgende Code ist alles, was ich erreicht habe.
Dieser Code gibt eine Tabelle mit meinem gewünschten Wert aus.
// Get limit value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
vLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);Ich versuche dann, den Wert von „vLCL“ zu verwenden und ihn auf die Spalteneigenschaften einer anderen Tabelle anzuwenden.
// Change column property
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( vLCL ) )}
);Das obige Skript funktioniert einwandfrei, wenn ich „vLCL“ durch eine Zahl ersetze.
Ich glaube, ich komme nicht weiter: Wie verwende ich mein SQL-Ergebnis als tatsächliche Variable? Gibt es eine Möglichkeit, einen Wert direkt in eine Variable abzufragen, anstatt ihn in eine neue Tabelle zu ziehen?
Für jede Hilfe wäre ich sehr dankbar! Vielen Dank im Voraus!!
-Jane
Automatisierung und SkriptingBetreff: Wie weise ich einer Variablen das Ergebnis einer SQL-Abfrage zu?Wenn Ihre vLCL das enthält, wonach Sie suchen, müssen Sie sie nur noch auswerten. Hier ist eine Möglichkeit, wie Sie dies mit Spalteneigenschaften wie diesen tun können.
Eval(EvalExpr(
Data Table("testTable"):testColumn << Set Property(
"Control Limits",
{Levey Jennings(LCL(Expr(vLCL)))}
);
));
Wenn Sie nicht sicher sind, was in vLCL gespeichert ist, können Sie beispielsweise hinzufügen
show(vLCL);
nach der Abfrage und überprüfen Sie, ob sie das enthält, wonach Sie suchen
Betreff: Wie weise ich einer Variablen das Ergebnis einer SQL-Abfrage zu?Vielen Dank für die Antwort! Ich habe versucht, es so zu bearbeiten, wie Sie es geteilt haben, und wenn ich eine „Show“ mache, erhalte ich Folgendes:
vLCL = DataTable("SQL-Ergebnisse 799");
Ich denke also, mein Problem besteht darin, dass ich das Ergebnis der Abfrage nicht tatsächlich als numerischen Wert an vLCL zuweise. Wissen Sie, wie ich das korrigieren kann?
Danke noch einmal!!
Julia
Betreff: Wie weise ich einer Variablen das Ergebnis einer SQL-Abfrage zu?Hängt von der resultierenden Tabelle ab, die vLCL enthält. Die Indizierung von Datentabellen kann ausreichend sein, und manchmal müssen Sie sie möglicherweise mit << get rows where kombinieren.
Unten sehen Sie ein sehr einfaches Beispiel für die Indizierung einer Datentabelle, bei der Werte aus der ersten Zeile der LSL- und USL-Spalten übernommen werden
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
my_lsl = dt[1, "LSL"];
my_usl = dt[1, "USL"];
Datentabellen-Indizierung
Betreff: Wie weise ich einer Variablen das Ergebnis einer SQL-Abfrage zu?Oh mein Gott, danke, das ist genau das, was mir gefehlt hat!
Ich habe meinen Code wie folgt angepasst und er funktioniert perfekt!
// Get limit value -- returns a new table with a single value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
tblLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);
//assign table value to variable
vLCL = tblLCL[1,1];
// Change column property
Eval(EvalExpr(
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( Expr(vLCL) ) )}
);
));Danke, danke, danke!
-Jane