Skript - Arbeiten mit Datentabelle aus OBBC-AbfrageHallo allerseits -
Ich arbeite mit zwei in der Microsoft Access-Datenbank gespeicherten Datensätzen, die ich über ODCB-Abfragen erhalte. Ich muss die beiden resultierenden Datentabellen verbinden, bevor ich weitere Datenmanipulationen vornehmen kann.
Ich habe den gesamten Prozess per Skript ausgeführt, er wird jedoch nicht sofort vollständig ausgeführt. Ich muss immer zuerst das Skript für die beiden ODCB-Abfragen ausführen und dann mein Skript für Tabellenverknüpfungen und andere Manipulationen ausführen.
Sonst bekomme ich eine Fehlermeldung: " Datentabelle kann beim Zugriff oder bei der Auswertung von 'Datentabelle', Datentabelle / * ### * / ("qStreams") nicht gefunden werden ""
("qStreams" gehört zu den beiden Tabellen, die ich von der ODCB-Abfrage erhalten habe).
Ich habe das Gefühl, dass ich möglicherweise ein Skript hinzufügen muss, um die Datentabellen zu speichern / deklarieren, die ich aus den ODCB-Abfragen erhalte, um sie später verwenden zu können. Hier stecke ich fest, da ich mit JSL-Skripten nicht vertraut bin (dies ist meine erste Skript eigentlich).
Danke für Ihre Hilfe.
SkriptingBetreff: Skript - Arbeiten mit Datentabelle aus OBBC-AbfrageHallo @JRS ,
Versuchen Sie, einen Verweis auf die Datentabellen beizubehalten, die Sie mit jeder ODBC-Verbindung öffnen, und verwenden Sie diese, anstatt wie folgt beim Namen aufzurufen:
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 ),
...
);
Betreff: Skript - Arbeiten mit Datentabelle aus OBBC-AbfrageVielen Dank für die schnelle Antwort.
Ich bekomme das Konzept, kann es aber nicht für meinen speziellen Fall anwenden. Mein Abfrageskript sieht momentan so aus:
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;
Mir ist klar, dass ich mein Skript sofort hätte teilen sollen.
Schätzen Sie Ihre weitere Anleitung.
Betreff: Skript - Arbeiten mit Datentabelle aus OBBC-AbfrageSie würden eine Variable festlegen, die dem Wert von New SQL Query entspricht.Wenn Sie die Funktionen Ihres Skripts auf höchster Ebene verwenden, sieht es möglicherweise folgendermaßen aus:
//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( ... );
Betreff: Skript - Arbeiten mit Datentabelle aus OBBC-AbfrageHallo -
Es gibt immer noch Probleme beim Verbinden beider Tabellen. Hier ist das Skript, das ich nach Ihrem Beitrag implementiert habe:
// 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%" )
);
Aber es gibt immer noch einen Fehler:
