Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-Daten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Früher habe ich ein JMP-Skript verwendet, um die SQL-Datentabelle zu extrahieren. Heute habe ich versucht, ein Fensterfeld zu erstellen, um dieselbe SQL-Datentabellenfunktion auszuführen.
Die einfache Idee besteht darin, die SQL-Datentabelle innerhalb eines Zeitraums zu extrahieren, bei dem es sich um zwei Eingabevariablen im Bedienfeldfeld handelt. Die „End_Time“ kann problemlos die Today()-Syntax verwenden. Für „Start_Time“ habe ich jedoch versucht, ein Skript zu schreiben, das es dem Benutzer ermöglicht, eine bestimmte „Stunde“ vor End_time einzugeben, zu der er die Datentabelle abrufen möchte.
Leider funktioniert dieses Skript nicht wie erwartet.
Kann irgendein JMP-Skript-Guru versuchen, mein unten aufgeführtes Skript zu korrigieren? Ich habe auch das JMP-Skript angehängt, das ich zur Änderung geschrieben habe.
Vielen Dank,
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||"')");
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenHallo Vince,
Vielen Dank für die Anleitung und Geduld.Endlich habe ich es hinbekommen.
Darunter befindet sich die korrekte und funktionierende Version.
- NamesDefaultToHere(1);
-
- // Geschrieben von Vince Faller
- // Lässt einen Kalender erscheinen An eine Numeditbox (Standard). Zu Jetzt)
- // Beachten Sie, dies nur funktioniert An JMP 11 oder über
- dateBox = Funktion (
- {timething = Today()},
- {newbox},
- newbox = Eval(
- Ersatz(
- Name Ausdruck(
- Nummernbearbeitungsfeld(
- timething, // Eval(Sub()) weil von JMP-Eigenart
- 10, // Brauche das nur, weil JMP das nicht tut Standard eine Breite
- << Satz Funktion (
- Funktion ( {selbst},
- {},
- Wenn( Ist Fehlt( self << get ),
- selbst << Satz ( Eval( DUMMY ) ) // Legt fest Datum Zu das Timething-Argument
- )
- )
- ),
- << Satz Format( Format( „m/d/jh:m:s“ , 23, 0 ) ); // Erstellt das Datum/Uhrzeit-Format für die Box (gibt Kalender)
- )
- ),
- Expr(DUMMY), Timething
- )
- );
- neue Box;
- );
-
- nw =
- Neues Fenster( „SQL-Datentabellenextraktion“ ,
- LineUpBox(NCol(2),
- Textfeld( „Startdatum/Uhrzeit“ ), start = dateBox(Today() - InDays(12)),
- Textfeld( „Enddatum/Uhrzeit“ ), Ende = dateBox(),
- ButtonBox( "Stornieren" , nw << schließen Fenster), ButtonBox( "Daten bekommen" , Skript ausführen)
- ));
-
- RunScript= Expr(nw<< Schließen Fenster;
- sql_statement=evalinsert( "SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^ startDT ^' UND dCreated <= '^ endDT ^' ORDER BY dCreated" );
- startDT=MDYHMS(start << get);
- endDT=MDYHMS( Ende <
- Offen Datenbank (
- "DSN=;Description=;UID=;PWD=;APP=;WSID=" ,
- sql_statement, "Testergebnis" ));
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenZwei Dinge
- sql_statement=evalinsert( „SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated“ );
- Dies sind nicht dieselben Variablen wie startDT und EndDT
- sql_statement sollte sich innerhalb von RunScript befinden
Wenn ich die letzten paar Zeilen so gestalte, dass es gut gedruckt wird
nw =
Neues Fenster( „SQL-Datentabellenextraktion“,
LineUpBox(NCol(2),
TextBox("Start DateTime"), start = dateBox(Today() - InDays(12)),
TextBox("End DateTime"), end = dateBox(),
ButtonBox("Abbrechen", nw << Fenster schließen), ButtonBox("Daten abrufen", 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);
);
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenDanke für das Teilen.... guy.yosef
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenHallo Vince,
Vielen Dank, dass Sie durch meine blinden Punkte geführt und mich näher gebracht haben. Allerdings auch nach dem Wechsel startDT = MDYHMS(start<< get) format Ich kann dieses SQL-Skript immer noch nicht zum Laufen bringen. Dann erhalte ich immer noch die gleiche JMP-Warnmeldung „Name ungelöst:Runscript in scces oder Auswertung von ‚RunScirpt, RunScript/*###*/“. Stimmt etwas in meinem Skript nicht?
Ich habe auch mein Skript zur Überprüfung angehängt.
Vielen Dank für Ihre Hilfe!
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"));Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenWenn Sie start << Get ausführen (oder einfach mit der Maus über startDT fahren).Sie werden sehen, dass der Wert eigentlich nur eine Zahl ist, 3543202800 für „11.04.2016 7:00:00 Uhr“.Wenn Sie also versuchen, es in SQL einzufügen, geben Sie ihm tatsächlich nur diese Zahl (die kein Zeichen ist, sodass Sie sie nicht verketten können).Du musst dich ändern
startDT = start << get;
endDT = end << get;
Zu
startDT = MDYHMS(start << get);
endDT = MDYHMS(end << get);
Ich denke, das sollte dich laufen lassen.
Was Ihren Fehler betrifft, sieht es so aus, als gäbe es kein ; nach deiner Zeile 43
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenIch verwende das folgende Skript, um die SQL-Datentabelle zu extrahieren und die Zeit im Modalmodus zu begrenzen
::dbc = mein Name und Login, den ich in ein anderes Add-In einfüge, Sie können stattdessen eine offene Datenbank verwenden
Ich habe einen Button für 2 verschiedene Tabellen hinzugefügt (Defekt und Ertrag)
weiterer Filter für Parameter (Fehlerart, Ertragsparameter etc.)
meine SQL-Zeitspalte ist „dayxxx“
gewinnen = Neues Fenster ( „Daten auswählen“
<< Modal,
Panel-Box ( "Wählen" ,
rbox = Radiobox ( { "DEFEKT" , "ERTRAG" }
)
, Textfeld ( "PARAMETER" ) , variablebox1 = Textbearbeitungsfeld ()
, Textfeld ( „Tage einfügen“ ) , variablebox2 = Textbearbeitungsfeld ()
) ;
Bereich1 = rbox << erhalten ;
PARAM = variablebox1 << Text bekommen ;
Tage = variablebox2 << Text bekommen ;
Tabelle 1 = Wenn (
Bereich1 == 1 , „Defekttabellexxx“ ,
Bereich1 == 2 , „Ertragstabellexxx“
)
;
/// SQL-Datenauswahl ///
dt = SQL ausführen ( :: dbc ,
"SELECT * FROM \!"pathxxx\!".\!"" || Tabelle 1 || „\!“
WO \!"dayxxx\!" > (CURRENT_DATE - " || Tage || " TAGE)
UND \!"parameterxxx\!" = '" || PARAM || "'
"
) ;
dt << Name einsetzen ( „“ || PARAM || " " || Tage || „“ ) ;
*Ich habe viele Änderungen vorgenommen, um den Namen meiner Firmendatenbank zu verbergen, damit möglicherweise einige Skriptfehler gemacht werden
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenHallo Vince,
Danke für die Antwort. Ich habe den Rechtschreibfehler schon Tage zuvor erkannt, aber mein Skript funktioniert immer noch nicht wie erwartet.
Meinen Sie mit Ihrer Antwort, dass ich das nicht verwenden kann? Gibt es die Skriptfunktion „Number Edit Box()“, die Sie für date box() geschrieben haben?
Liegt es daran, dass ich die folgende Warnmeldung erhalte (siehe Abbildung unten), wenn ich auf die Schaltfläche „Daten abrufen“ geklickt habe?
Wie kommt es jedoch, dass jmp die Anforderungsdatentabelle vom SQL-Server abrufen kann, wenn ich das folgende Skript direkt ausführe?
//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");

Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-Datennw << Geschlossenes Fenster
wird das Skript zum Absturz bringen.
du brauchst
nw<
Außerdem hast du einen weiteren Rechtschreibfehler in deiner Abbrechen-Schaltfläche.
Sie sollten auch MDYHMS(startDT) und endDT oder eine andere Konvertierung in SQL DateTime verwenden, da JMP nur eine Zahl meldet und SQL diese nicht als Datum und Uhrzeit verwendet.
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenIch verwende JMP 11, das nicht über die Query Builder-Funktionalität verfügt. Ich hoffe, dass ich später eines bekomme, wenn unsere Abteilung einem Upgrade zustimmt. Wie dem auch sei, vielen Dank für die Anleitung.Ich habe das Skript ausprobiert, das Ian von Vince gepostet hat, und die Datums-/Uhrzeitfensterfunktion funktioniert.Als ich jedoch versuchte, mit der Schaltflächenbox zu kleben, die ich zum Extrahieren der Datentabelle vom SQL-Server entworfen hatte, kam keine Reaktion. Ich habe die SQL-Anweisung mit dem ursprünglichen JSL-Skript überprüft, das ich zum Extrahieren der SQL-Datentabelle verwendet habe, und es funktioniert einwandfrei. Ich vermute, dass etwas mit dem Skript nicht stimmt, das für die Schaltflächenbox zum Abrufen der SQL-Datentabelle entwickelt wurde. Kann jemand eine schnelle Lösung finden?
Vielen Dank,
NamesDefaultToHere(1);
// Geschrieben von Vince Faller
// Lässt einen Kalender auf einer Numeditbox erscheinen (Standardeinstellung ist „jetzt“)
// Beachten Sie, dass dies nur auf JMP 11 oder höher funktioniert
dateBox = Funktion(
{timething = Today()},
{newbox},
newbox = Eval(
Ersatz(
Namensausdruck(
Nummernbearbeitungsfeld(
timething, // Eval(Sub()) wegen JMP-Eigenart
10, // Brauche das nur, weil JMP keine Standardbreite vorgibt
<
Funktion( {self},
{},
If( Fehlt( self << get ),
self << Set( Eval( DUMMY ) ) // Setzt das Datum auf das Timething-Argument
)
)
),
<< Set Format( Format( "m/d/yh:m:s", 23, 0 ) ); // Erstellt Datum/Uhrzeit-Format für die Box (gibt Kalender an)
)
),
Expr(DUMMY), Timething
)
);
neue Box;
);
nw =
Neues Fenster( „SQL-Datentabellenextraktion“,<
LineUpBox(NCol(2),
TextBox("Start DateTime"), start = dateBox(Today() - InHours(12)),
TextBox("End DateTime"), end = dateBox(),
ButtonBox("Abbrechen", nw << closeEindow), ButtonBox("Daten abrufen", RunScript)
));
sql_statement = evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^startDT^' AND dCreated <= '^endDT^'ORDER BY dCreated");
RunScript= Expr(nw<
startDT = start << get;
endDT = end << get;
Datenbank öffnen(
„DSN=;Description=;UID=;PWD=;APP=;WSID=1“,
sql_statement,
"Testergebnis"));
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenViel besser, Eric! JSL zu meiden ist nie eine schlechte Strategie . Es tut mir leid, diese Option zu übersehen.
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenHey, bernie426,
Wenn Sie JMP 12 verwenden, sollten Sie den Query Builder für solche Dinge in Betracht ziehen (und wenn Sie JMP 12 noch nicht verwenden, versuchen Sie, dorthin zu gelangen ;-).Mit Query Builder können Sie interaktiv gefilterte SQL-Abfragen erstellen und diese Filter in Eingabeaufforderungen umwandeln.Der Query Builder wurde hauptsächlich für Situationen wie Ihre erstellt.So sieht die Abfrage beim Erstellen aus:

Wenn man genau hinschaut, kann man es sehen (Prompt) neben dem Filter.Wenn die Abfrage dann ausgeführt wird, erhalten Sie eine Eingabeaufforderung, die je nach Format der Variablen automatisch eine Datumsauswahl oder eine Datums-/Uhrzeitauswahl anzeigt:

Etwas, worüber man nachdenken sollte, wenn nicht sofort, für die Zukunft.
HTH,
Erik
Betreff: Erstellen Sie ein Datum-Uhrzeit-Panel zum Extrahieren von SQL-DatenIm Hinblick auf die Auswahl von Datums- und Uhrzeitangaben, die Sie sich vielleicht ansehen möchten dieser Thread zu. Also mit dem Code freundlich geschrieben von Vince Feller Vielleicht möchten Sie diesen Ansatz ausprobieren, da er viel mehr Funktionalität bietet:
NamesDefaultToHere ( 1 ) ;
// Geschrieben von Vince Faller
// Lässt einen Kalender auf einer Numeditbox erscheinen (Standardeinstellung ist „jetzt“)
// Beachten Sie, dass dies nur auf JMP 11 oder höher funktioniert
dateBox = Funktion (
{ Zeitsache = Heute ()} ,
{ Neubox } ,
Neubox = Bewertung (
Ersatz (
Namensausdruck (
Nummernbearbeitungsfeld (
Zeitsache , // Eval(Sub()) wegen JMP-Eigenart
10 , // Brauche das nur, weil JMP keine Standardbreite vorgibt
<< Funktion einstellen (
Funktion ( { selbst } ,
{} ,
Wenn ( Wird vermisst ( selbst << erhalten ) ,
selbst << Satz ( Bewertung ( DUMMY ) ) // Setzt das Datum auf das Timething-Argument
)
)
) ,
<< Format festlegen ( Format ( „m/d/jh:m:s“ , 23 , 0 ) ) ; // Erstellt Datum/Uhrzeit-Format für die Box (gibt Kalender an)
)
) ,
Ausdruck ( DUMMY ) , Zeitsache
)
) ;
Neubox ;
) ;
jetzt =
Neues Fenster ( „Datum Zeitspanne“ ,
LineUpBox ( NCol ( 2 ) ,
Textfeld ( „Startdatum/Uhrzeit“ ) , Start = dateBox ( Heute () - In Stunden ( 12 )) ,
Textfeld ( „Enddatum/Uhrzeit“ ) , Ende = dateBox () ,
ButtonBox ( "Stornieren" , jetzt << closeEindow ) , ButtonBox ( "OK" , Skript ausführen )
)
) ;
Skript ausführen =
Ausdruck (
jetzt << Fenster schließen ;
startDT = Start << erhalten ;
endDT = Ende << erhalten ;
Drucken ( startDT , endDT ) ;
) ;
Ich habe es nicht getan Schauen Sie sich Ihren Originalcode im Detail an, aber ich habe gesehen, dass Sie versucht haben, einen Variablennamen zu haben, der „/“ enthält, was nicht zulässig ist, es sei denn, Sie verwenden auch „Name()“. Weitere Informationen darüber, was Sie tun können und was nicht, finden Sie unter „Hilfe > Bücher > Skripthandbuch“.