[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2009
    Beiträge
    4

    AS400-Zugriff mittels Pass-Through Abfrage in Access

    Hallo,

    wir arbeiten mit einer AS400 in der Firma und ich lade jede Menge Daten runter, um damit Berichte zu erstellen.
    Dazu nutze ich Access.

    Kommunikation zwischen AS400 und Access geht mit ODBC und eingebunden habe ich die AS400 in Access als verknüpfte Tabellen, die man als Weltkugel als solche identifizieren kann.
    Darauf baue ich dann meine Abfragen auf und alles läuft auch soweit ganz gut, schon seit vielen Jahren.

    Leider gibt es aber auch Downloads, die aufgrund ihrer Datenmenge locker 60-90 min laufen und ich suche nach einer Möglichkeit die Performance zu steigern.
    Dazu habe ich schon alles Mögliche an Tips und Tricks in Access ausprobiert. Auch habe ich die aktuellsten IBM Treiber und habe wertvolle Einstellungshinweise unserer IT-Abteilung bekommen.

    Meine Recherche hat ergeben, dass ich wohl mittels einer Pass-Through Abfrage an Geschwindigkeit gewinnen würde, da (korrigiert mich, wenn ich falsch liege) nur so oder vorallem so die AS400 die Arbeit erledigt (Filtern der Datensätze) und lediglich die Daten an Access zurückgibt, die verlangt werden.
    Ich bekomme eine Pass-Through Abfrage aber bei allen Versuchen nicht hin. Folgende Fehlermeldung kommt hoch:
    Code:
    ODBC--call failed.
    [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token ; was not valid. Valid tokens: . (#-104)
    
    Kennt das jemand und weiss Abhilfe bitte?

    Gruss, Marlic

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die SQL-Syntax ist in diesem Fall auf die AS/400 beschränkt.
    - keine Access-Funktionen
    - kein Semikolon am Ende
    - kein Parameterverweis auf Formulare
    Die Abfrage muss also per Programmcode ausgeführt werden !

    Beispiel:

    select feld1, feld2, feld3 ...
    from mylib.myfile
    where key1=? and key2=?

    Die Parameter können nicht über die Eigenschaften der Abfrage definiert werden sondern werden automatisch bereitgestellt.
    Das 1. ? ist Parameters(0), das 2. ist Parameters(1) usw.

    PS:
    Ein Performancegewinn ist da eher selten zu beobachten wenn du korrekte Beziehungen herstellst.
    Wenn eine Anfrage sowohl lokale als auch verknüpfte Tabellen verbindet hast du die beschriebenen Nachteile.
    Verknüpfst du aber 2 oder mehr Tabellen aus der selben Datenquelle, wird von Access auch nur 1 SQL an die Quelle abgegeben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2009
    Beiträge
    4
    Hallo,

    In der Tat verknüpfe ich auch beim Download aus der AS400 lokale Tabellen in der Abfrage.
    Ich werde mal einen Feldversuch starten und diese rausnehmen, um deine Theorie zu bestätigen. Danke schon einmal hierfür.

    Meine Pass-Through ist eine ganz banale Abfrage, ohne Kriterien oder Filter, da ich zunächst einmal den Aufbau bzw. den Zugriff auf die AS400 sicherstellen wollte.
    Sie lautete
    Code:
    SELECT Library_Tablename.*
    FROM Library_Tablename
    Dies hatte den o.g. Fehler hervorgebracht.
    Jetzt habe ich versucht lediglich eine einzige Spalte aus der Tabelle anzusprechen, also
    Code:
    SELECT Library_Tablename.Spalte1
    FROM Library_Tablename
    und bekomme zumindest eine andere Fehlermeldung, nämlich
    Code:
    (...) Library_Tablename in Library type *FILE not found.
    Dies verwundert mich, da die library eigentlich nicht falsch sein kann.
    Habe die auch im iSeries Access for Windows ODBC Setup Fenster ausgetauscht und weggelassen, die Fehlermeldung kommt wieder.
    Eine Idee?

    Gruss, Marlic

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Im ODBC-Setup wird die Namenskonvention *SYS/*SQL festgelegt (*SQL ist standard).

    Die Lib wird mit dem Punkt (*SQL) bzw. "/" (*SYS) getrennt, also:

    select * from MyLib.MyTable

    Für Referenzierungen gilt:

    select a.* from MyLib.MyTable a

    erweitert:
    select a.Feld1, a.Feld2 from MyLib.MyTable a, MyLib.MyTable2 b
    where a.Key=b.key
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jun 2009
    Beiträge
    4
    Bingo! Das hat mir sehr viel weitergeholfen, vielen Dank!

    Jetzt geht es ans Testen.

    Gruss, Marlic

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich würde dir Empfehlen, die SQL-Handbücher der AS/400 runterzuladen:
    http://publib.boulder.ibm.com/infoce...sqlp/rbafy.pdf
    http://publib.boulder.ibm.com/infoce...2/rbafzmst.pdf
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jun 2009
    Beiträge
    4
    habe ich gemacht. Danke.

    Gruss, Marlic

Similar Threads

  1. Datenexport mittels iSeries an Microsoft Access
    By njaclogoo in forum NEWSboard Server Software
    Antworten: 4
    Letzter Beitrag: 18-08-06, 10:17
  2. ODBC Zugriff über Access Null-Values
    By Bernd Wiezroek in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 27-04-06, 15:47
  3. Zugriff mit MSAccess auf AS400 via OLE-DB
    By matjesfilet in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-11-05, 16:02
  4. Multisession VPN mit AS400 Client Access Express
    By Unregistriert in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 13-12-04, 14:56
  5. direkter zugriff auf AS/400 (über pass through)
    By nichts_weiss in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-11-04, 12:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •