Script - Travailler avec la table de données à partir de la requête OBBCSalut à tous -
Je travaille avec deux ensembles de données stockés dans la base de données Microsoft Access, que j'obtiens via des requêtes ODCB. Je dois joindre les deux tables de données résultantes, avant de faire d'autres manipulations de données.
J'ai scénarisé l'ensemble du processus, mais il ne s'exécute pas complètement à la fois. Je dois toujours d'abord exécuter le script pour les deux requêtes ODCB, puis exécuter mon script pour la jonction de tables et d'autres manipulations.
Sinon, je reçois un message d'erreur: " Impossible de localiser la table de données lors de l'accès ou de l'évaluation de la 'table de données', table de données / * ### * / ("qStreams") "
("qStreams" étant des deux tables que j'ai obtenues à partir de la requête ODCB).
Je pense que je devrai peut-être ajouter un script pour stocker / déclarer les tables de données que j'obtiens à partir des requêtes ODCB afin de l'utiliser plus tard, et c'est là que je suis bloqué, car je ne suis pas familier avec le script JSL (c'est mon premier script en fait).
Merci de votre aide.
ScriptingRe: Script - Travailler avec la table de données à partir de la requête OBBCsalut @JRS ,
Essayez de conserver une référence aux tables de données que vous ouvrez avec chaque connexion ODBC et de les utiliser au lieu d'appeler par leur nom, comme ceci:
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 ),
...
);
Re: Script - Travailler avec la table de données à partir de la requête OBBCMerci beaucoup pour la réponse rapide.
Je comprends le concept mais je ne peux pas l'appliquer à mon cas spécifique. Mon script de requête ressemble à ceci pour le moment:
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;
Je me rends compte que j'aurais dû partager mon scénario tout de suite.
Appréciez vos conseils supplémentaires.
Re: Script - Travailler avec la table de données de la requête OBBCVous définiriez une variable égale à la valeur de Nouvelle requête SQL.En utilisant les fonctions de plus haut niveau de votre script, cela pourrait ressembler à ceci:
//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( ... );
Re: Script - Travailler avec la table de données de la requête OBBCSalut -
J'ai toujours un problème pour joindre les deux tables, voici le script que j'ai implémenté après votre message:
// 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%" )
);
Mais cela donne toujours une erreur:
