Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?I'm a beginner with application builders and I want to achieve the following: I'm currently retrieving data from a database using SQL with a specific time period. However, instead of directly modifying the SQL code to change the period, I want to be able to change it via a GUI. I'm currently executing this with JSL, and I want to replace the [HERE] part of the SQL query.
Exemple JSL :
// Get a handle to the data table
dt = Current Data Table();
unique = Function({a}, // input: List, output: List
{aa=Associative Array(),nr=NItems(a),i,aKeys,nUnique,aUnique={}},
For( i=1, i<=nr, i++, aa << insert( a[i] ) );
aKeys = aa << GetKeys;
nUnique = NItems( aKeys );
For( i = 1, i <= nUnique, i++, InsertInto(aUnique,aKeys[i]) );
aUnique
);
dofun = Function({},{months,varName,dType},
months = SampleRateInput << Get;
varName = VarList << GetSelected;
dType = Column(dt,varName[1]) << GetDataType( "English");
If(dType!="Character",
Dialog(Title("Alert"),"Data Type of Variable should be Character. ");
Throw()
);
dt << ClearSelect;
dt << SelectRows( selIdx );
);
OKButtonPress=Function({this},
// This function is called when the OK button is pressed
(thisModuleInstance << Get Box) << Close Window;
dofun;
);
CancelButtonPress=Function({this},
// This function is called when the Cancel button is pressed
(thisModuleInstance << Get Box) << Close Window;
);
New SQL Query(
Version( 130 ),
Connection( ),
QueryName( ),
Select( ),
From(
Table( ),
),
Where(
Custom(
"t1.msr_dt >= DATEADD(month, -[HERE], CURRENT_DATE)",
UI( Custom( Base( "Continuous" ) ) )
)
)
) << Run Foreground( UpdateTable( Current Data Table() ) );
Accès aux donnéesRe : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?Mon JMP est la version 19.
Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?Avez-vous votre propre interface utilisateur graphique personnalisée que vous souhaitez utiliser pour modifier la valeur ? Pouvez-vous extraire cette valeur ? Je pense qu'il suffit d'évaluer les variables dans le bloc Where(Custom()) (du moins avec JMP18).
Names Default To Here(1);
myval = 150;
dt = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(["Big Class" => "\C:\Program Files\JMP\JMPPRO\18\Samples\Data\Big Class.jmp"]),
QueryName("SQLQuery2"),
Select(Column("name", "t1")),
From(Table("SQLQuery1", Alias("t1"))),
Where(
Custom(
Eval Insert("t1.weight >= ^myval^"),
UI(Custom(Base("Continuous"))))
)
) << Run Foreground;
Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?jthi-san, Arigatougozaimasu.
L'interface graphique décrite précédemment dans le JSL était une version légèrement simplifiée du JSL de l'application d'exemple. L'interface graphique que je souhaite créer ressemble à celle de l'image ci-jointe.
Je comprends que je peux passer des variables dans des instructions SQL en les entourant de « ^ » !
Quel code JSL dois-je écrire pour exécuter une nouvelle requête SQL lorsque le bouton OK de l'interface graphique est enfoncé ? 
Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?Salut @TamedZebra ,
Sans rapport avec le côté JSL, avez-vous essayé d'utiliser le générateur de requêtes de base de données ? Il fournit une interface graphique avec des filtres permettant de modifier les plages de dates.
Merci,
Ben
Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?@Ben_BarrIngh , Arigatougozaimasu.
Il nous est possible de sauvegarder un script sur une table de données, et si le script est écrit « requête SQL », nous pouvons mettre à jour la table de données à partir de la base de données en un seul clic.
Mais changer le SQL sur le script ou le générateur de requêtes prend un peu de temps et un peu d'effort.
Je voudrais donc éditer SQL via l'interface graphique qui apparaît en appuyant sur un script sur la table de données.

Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?Je n'utilise pas de générateur d'applications, mais je développe tout moi-même en JSL. Cet exemple d'application n'exécute pas de requête SQL sur la base de données, mais utilise une table JMP comme base de données. Sa version simplifiée offre néanmoins quelques idées générales.
Names Default To Here(1);
initval = 150;
run_query = Expr(
months_to_query = neb_months << get;
dt = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(["Big Class" => "\C:\Program Files\JMP\JMPPRO\18\Samples\Data\Big Class.jmp"]),
QueryName("QueryMonths"),
Select(Column("name", "t1")),
From(Table("Big Class", Alias("t1"))),
Where(
Custom(
Eval Insert("t1.weight >= ^months_to_query^"),
UI(Custom(Base("Continuous"))))
)
) << Run Foreground;
wait(0);
nw << Close Window;
);
nw = New Window("Query Data",
V List Box(
Panel Box("How Long",
Lineup Box(N Col(2),
Text Box("Months: "),
neb_months = Number Edit Box(initval),
)
),
Lineup Box(N Col(2),
Button Box("OK",
run_query
),
Button box("Cancel",
nw << close window;
)
)
)
);
Write();
Re : Comment puis-je utiliser le texte saisi dans la zone de texte comme variables sur SQL ?obtenir --> Obtenir le texte
J'ai pu appliquer les modifications mentionnées ci-dessus dans JMP 19. J'ai obtenu ce que je souhaitais. Merci !