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 je peux configurer une fenêtre d'interface utilisateur avec une liste de filtres WHERE pour faciliter son utilisation par ppl.
J'envisage une liste avec des popups à 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 );
/****************************************************************************************************/
Accès aux donnéesRe : Comment créer des entrées utilisateur pour SQL où des 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 pour inviter à l'exécution et JMP vous demandera. Pas besoin de créer vos propres boîtes de dialogue.

En savoir plus et parcourir un exemple dans Créer une requête SQL .
Re : Comment créer des entrées utilisateur pour SQL où des filtres ?C'est tout à fait possible. Cela dépend beaucoup de vos compétences en codage avec jsl et de la complexité du système (s'il s'agit simplement de filtrer where avec des clauses where simples, 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 simplement concaténer des chaînes ensemble).
- Comment voulez-vous gérer like/= ? 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 (filtre1 comme quelque chose ou filtre2 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 manière dont le système pourrait être étendu ultérieurement
- Le guide de script et l'index de script 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 d'une chaîne de modèle, puis d'utilisation d'eval insert 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 construit des requêtes SQL complètes en fonction des entrées de l'utilisateur et des choix dans une interface utilisateur (et je fais actuellement une réécriture complète là-dessus quand j'ai le temps, car l'étendre est devenu trop difficile).