Script de requête SQL modalBonjour,
Je me demande s'il est possible d'ajouter un "comportement modal" à une requête SQL, lorsque la requête est scriptée. Voici mon exemple :
***** Début du script *****
Nouvelle requête SQL(
Connexion(...),
Sélectionner(...),
Depuis(...)
) << Modifier << Modal ;
doStuffWithTheTableFromTheQuery();
***** Fin du script *****
Je sais que "<< Modal" ne fonctionne pas. Je sais aussi qu'il existe un PostQueryScript(). Cependant, je préfère écrire mon script sans lui. Existe-t-il un moyen de rendre la requête SQL modale ?
Merci!
Re : Script de requête SQL modalParfait!
Merci,
Victor
Re : Script de requête SQL modalHé, vkessler,
Changement
) << run;
pour:
) << run foreground;
courir par lui-même exécutera la requête en arrière-plan si c'est pour cela que vos préférences sont configurées (et c'est la valeur par défaut), c'est pourquoi doStuffWithTheTableFromTheQuery() court trop tôt. Si tu utilises Exécuter le premier plan , le script attendra la fin de la requête avant de continuer.
HTH,
Éric
Re : Script de requête SQL modalSalut Éric,
Merci pour vos conseils. Avec un filtre invité, la requête devient modale. Cependant, cela ne résout malheureusement pas mon problème. En effet, le téléchargement réel à partir de la base de données prend du temps et "doStuffWithTheTableFromTheQuery()" échoue à nouveau, car la table n'est pas scriptable. Ma solution est maintenant une requête avec un filtre invité et une boucle while. Le "wait(0)" semble n'avoir aucun effet. Voici mon exemple de code :
Nouvelle requête SQL(
Connexion(...),
NomRequête("Table SQL"),
Sélectionner(...),
Depuis(...),
Où(... Rapide(...) ...)
) << exécuter ;
checkForDataTable = Fonction({min},
dtCommutateur = 0 ;
dtCountTry = 0 ;
dtCountMax = 120 * min ; // 120 * min * 0,5 s = min minutes
Tant que( dtSwitch == 0 & dtCountTry < dtCountMax,
dtCountTry++;
Essayer(
dt = Table de données( "Table SQL" );
dtCommutateur = 1 ;
,
Si( dtCountTry == dtCountMax,
Throw( "Le script s'est arrêté. La requête SQL a pris "||Char(min)||" min." )
);
Attendez( 0.5 );
);
);
);
checkForDataTable(10);
doStuffWithTheTableFromTheQuery();
Re : Script de requête SQL modalHé, vkessler,
Il n'existe aucun moyen de rendre modale la fenêtre du Générateur de requêtes (ce qui apparaît lorsque vous transmettez Modifier à un objet de requête). Cependant, si ce que vous voulez que votre utilisateur puisse modifier est limité à la seule partie filtre de la requête, vous pouvez faire en sorte que votre requête ait un filtre invité, puis, au lieu de faire Modifier, faites Exécuter le premier plan. L'invite de filtre * est * modale, de sorte que l'utilisateur serait invité à mettre à jour le filtre, puis la requête s'exécuterait jusqu'à la fin (grâce à "Foreground") avant que votre prochaine ligne de JSL ne s'exécute.
Si demander le filtre semble suffisant et que vous ne savez pas comment le faire, faites-le moi savoir et je pourrai commencer.
Merci,
Éric
Re : Script de requête SQL modalEssayez de mettre wait(0); après votre requête. Doit permettre à la requête de se terminer avant de passer à l'étape suivante.
Re : Script de requête SQL modalLe problème est que le script se déroule avant l'exécution de la requête. Par conséquent, "doStuffWithTheTableFromTheQuery()" échoue, car il n'y a pas de table. J'ai une solution de contournement avec une boucle while, où l'existence de la table est vérifiée avant que le script ne continue, mais je me demandais s'il existait une autre solution comme une requête SQL modale.
Re : Script de requête SQL modalPouvez-vous indiquer la raison pour laquelle vous souhaitez que la requête SQL soit modale ?