Comment attribuer un résultat de requête SQL à une variable ?Bonjour ! Je suis nouveau dans le domaine des scripts JMP/JSL et j'ai du mal à comprendre certaines choses. J'ai l'impression que ce que j'essaie de faire devrait être très simple, mais rien ne semble fonctionner comme je l'espérais et Google me fait défaut.
Ce que j'essaie de faire : j'ai une procédure stockée simple qui renvoie simplement une valeur de limite de contrôle de notre base de données SQL en fonction de quelques paramètres que je lui transmets. J'essaie ensuite d'assigner cette valeur à une limite de contrôle Levey Jennings pour une colonne. Le code ci-dessous est tout ce que j'ai obtenu.
Ce code génère un tableau avec la valeur souhaitée.
// 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 || "'"
);J'essaie ensuite d'utiliser la valeur de « vLCL » et de l'appliquer à différentes propriétés de colonne de table.
// Change column property
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( vLCL ) )}
);Le script ci-dessus fonctionne bien lorsque je remplace « vLCL » par un nombre.
Je pense que je suis bloqué, comment utiliser mon résultat SQL comme une variable réelle ? Existe-t-il un moyen d'interroger une valeur directement dans une variable au lieu de l'extraire dans une nouvelle table ?
Toute aide à ce sujet serait grandement appréciée ! Merci d'avance !!
-Jeanne
Automatisation et scriptsRe : Comment attribuer un résultat de requête SQL à une variable ?Si votre vLCL a ce que vous recherchez, il vous suffit de l'évaluer, voici une option pour le faire avec des propriétés de colonne comme celle-ci
Eval(EvalExpr(
Data Table("testTable"):testColumn << Set Property(
"Control Limits",
{Levey Jennings(LCL(Expr(vLCL)))}
);
));
Si vous n'êtes pas sûr de ce qui est stocké dans vLCL, vous pouvez par exemple ajouter
show(vLCL);
après la requête et vérifiez qu'elle contient ce que vous recherchez
Re : Comment attribuer un résultat de requête SQL à une variable ?Merci pour la réponse ! J'ai essayé de le modifier selon ce que vous avez partagé et lorsque je fais un « Show », j'obtiens ceci :
vLCL = DataTable("Résultats SQL 799");
Je pense donc que mon problème est que je n'attribue pas réellement le résultat de la requête à vLCL en tant que valeur numérique ? Savez-vous comment je peux corriger cela ?
Merci encore!!
Jeanne
Re : Comment attribuer un résultat de requête SQL à une variable ?Cela dépend de la table résultante que contient vLCL. L'abonnement à la table de données peut être suffisant, et parfois vous devrez peut-être le combiner avec << get rows where.
Vous trouverez ci-dessous un exemple très basique d'abonnement à une table de données qui prend les valeurs de la première ligne des colonnes LSL et USL.
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"];
Inscription aux tableaux de données
Re : Comment attribuer un résultat de requête SQL à une variable ?Oh mon Dieu merci, c'est exactement ce qui me manquait !
J'ai ajusté mon code comme suit et cela fonctionne parfaitement !
// 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) ) )}
);
));Merci merci merci !
-Jeanne