Crea un pannello data/ora per estrarre i dati SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Usavo uno script jmp per estrarre la tabella dati SQL. Questo giorno ho provato a creare una finestra del pannello per eseguire la stessa funzione della tabella dati SQL.
L'idea semplice è quella di estrarre la tabella dei dati SQL entro un periodo di tempo, che sarebbe due variabili di input nella casella del pannello. "End_Time" può facilmente utilizzare la sintassi Today(). Tuttavia, per "Start_Time", ho provato a scrivere uno script che consenta all'utente di inserire una certa "ora" prima di End_time in cui desidera estrarre la tabella dei dati.
Sfortunatamente, questo script non funziona come previsto.
Qualche guru degli script jmp può provare a correggere il mio script qui sotto? Ho anche allegato lo script jmp che ho scritto per la modifica.
Grazie molto,
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||"')");
Ri: Creare un pannello data/ora per estrarre i dati SQLCiao Vince,
Grazie per la guida e la pazienza.Alla fine ho capito che funzionava.
Sotto c'è la versione corretta e funzionante.
- NomiDefaultToHere(1);
-
- // Scritto di Vincenzo Faller
- // Fa apparire un calendario SU una numeditbox (default A Ora)
- // Nota, questo soltanto lavori SU JMP11 O Sopra
- dataBox = Funzione (
- {timething = Oggi()},
- {nuovascatola},
- nuovascatola = Valutazione(
- Sostituire(
- Nome Espr(
- Casella di modifica numero(
- timething, // Eval(Sub()) perché Di Stranezza di JMP
- 10, // Ne ho solo bisogno perché JMP no predefinito una larghezza
- << Impostato funzione (
- Funzione ( {se stesso},
- {},
- Se( È Mancante (self << ottieni),
- sé << Impostato ( Eval( DUMMY ) ) // Imposta il data A l'argomento del cronometraggio
- )
- )
- ),
- << Impostato Formato( Formato( "m/g/ah:m:s" , 23, 0 ) ); // Crea il formato data/ora per la scatola (fornisce il calendario)
- )
- ),
- Espr( DUMMY ), cronometraggio
- )
- );
- nuova casella;
- );
-
- nw =
- Nuova finestra( "Estrazione della tabella dati SQL" ,
- Casella di allineamento(NCol(2),
- Casella di testo( "Avvia data e ora" ), inizio = dateBox(Oggi() - InDays(12)),
- Casella di testo( "Data/Ora di fine" ), FINE = dataBox(),
- Casellapulsante( "Annulla" , ora << vicino finestra), ButtonBox( "Ottieni dati" , EseguiScript)
- ));
-
- EseguiScript= Espr(nw<< Vicino Finestra;
- sql_statement=evalinsert( "SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^ inizioDT ^' AND dCreato <= '^ fineDT ^' ORDINA PER dCreated" );
- startDT=MDYHMS(inizio << ottieni);
- endDT=MDYHMS( FINE <
- Aprire Banca dati (
- "DSN=;Descrizione=;UID=;PWD=;APP=;WSID=" ,
- istruzione_sql, "Risultato del test" ));
Ri: Creare un pannello data/ora per estrarre i dati SQLDue cose
- sql_statement=evalinsert( "SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated" );
- Queste non sono le stesse variabili di startDT e EndDT
- sql_statement dovrebbe essere all'interno di RunScript
se faccio sembrare le ultime due righe così, la stampa va bene
nw =
Nuova finestra ("Estrazione della tabella dati SQL",
Casella di allineamento(NCol(2),
TextBox("Inizia DateTime"), start = dateBox(Oggi() - InDays(12)),
TextBox("Fine DateTime"), fine = dateBox(),
ButtonBox("Annulla", ora << chiudi finestra), ButtonBox("Ottieni dati", RunScript)
));
EseguiScript= Expr(nw<
startDT=MDYHMS(inizio << ottieni);
endDT=MDYHMS(end<
sql_statement="SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '"||startDT||"' AND dCreated <= '"||endDT||"' ORDER BY dCreated";
stampa(istruzione_sql);
);
Ri: Creare un pannello data/ora per estrarre i dati SQLGrazie per la condivisione.... ragazzo.yosef
Ri: Creare un pannello data/ora per estrarre i dati SQLCiao Vince,
Grazie per avermi guidato attraverso i miei punti ciechi e avermi avvicinato. Tuttavia, anche dopo aver cambiato startDT = MDYHMS(start<< get) formato Non riesco ancora a far funzionare questo script SQL. Quindi, ricevo ancora lo stesso messaggio di avviso jmp "Nome non risolto: Runscript in scces o valutazione di 'RunScirpt, RunScript/*###*/". C'è qualcosa di sbagliato nel mio script?
Ho anche allegato il mio script per il controllo.
Grazie per l'aiuto!
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"));Ri: Creare un pannello data/ora per estrarre i dati SQLSe esegui start << Get (o semplicemente passa il mouse su startDT).Vedrai che il valore è in realtà solo un numero, 3543202800 per "04/11/2016 7:00:00".Quindi, quando provi a inserirlo in SQL, in realtà gli stai semplicemente dando quel numero (che non è un carattere, quindi non puoi concatenarlo).Devi cambiare
startDT = inizio << ottieni;
endDT = fine << ottieni;
A
startDT = MDYHMS(inizio << get);
endDT = MDYHMS(end << get);
Penso che questo dovrebbe permetterti di scappare.
Per quanto riguarda il tuo errore, sembra proprio che non ci sia ; dopo la tua riga 43
Ri: Creare un pannello data/ora per estrarre i dati SQLsto utilizzando lo script seguente per estrarre la tabella dati SQL e limitare il tempo in modalità modale
::dbc = il mio nome e login che inserisco in diversi componenti aggiuntivi, puoi invece utilizzare il database aperto
ho aggiunto il pulsante per 2 tabelle diverse (difetto e resa)
un altro filtro per parametro (tipo di difetto, parametro di resa ecc.)
la mia colonna temporale SQL è "dayxxx"
vincita = Nuova finestra ( "seleziona dati"
<< Modale,
Scatola del pannello ( "Selezionare" ,
rbox = Scatola radiofonica ( { "DIFETTO" , "PRODOTTO" }
)
, Casella di testo ( "PARAMETRO" ) , variabilebox1 = Casella di modifica del testo ()
, Casella di testo ( "Inserisci giorni" ) , variabilebox2 = Casella di modifica del testo ()
) ;
area1 = rbox << Ottenere ;
PARAM = variabilebox1 << ottenere il testo ;
Giorni = variabilebox2 << ottenere il testo ;
Tabella 1 = Se (
area1 == 1 , "tabella difettosaxxx" ,
area1 == 2 , "tabella dei rendimentixxx"
)
;
/// Selezione dati SQL ///
dt = Esegui SQL ( :: dbc ,
"SELEZIONA * DA \!"percorsoxxx\!".\!"" || Tabella 1 || "\!"
DOVE \!"giornoxxx\!" > (DATA_CURRENT - " || Giorni || "GIORNI)
AND \!"parametroxxx\!" ='" || PARAM || "'
"
) ;
dt << Imposta nome ( "" || PARAM || " " || giorni || "" ) ;
*Ho apportato molte modifiche per nascondere il nome del database della mia azienda, quindi potrei commettere alcuni errori di script
Ri: Creare un pannello data/ora per estrarre i dati SQLCiao Vince,
Grazie per la risposta. Ho riconosciuto l'errore di ortografia giorni prima, ma ancora non riesco a far funzionare lo script come previsto.
Nella tua risposta, intendi dire che non posso usare il file Funzione di script Number Edit Box() che scrivevi per Date Box()?
È questo il problema per cui ricevo il seguente messaggio di avviso (vedere l'immagine seguente) quando ho fatto clic sul pulsante "Ottieni dati"?
Tuttavia, come mai se eseguo direttamente lo script seguente, jmp è in grado di estrarre la tabella dei dati della richiesta dal server 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");

Ri: Creare un pannello data/ora per estrarre i dati SQLnw << Finestra chiusa
manderà in crash lo script.
devi
nw<
inoltre hai un altro errore di ortografia nel pulsante Annulla.
dovresti anche usare MDYHMS(startDT) e endDT, o qualche altra conversione in SQL DateTime perché JMP riporterà semplicemente un numero e SQL non lo prenderà come data e ora.
Ri: Creare un pannello data/ora per estrarre i dati SQLSto utilizzando JMP 11, che non dispone della funzionalità Query Builder. Spero di averne uno più tardi se il nostro dipartimento accetterà un aggiornamento. Comunque grazie per la guida.Ho provato lo script pubblicato da Ian di Vince e la funzione della finestra di data e ora funziona.Tuttavia, quando ho provato a incollare la casella dei pulsanti che ho progettato per estrarre la tabella dati dal server SQL, non ho ricevuto alcuna risposta. Ho controllato l'istruzione SQL con lo script jsl originale che ho utilizzato per estrarre la tabella dei dati SQL e funziona correttamente. Immagino che ci sia qualcosa di sbagliato nello script progettato per la casella dei pulsanti per estrarre la tabella dei dati SQL. Qualcuno può prendere una soluzione rapida?
Grazie molto,
NomiDefaultToHere(1);
// Scritto da Vince Faller
// Fa apparire un calendario su numeditbox (il valore predefinito è adesso)
// Nota, funziona solo su JMP 11 o versioni successive
dataBox = Funzione(
{timething = Oggi()},
{nuovascatola},
nuovascatola = Valutazione(
Sostituire(
Nome Espr(
Casella di modifica numero(
timething, // Eval(Sub()) a causa di peculiarità di JMP
10, // Ne serve solo perché JMP non imposta una larghezza predefinita
<
Funzione ({self},
{},
Se (manca (self << get),
self << Set( Eval( DUMMY ) ) // Imposta la data sull'argomento timething
)
)
),
<< Imposta formato( Formato( "m/g/ah:m:s", 23, 0 ) ); // Crea il formato data/ora per la casella (fornisce il calendario)
)
),
Espr( DUMMY ), cronometraggio
)
);
nuova casella;
);
nw =
Nuova finestra("Estrazione tabella dati SQL",<
Casella di allineamento(NCol(2),
TextBox("Inizia DateTime"), start = dateBox(Oggi() - InHours(12)),
TextBox("Fine DateTime"), fine = dateBox(),
ButtonBox("Annulla", ora << chiudiEindow), ButtonBox("Ottieni dati", RunScript)
));
sql_statement = evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^startDT^' AND dCreated <= '^endDT^'ORDER BY dCreated");
RunScript= Expr(nw<
startDT = inizio << ottieni;
endDT = fine << ottieni;
Apri banca dati(
"DSN=;Descrizione=;UID=;PWD=;APP=;WSID=1",
istruzione_sql,
"Risultato del test"));
Ri: Creare un pannello data/ora per estrarre i dati SQLMolto meglio, Eric! Evitare JSL non è mai una cattiva strategia . Mi dispiace trascurare questa opzione.
Ri: Creare un pannello data/ora per estrarre i dati SQLEhi, Bernie426,
Se utilizzi JMP 12, considera l'utilizzo di Query Builder per questo genere di cose (e se non sei ancora a JMP 12, prova ad arrivarci ;-).Il Generatore di query consente di creare in modo interattivo query SQL filtrate e di trasformare tali filtri in prompt.Uno dei motivi principali per cui è stato creato Query Builder è stato per situazioni come la tua.Ecco come appare la query durante la creazione:

Se guardi da vicino puoi vedere (Richiesta) accanto al filtro.Quindi, quando viene eseguita la query, viene visualizzato un prompt che presenterà automaticamente un selettore di data o un selettore di data e ora, a seconda del formato della variabile:

Qualcosa a cui pensare, per il futuro se non subito.
HTH,
Eric
Ri: Creare un pannello data/ora per estrarre i dati SQLIn termini di selezione degli orari delle date che potresti voler guardare questo filo pure. Quindi utilizzando il codice cortesemente scritto da Vince Feller ti potrebbe piacere provare questo tipo di approccio poiché offre molte più funzionalità:
NomiDefaultToHere ( 1 ) ;
// Scritto da Vince Faller
// Fa apparire un calendario su numeditbox (il valore predefinito è adesso)
// Nota, funziona solo su JMP 11 o versioni successive
dataBox = Funzione (
{ timething = Oggi ()} ,
{ nuovascatola } ,
nuovascatola = Val (
Sostituire (
Nome Espr (
Casella di modifica numero (
timething , // Eval(Sub()) a causa di un problema con JMP
10 , // Ne serve solo perché JMP non imposta una larghezza predefinita
<< Imposta la funzione (
Funzione ( { se stesso } ,
{} ,
Se ( Manca ( se stesso << Ottenere ) ,
se stesso << Impostato ( Val ( MANICHINO ) ) // Imposta la data sull'argomento timething
)
)
) ,
<< Imposta il formato ( Formato ( "m/g/ah:m:s" , 23 , 0 ) ) ; // Crea il formato data/ora per la casella (fornisce il calendario)
)
) ,
Espr ( MANICHINO ) , timething
)
) ;
nuovascatola ;
) ;
ora =
Nuova finestra ( "Intervallo di data e ora" ,
LineUpBox ( NCol ( 2 ) ,
Casella di testo ( "Avvia data e ora" ) , inizio = dataBox ( Oggi () - In ore ( 12 )) ,
Casella di testo ( "Data/Ora di fine" ) , FINE = dataBox () ,
ButtonBox ( "Annulla" , ora << chiudiEindow ) , ButtonBox ( "OK" , eseguiScript )
)
) ;
eseguiScript =
Espr (
ora << Chiudi la finestra ;
inizioDT = inizio << Ottenere ;
fineDT = FINE << Ottenere ;
Stampa ( inizioDT , fineDT ) ;
) ;
Non l'ho fatto controlla il tuo codice originale in dettaglio, ma ho visto che stavi tentando di avere un nome di variabile contenente "/", il che non è consentito a meno che non usi anche "Nome()". Guarda 'Aiuto > Libri > Guida allo scripting' per maggiori dettagli su cosa puoi e non puoi fare.