Créer un panneau date/heure pour extraire les données SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
J'avais l'habitude d'utiliser un script jmp pour extraire la table de données SQL. Ce jour-là, j'ai essayé de créer une boîte de panneau de fenêtre pour exécuter la même fonction de table de données SQL.
L'idée simple est d'extraire la table de données SQL sur une période de temps, qui serait deux variables d'entrée dans la zone du panneau. Le "End_Time" peut facilement utiliser la syntaxe Today(). Cependant, pour "Start_Time", j'ai essayé d'écrire un script permettant à l'utilisateur de saisir une certaine "heure" avant End_time pendant laquelle il souhaite extraire la table de données.
Malheureusement, ce script ne fonctionne pas comme prévu.
Un gourou du script jmp peut-il essayer de corriger mon script ci-dessous ? J'ai également joint le script jmp que j'ai écrit pour modification.
Merci beaucoup,
nw = new window("SQL Data Table Extraction", Vlistbox( tb1=textbox("Start_Time: "), dteb1 = numbereditbox(1), hlistbox( text box("Enter the number of hours: "), hours_teb = text edit box()), tb2=textbox("End_Time: "), dteb2 = numbereditbox(1), ), ok_button = button box("Get Data", << Open Database("DSN=;Description=;UID=;PWD=;APP=;WSID=", sql_statement, Test Data)),dteb1 << set format(format("m/d/y h:m:s", 23, 0)),dteb1 << set width(23),dteb1 << set(today()-EvalExpr((hours_tab)*60*60)),dteb2 << set format(format("m/d/y h:m:s", 23, 0)),dteb2 << set(Today())); sql_statement="SELECT * FROM dbo.TESTCOMPLETE WHERE (dCreated >= '"||Start Date/Time||"') AND (dCreated <='"||End_Date/Time||"')");
Re : Créer un panneau date/heure pour extraire des données SQLSalut Vince,
Merci pour les conseils et la patience.Finalement, j'ai réussi.
En dessous se trouve la version correcte et fonctionnelle.
- NomsDefaultToHere(1);
-
- // Écrit par Vince Faller
- // Fait apparaître un calendrier sur une numeditbox (par défaut à maintenant)
- // Attention, ceci seulement travaux sur JMP11 ou au-dessus de
- dateBox = Fonction (
- {timething = Aujourd'hui()},
- {nouvelle boîte},
- nouvelle boîte = Eval (
- Remplaçant(
- Nom Expr(
- Zone d'édition du numéro (
- timething, // Eval(Sub()) car de La bizarrerie de JMP
- 10, // J'en ai juste besoin car JMP ne le fait pas défaut une largeur
- << Ensemble fonction (
- Fonction ( {soi},
- {},
- Si( Est Manquant( soi << obtenir ),
- soi << Ensemble ( Eval( DUMMY ) ) // Définit le date à l'argument du temps
- )
- )
- ),
- << Ensemble Format( Format( "m/j/ah:m:s" , 23, 0 ) ); // Crée le format datetime pour la boîte (donne le calendrier)
- )
- ),
- Expr (DUMMY), chronométrage
- )
- );
- nouvelle boîte ;
- );
-
- nw =
- Nouvelle fenetre( "Extraction de tables de données SQL" ,
- LineUpBox(NCol(2),
- Zone de texte( "DateHeure de début" ), début = dateBox(Aujourd'hui() - InDays(12)),
- Zone de texte( "DateHeure de fin" ), fin = dateBox(),
- Boîte à boutons ( "Annuler" , nw << fermer fenêtre), ButtonBox ( "Obtenir des données" , Script de lancement)
- ));
-
- RunScript=Expr(nw<< Fermer Fenêtre;
- sql_statement=evalinsert( "SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^ démarrerDT ^' ET dCréé <= '^ finDT ^' COMMANDER PAR dCréé " );
- startDT=MDYHMS(start << get);
- finDT=MDYHMS( fin <
- Ouvrir Base de données (
- "DSN=;Description=;UID=;PWD=;APP=;WSID=" ,
- instruction_sql, "Résultat du test" ));
Re : Créer un panneau date/heure pour extraire des données SQLDeux choses
- sql_statement=evalinsert( "SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated" );
- Ce ne sont pas les mêmes variables que startDT et EndDT
- sql_statement devrait être à l'intérieur de RunScript
si je fais ressembler les deux dernières lignes à ceci, ça s'imprime bien
nw =
Nouvelle fenêtre( "Extraction de table de données SQL",
LineUpBox(NCol(2),
TextBox("Début DateHeure"), début = dateBox(Aujourd'hui() - InDays(12)),
TextBox("End DateTime"), fin = dateBox(),
ButtonBox("Annuler", nw << fermer la fenêtre), ButtonBox("Obtenir les données", RunScript)
));
RunScript= Expr(nw<
startDT=MDYHMS(start << get);
endDT=MDYHMS(end<
sql_statement="SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '"||startDT||"' AND dCreated <= '"||endDT||"' ORDER BY dCreated";
print(sql_statement);
);
Re : Créer un panneau date/heure pour extraire des données SQLMerci d'avoir partagé.... gars.yosef
Re : Créer un panneau date/heure pour extraire des données SQLSalut Vince,
Merci de m'avoir guidé à travers mes angles morts et de m'avoir rapproché. Cependant, même après avoir changé format startDT = MDYHMS(start<< get) Je n'arrive toujours pas à faire fonctionner ce script SQL. Ensuite, je reçois toujours le même message d'avertissement jmp "Nom non résolu : Runscript dans scces ou évaluation de 'RunScirpt, RunScript/*###*/". Y a-t-il quelque chose qui ne va pas dans mon script ?
J'ai également joint mon script pour vérification.
Merci pour votre aide!
NamesDefaultToHere(1);// Written by Vince Faller// Makes a calendar come up on a numeditbox (defaults to now)// Note, this only works on JMP 11 or abovedateBox = Function({timething = Today()},{newbox},newbox = Eval(Substitute(Name Expr(Number Edit Box(timething, // Eval(Sub()) because of JMP quirk10, // Just need this because JMP doesn't default a width<Function( {self},{},If( Is Missing( self << get ),self << Set( Eval( DUMMY ) ) // Sets the date to the timething argument))),<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) ); // Makes datetime format for the box (gives calendar))),Expr( DUMMY ), timething));newbox;);nw =New Window( "SQL Data Table Extraction",LineUpBox(NCol(2),TextBox("Start DateTime"), start = dateBox(Today() - InDays(12)),TextBox("End DateTime"), end = dateBox(),ButtonBox("Cancel", nw << close window), ButtonBox("Get Data", RunScript)));sql_statement=evalinsert("SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated");RunScript= Expr(nw< startDT=MDYHMS(start << get); endDT=MDYHMS(end< Open Database( "DSN=;Description=;UID=;PWD=;APP=;WSID=", sql_statement,"Test Result"));Re : Créer un panneau date/heure pour extraire des données SQLSi vous exécutez start << Get (ou passez simplement la souris sur startDT).Vous verrez que la valeur n'est en réalité qu'un nombre, 3543202800 pour "04/11/2016 7:00:00 AM".Ainsi, lorsque vous essayez de le mettre en SQL, vous lui donnez simplement ce numéro (qui n'est pas un caractère, vous ne pouvez donc pas le concaténer).Tu dois changer
startDT = start << get;
endDT = fin << get;
à
startDT = MDYHMS(start << get);
endDT = MDYHMS(fin << get);
Je pense que ça devrait te permettre de courir.
En ce qui concerne votre erreur, il semble qu'il n'y en ait pas ; après ta ligne 43
Re : Créer un panneau date/heure pour extraire des données SQLj'utilise le script suivant pour extraire la table de données SQL et limiter le temps en mode modal
::dbc = mon nom et mon identifiant que j'insère dans différents compléments, vous pouvez utiliser une base de données ouverte à la place
j'ai ajouté un bouton pour 2 tables différentes (défaut et rendement)
un autre filtre pour le paramètre (type de défaut, paramètre de rendement, etc.)
ma colonne d'heure SQL est 'dayxxx'
gagner = Nouvelle fenetre ( "sélectionner les données"
<< Modal,
Panneau électrique ( "Sélectionner" ,
boîte à r = Boîte radio ( { "DÉFAUT" , "RENDEMENT" }
)
, Zone de texte ( "PARAMÈTRE" ) , variablebox1 = Zone d'édition de texte ()
, Zone de texte ( "Insérer les jours" ) , variablebox2 = Zone d'édition de texte ()
) ;
zone1 = boîte à r << obtenir ;
PARAMÈTRE = variablebox1 << recevoir un texte ;
Jours = variablebox2 << recevoir un texte ;
Tableau 1 = si (
zone1 == 1 , "tableau des défautsxxx" ,
zone1 == 2 , "table de rendementxxx"
)
;
/// Sélection des données SQL ///
dt = Exécuter SQL ( :: dbc ,
"SELECT * FROM \!"cheminxxx\!".\!"" || Tableau 1 || "\!"
OÙ \!"jourxxx\!" > (CURRENT_DATE - " || Jours || " JOURS)
ET \!"paramètrexxx\!" = '" || PARAMÈTRE || "'
"
) ;
dt << Définir le nom ( "" || PARAMÈTRE || " " || jours || "" ) ;
*J'ai fait beaucoup de modifications pour masquer le nom de la base de données de mon entreprise afin de pouvoir commettre des erreurs de script.
Re : Créer un panneau date/heure pour extraire des données SQLSalut Vince,
Merci pour la réponse. J'ai reconnu l'erreur d'orthographe quelques jours auparavant, mais je n'arrive toujours pas à faire fonctionner mon script comme prévu.
Dans votre réponse, voulez-vous dire que je ne peux pas utiliser le Fonction de script Number Edit Box() que vous aviez l'habitude d'écrire pour date box() ?
Est-ce à cause du problème que je reçois le message d'avertissement suivant (veuillez consulter l'image ci-dessous) lorsque j'ai cliqué sur le bouton « Obtenir des données » ?
Cependant, comment se fait-il que si j'exécute directement le script ci-dessous, jmp soit capable d'extraire la table de données de requête du serveur SQL ?
//This script is wrote to pull data within a certain time framestart_time="04/11/2016 7:00:00 AM";end_time="04/12/2016 7:00:00 PM";sql_statement=evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated");Open Database( "DSN=;Description=;UID=;PWD=;APP=;WSID=",sql_statement, "Test Data");

Re : Créer un panneau date/heure pour extraire des données SQLnw << Fenêtre fermée
fera planter le script.
vous devez
nw<
vous avez également une autre faute d'orthographe dans votre bouton d'annulation.
vous devez également utiliser MDYHMS(startDT) et endDT, ou une autre conversion en SQL DateTime, car JMP signalera simplement un nombre et SQL ne le prendra pas comme date et heure.
Re : Créer un panneau date/heure pour extraire des données SQLJ'utilise JMP 11, qui n'a pas de fonctionnalité Query Builder. J'espère en obtenir un plus tard si notre département accepte une mise à niveau. Quoi qu'il en soit, merci pour les conseils.J'ai essayé le script publié par Ian de Vince et la fonction de fenêtre date/heure fonctionne.Cependant, alors que j'essayais de coller avec la boîte à boutons que j'avais conçue pour extraire la table de données du serveur SQL, aucune réponse n'a été obtenue. J'ai vérifié l'instruction SQL avec le script JSL original que j'ai utilisé pour extraire la table de données SQL et cela fonctionne bien. Je suppose qu'il y a un problème avec le script conçu pour que la boîte à boutons extraie la table de données SQL. Quelqu'un peut-il apporter une solution rapide ?
Merci beaucoup,
NomsDefaultToHere(1);
// Écrit par Vince Faller
// Fait apparaître un calendrier sur une numeditbox (par défaut : maintenant)
// Notez que cela ne fonctionne que sur JMP 11 ou supérieur
dateBox = Fonction (
{timething = Aujourd'hui()},
{nouvelle boîte},
nouvelle boîte = Eval (
Remplaçant(
Nom Expr(
Zone d'édition du numéro (
timething, // Eval(Sub()) à cause de la bizarrerie de JMP
10, // J'en ai juste besoin car JMP ne définit pas de largeur par défaut
<
Fonction( {soi},
{},
Si (est manquant (self << get ),
self << Set( Eval( DUMMY ) ) // Définit la date sur l'argument timething
)
)
),
<< Définir le format( Format( "m/d/yh:m:s", 23, 0 ) ); // Crée le format datetime pour la boîte (donne le calendrier)
)
),
Expr (DUMMY), chronométrage
)
);
nouvelle boîte ;
);
nw =
Nouvelle fenêtre( "Extraction de table de données SQL",<
LineUpBox(NCol(2),
TextBox("Début DateHeure"), début = dateBox(Aujourd'hui() - InHours(12)),
TextBox("End DateTime"), fin = dateBox(),
ButtonBox("Annuler", nw << closeEindow), ButtonBox("Obtenir des données", RunScript)
));
sql_statement = evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^startDT^' AND dCreated <= '^endDT^'ORDER BY dCreated");
RunScript= Expr(nw<
startDT = start << get;
endDT = fin << get;
Ouvrir la base de données (
"DSN=;Description=;UID=;PWD=;APP=;WSID=1",
instruction_sql,
"Résultat du test"));
Re : Créer un panneau date/heure pour extraire des données SQLC'est beaucoup mieux, Éric ! Éviter JSL n'est jamais une mauvaise stratégie . Désolé de négliger cette option.
Re : Créer un panneau date/heure pour extraire des données SQLSalut, bernie426,
Si vous utilisez JMP 12, pensez à utiliser Query Builder pour ce genre de choses (et si vous n'êtes pas encore sur JMP 12, essayez d'y arriver ;-).Query Builder vous permet de créer de manière interactive des requêtes SQL filtrées et vous pouvez transformer ces filtres en invites.L'une des principales raisons pour lesquelles Query Builder a été créé était pour des situations comme la vôtre.Voici à quoi ressemble la requête lors de sa construction :

Si vous regardez attentivement, vous pouvez voir (Rapide) à côté du filtre.Ensuite, lorsque la requête est exécutée, vous obtenez une invite qui présentera automatiquement un sélecteur de date ou un sélecteur de date-heure, selon le format de la variable :

De quoi réfléchir, pour l’avenir sinon tout de suite.
HTH,
Éric
Re : Créer un panneau date/heure pour extraire des données SQLEn ce qui concerne la sélection des dates et heures, vous aimeriez peut-être consulter ce fil aussi. Donc en utilisant le code gentiment écrit par Vince Feller vous aimeriez peut-être essayer ce type d'approche car elle offre beaucoup plus de fonctionnalités :
NomsDefaultToHere ( 1 ) ;
// Écrit par Vince Faller
// Fait apparaître un calendrier sur une numeditbox (par défaut : maintenant)
// Notez que cela ne fonctionne que sur JMP 11 ou supérieur
dateBox = Fonction (
{ le temps = Aujourd'hui ()} ,
{ nouvelle boîte } ,
nouvelle boîte = Évaluer (
Remplaçant (
Nom Expr (
Zone d'édition de numéro (
le temps , // Eval(Sub()) à cause de la bizarrerie de JMP
dix , // J'en ai juste besoin car JMP ne définit pas de largeur par défaut
<< Définir la fonction (
Fonction ( { soi } ,
{} ,
Si ( Est manquant ( soi << obtenir ) ,
soi << Ensemble ( Évaluer ( FACTICE ) ) // Définit la date sur l'argument timething
)
)
) ,
<< Définir le format ( Format ( "m/j/ah:m:s" , 23 , 0 ) ) ; // Crée le format datetime pour la boîte (donne le calendrier)
)
) ,
Expr ( FACTICE ) , le temps
)
) ;
nouvelle boîte ;
) ;
maintenant =
Nouvelle fenetre ( "Date Période" ,
Boîte de programmation ( NCol ( 2 ) ,
Zone de texte ( "DateHeure de début" ) , commencer = dateBox ( Aujourd'hui () - En heures ( 12 )) ,
Zone de texte ( "DateHeure de fin" ) , fin = dateBox () ,
Boîte à boutons ( "Annuler" , maintenant << fermerEindow ) , Boîte à boutons ( "D'ACCORD" , script de lancement )
)
) ;
script de lancement =
Expr (
maintenant << Fermer la fenêtre ;
démarrerDT = commencer << obtenir ;
finDT = fin << obtenir ;
Imprimer ( démarrerDT , finDT ) ;
) ;
je ne l'ai pas fait vérifiez votre code d'origine en détail, mais j'ai vu que vous essayiez d'avoir un nom de variable contenant '/', ce qui n'est pas autorisé à moins que vous n'utilisiez également 'Name()'. Consultez « Aide > Livres > Guide de script » pour plus de détails sur ce que vous pouvez et ne pouvez pas faire.