Script: lavora con la tabella dati dalla query OBBCCiao a tutti -
Sto lavorando con due set di dati archiviati nel database di Microsoft Access, che ottengo tramite query ODCB. Devo unire le due tabelle di dati risultanti, prima di effettuare ulteriori manipolazioni dei dati.
Ho scritto l'intero processo, tuttavia non viene eseguito completamente in una volta. Devo sempre eseguire prima lo script per le due query ODCB, quindi eseguire il mio script per l'unione delle tabelle e altre manipolazioni.
Altrimenti ricevo un messaggio di errore: " impossibile individuare la tabella dati in accesso o valutazione di 'data table' , Data Table/*###*/("qStreams") "
("qStreams" è delle due tabelle che ho ottenuto dalla query ODCB).
Sento che potrei aver bisogno di aggiungere uno script per archiviare/dichiarare le tabelle di dati che ottengo dalle query ODCB per poterlo utilizzare in seguito, ed è qui che sono bloccato, perché non ho molta familiarità con lo script JSL (questo è il mio primo script in realtà).
Grazie per l'aiuto.
Accesso ai datiRi: Script - Lavora con la tabella dati dalla query OBBCI ragazzi dell'assistenza JMP hanno risposto ma era nella mia casella di posta indesiderata.
Hanno suggerito proprio come hai detto, e ha funzionato bene.
Incollare il loro feedback dettagliato a beneficio di tutti:
=================================================== ===============================================
L'invio del messaggio <

Utilizzo < con il OnRunComplete opzione per assegnare un riferimento alla tabella importata. Ciò farà sì che lo script attenda il completamento della query. Inoltre, Query Builder crea un simbolo disponibile solo per lo script OnRunComplete() denominato "queryResult". Questo simbolo è un riferimento alla tabella risultante .
<< Esegui in primo piano( On Run Complete( dt = queryResult ) );
Puoi leggere di più sulle funzioni disponibili e sui loro argomenti the Funzioni SQL sezione del riferimento alla sintassi JSL.
=================================================== ===============================================
Quindi nell'applicazione:
dtqProperties = (New SQL Query(
Version( 130 ),
Connection(
"ODBC:DBQ=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb;DefaultDir=C:\Users\E822710\Desktop\ROTF\Database For JMP;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DriverId=25;FIL=MS Access;FILEDSN=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
),
QueryName( "qProperties" ),
Select(
Column( "CaseID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamTag", "t1" ),
Column( "StreamDescription", "t1" ),
Column( "QualityID", "t1", Analysis Type( "Nominal" ) ),
Column( "QualityTag", "t1" ),
Column( "QualityDescription", "t1" ),
Column( "Value", "t1", Alias( "StreamQualityValue" ) ),
Column( "OriginDescription", "t1", Alias( "StreamOriginDescription" ) )
),
From( Table( "RW_StreamQualities", Alias( "t1" ) ) ),
Where(
In List(
Column( "QualityTag", "t1" ),
{"CRB"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
),
Order By(
Column( "CaseID", "t1", Order( "Ascending" ) ),
Column( "StreamReportOrder", "t1", Order( "Ascending" ) ),
Column( "QualityReportOrder", "t1", Order( "Ascending" ) )
)
) << Run Foreground( On Run Complete( dt = queryResult ) ));
Ri: Script - Lavora con la tabella dati dalla query OBBC@jthi buon pensiero!
Se questo è il problema, questo post potrebbe aiutare: Esegui le query in background, attendi che vengano completate e fai riferimento a esse nello script JSL rimanente
Ri: Script - Lavora con la tabella dati dalla query OBBCStai eseguendo la query in primo piano o in background (penso che questo dipenda dalle preferenze ma puoi forzarlo)? Se vengono eseguiti in background, potrebbe significare che le query non terminano prima di provare a unire i datatable insieme.
Ri: Script - Lavora con la tabella dati dalla query OBBCGrazie per aver dedicato del tempo a esaminarlo. Purtroppo non ha funzionato.
Ho contattato il supporto di JMP, ma finora ho ricevuto loro notizie. Non sono sicuro se rispondono a questo tipo di domanda tecnica.
Ri: Script - Lavora con la tabella dati dalla query OBBCQuindi qui devo ammettere che non uso New SQL Query molto spesso.Il tuo codice sembra corretto.Due idee qui, una che tu Potrebbe è necessario inserire le parentesi (New SQL Query( ... ) << Run) e un altro è includere un'istruzione wait per assicurarsi che le query vengano effettivamente valutate prima di andare avanti.Prova a eseguire il tuo codice una riga alla volta e verifica se le n funzioni di riga restituiscono il numero che ti aspetti.
//Get data
dtqStreams = (New SQL Query( ... ) << Run);
dtqProperties = (New SQL Query( ... ) << Run);
//Make sure everything evaluates
wait(1);
//check that table contains values
n row( dtqStreams );
// Join both Data Tables
dtJoined = dtqStreams << Join( With( dtqProperties ), ... );
// Set column properties
dtJoined:"StreamFeedFlag"n << Add Column Properties( ... );
// Add new columns
dtJoined << New Column( ... );
// Make graphs from your joined data table
dtJoined << Graph Builder( ... );
Ri: Script - Lavora con la tabella dati dalla query OBBCCIAO -
Avendo ancora qualche problema con l'unione di entrambe le tabelle, ecco lo script che ho implementato seguendo il tuo post:
// Join both Data Tables
dtJoined = dtqStreams << Join(
With( dtqProperties ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :CaseID = :CaseID, :StreamID = :StreamID ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "UnitBalance.HY%" )
);
Ma dà ancora un errore:

Ri: Script - Lavora con la tabella dati dalla query OBBCDovresti impostare una variabile uguale al valore di New SQL Query.Utilizzando le funzioni di livello più alto del tuo script, potrebbe apparire così:
//Get data
dtqStreams = New SQL Query( ... ) << Run;
dtqProperties = New SQL Query( ... ) << Run;
// Join both Data Tables
dtJoined = dtqStreams << Join( With( dtqProperties ), ... );
// Set column properties
dtJoined:"StreamFeedFlag"n << Add Column Properties( ... );
// Add new columns
dtJoined << New Column( ... );
// Make graphs from your joined data table
dtJoined << Graph Builder( ... );
Ri: Script - Lavora con la tabella dati dalla query OBBCMolte grazie per la rapida risposta.
Capisco il concetto ma non sono in grado di applicarlo al mio caso specifico. Il mio script di query ha questo aspetto in questo momento:
New SQL Query(
Version( 130 ),
Connection(
"ODBC:DBQ=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb;DefaultDir=C:\Users\E822710\Desktop\ROTF\Database For JMP;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DriverId=25;FIL=MS Access;FILEDSN=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
),
QueryName( "qProperties" ),
Select(
Column( "CaseID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamTag", "t1" ),
Column( "StreamDescription", "t1" ),
Column( "QualityID", "t1", Analysis Type( "Nominal" ) ),
Column( "QualityTag", "t1" ),
Column( "QualityDescription", "t1" ),
Column( "Value", "t1", Alias( "StreamQualityValue" ) ),
Column( "OriginDescription", "t1", Alias( "StreamOriginDescription" ) )
),
From( Table( "RW_StreamQualities", Alias( "t1" ) ) ),
Where(
In List(
Column( "QualityTag", "t1" ),
{"CRB"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
),
Order By(
Column( "CaseID", "t1", Order( "Ascending" ) ),
Column( "StreamReportOrder", "t1", Order( "Ascending" ) ),
Column( "QualityReportOrder", "t1", Order( "Ascending" ) )
)
) << Run;
Mi rendo conto che avrei dovuto condividere subito la mia sceneggiatura.
Apprezzo la tua ulteriore guida.
Ri: Script - Lavora con la tabella dati dalla query OBBCCIAO @JRS ,
Prova a mantenere un riferimento alle tabelle di dati che apri con ogni connessione ODBC e utilizza quelle invece di chiamare per nome, in questo modo:
dt1 = Open Database( "DSN=My Data Source Name", "SELECT * FROM table1" );
dt2 = Open Database( "DSN=My Data Source Name", "SELECT * FROM table2" );
dt1 << Join(
With( dt2 ),
...
);