JMP 13 JSL qui transmet des variables à l'instruction Oracle SQLJe travaille avec un collègue qui dispose d'un script JMP 13 pour définir des variables à l'aide de fenêtres modales.La sélection de l'utilisateur définit ensuite les variables que nous souhaitons transmettre dans une section de base de données ouverte de notre script dans l'instruction SQL.Le tableau de données est mis à jour pour quel four est sélectionné dans la fenêtre modale.Nous sélectionnons ensuite la colonne four pour transmettre cette valeur dans notre instruction SQL.
Exemple.
OvenList={18,22};
nw=New Window( " Reference Units",<<MODAL></MODAL>
Le problème que nous avons est le suivant...
Oven_id : le script passe [2,2]
test_part_id : le script réussit {"partid1","partid2"}
Des questions
1) Comment sélectionner la première valeur de la colonne four à définir comme Oven_id qui est transmise à l'instruction SQL ?
2) Oracle ne semble pas aimer les parenthèses et les guillemets doubles. Cela fonctionne si nous codons en dur les guillemets simples et les identifiants de pièces, par exemple : IN('partid1','partid2')
AIDE!!!
Re : JMP 13 JSL qui transmet des variables à l'instruction Oracle SQLHeureux que cela ait fonctionné pour vous.La construction ^varname^ doit être utilisée avec evalinsert .L'utilisation de evalinsert permet un code un peu plus propre et vous n'avez pas besoin de convertir des nombres en chaînes avec char().
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql = evalinsert(
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = ^oven_id[1]^
AND db.table.field In ^test_part_in_list^ ORDER BY test_part_id ASC");
Open Database( -- connection string info -- , sql, "dataset");Re : JMP 13 JSL qui transmet des variables à l'instruction Oracle SQLpmroz,
Merci pour votre réponse rapide et votre suggestion de code.Cela a parfaitement fonctionné pour notre application.Merci beaucoup.Nous avons essayé toutes sortes de solutions sur différents forums en utilisant ^var_name^, ^||var_name||^, etc. Votre solution en construisant la liste était l'étape de solution qui nous manquait.
Re : JMP 13 JSL qui transmet des variables à l'instruction Oracle SQLObtenir des valeurs renvoie une liste, vous devez donc vous référer à des éléments individuels du tableau pour les utiliser.Vous pouvez utiliser concaténer des éléments pour créer une liste IN.Cela fonctionnera :
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql =
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = " || char(oven_id[1]) || "
AND db.table.field In " || test_part_in_list || "ORDER BY test_part_id ASC";
Open Database( -- connection string info -- , sql, "dataset");