Comment créer des entrées utilisateur pour SQL où les filtres ?J'utilise donc un ODBC pour me connecter à SNOWFLAKE et exécuter des scripts. Je me demande comment configurer une fenêtre d'interface utilisateur avec une liste de filtres WHERE pour faciliter l'utilisation de ppl.
J'envisage une liste avec des fenêtres contextuelles à mapper ensuite sur une variable à alimenter dans le script SQL. possible?

//**SNOWFLAKE QUERY****************************************************************************************************
uid = Get Environment Variable( "USERNAME" );
sql_state="
/********************************/
SELECT distinct
column1
,column2
,etc
from Database
WHERE 1=1
and filter1 like '%qwerty%'
and filter2 in ('a', 'b', 'c')
--and filter3 = '54168'
--and filter4 <> 'that_thing'
--and filter5 not in ('group1','group2')
and Date >= CURRENT_DATE - 30 /*go back 30 days*/
";
snowflake_spc = Open Database( "DSN=SNOWFLAKE1;UID=account;PWD=password;", sql_state );
/****************************************************************************************************/
AutreScriptingRe : Comment créer des entrées utilisateur pour SQL où les filtres ?C'est certainement possible. Cela dépend beaucoup de vos compétences en matière de codage avec jsl et de la complexité du système (s'il s'agit simplement de filtrer où avec de simples clauses where, cela pourrait être assez simple à faire).
Deux choses à penser :
- Utilisez la chaîne de modèle, puis Eval Insert pour y ajouter des valeurs (ou concaténez simplement des chaînes ensemble).
- Comment voulez-vous gérer comme/= ? Boîtes d'affichage (boîte radio, case à cocher, zone de liste déroulante) ou peut-être un caractère spécifique dans la zone d'édition de texte qui indiquerait comment analyser le texte ?
- Comment gérer plusieurs conditions similaires (filter1 comme quelque chose ou filter2 comme quelque chose) ?
- Comment gérer non?
- La fenêtre modale vous permet de gérer facilement le flux de script
- Réfléchissez à la façon dont le système pourrait être étendu plus tard
- Scripting Guide et Scripting Index seront d'une grande aide. L'aide de JMP vous aidera également avec différentes boîtes d'affichage.
Vous trouverez ci-dessous un exemple très simple d'utilisation de la chaîne de modèle, puis d'insertion d'eval pour créer le SQL final.
Names Default To Here(1);
sqlTemplate = "\[
select *
from *
where 1=1
^filter1Str^
^filter2Str^
]\";
filter1Str = "";
filter2Str = "";
rbSel = {"like", "in", "=", "not in", "not like"};
ex = New Window("Dialog() example",
<<MODAL></MODAL>
J'ai construit un système assez similaire, qui crée des requêtes SQL complètes en fonction des entrées et des choix de l'utilisateur dans une interface utilisateur (et je suis actuellement en train de réécrire complètement cela quand j'ai le temps, car l'étendre est devenu trop difficile).
Re : Comment créer des entrées utilisateur pour SQL où les filtres ?Cela se fait facilement avec le Générateur de requêtes SQL .
Dans les filtres, il y a une option dans les filtres à inviter à l'exécution et JMP vous demandera. Pas besoin de créer vos propres dialogues.

En savoir plus et parcourir un exemple dans Construire une requête SQL .