Toolmaker Produkt-Dokumentation

Aufruf von directaccess4i

Wie Sie im Kapitel 4 bereits gelesen haben, können Sie mittels STRDAISQL ganz einfach einen SQL Befehl gegen eine Datenbank ausführen. STRDAISQL dient u.a. dafür, einen SQL Befehl interaktiv auf dem System i zu testen, bevor man ihn in ein vorhandenes RPG, Cobol oder CL Programm einbaut.

STRCDBSQL verwendet für die Ausführung die gleiche Schnittstelle, die Sie in Ihren Anwendungen verwenden und die nun näher beschrieben wird.

Aus Ihren Programmen können Sie directaccess4i einfach per CALL aufrufen.

0033 – Aufruf Schnittstelle zur externen Datenbank


Die notwendigen Parameter lauten:

CTID – 4 A

Dies ist eine Identifikationsnummer, die von directaccess4i vorgegeben wird. Anhand dieser ID können Sie Ihre Befehle an die externe Datenbank nachverfolgen und protokollieren (s. SELECT Beispiel).

CTMODE – 2 A

Über den Modus können Sie steuern, wie directaccess4i laufen soll.

01 = Aufruf über CALL

D.h. wenn Sie directaccess4i jedes Mal aus Ihren Programmen per CALL aufrufen, wird es jedes Mal gestartet und läuft bis der übergebene Befehl abgearbeitet ist.

02 = Verarbeitung über Data Queue

Wenn Sie directaccess4i mit Parameter 02 starten, wird es permanent laufen und die DTAQ CTCMD überwachen. Über die DTAQ erhält directaccess4i seine Anweisungen.

Diese Verarbeitung ist bei vielen Zugriffen erheblich schneller und Resourcen schonender.

Mode 02 ist für INSERT, UPDATE und DELETE möglich.

Sie sollten directaccess4i mittels SBMJOB als Batch Job aufrufen. Statt nun aus Ihrem RPG/Cobol Programm die Befehle mittels CALL aufzurufen, schicken Sie sie in die DTAQ. Sie finden in der QRPGLESRC ein Beispielprogramm hierfür (EXAMPLED04).

03 = Aufruf über CALL mit Angabe einer extern beschriebenen Datei.

Dieser Modus gilt nur für SELECT Anweisungen, bei denen Sie das Ergebnis in einer extern beschriebenen Datenbankdatei auf dem System i empfangen möchten. Wenn die Datei noch nicht existiert wird sie automatisch erstellt.

WICHTIG: Wenn Sie Modus 03 nutzen möchten, muss auf dem Gateway PC IBM IBM i Access

V5R3 oder höhe mit dem ADO.NET Datenprovider von IBM installiert sein.

07 = Mit Mode 07 können Sie Daten vom System i mit nur einem SQL Befehl (der natürlich auch sehr komplex sein darf) in Excel und MS SQL Server exportieren. Im Falle von Excel geben Sie bei CTTARGETIP den Pfad und Dateinamen, der zu erstellenden Excel Tabelle an (z.B. c:\Temp\meinexcel.xls). Bei CTENHANCED können Sie den Sheetnamen der zu erstellenden Excel Datei angeben. Wenn Sie diesen weg lassen, wird Sheet1 als Standardname verwendet. Wie bei Mode 03 ist auch hier der IBM ADO.NET Datenprovider, der ab IBM i Access V5R3 oder höher vorhanden ist, notwendig.

CTEXTDB – 10 A

Mit diesem Parameter teilen Sie directaccess4i mit, welche externe Datenbank Sie ansprechen möchten:

  • MYSQL4 - MySQL Datenbank Version 4.1
  • MYSQL5 - MySQL Datenbank Version 5.1
  • ACCESS2003 - Microsoft Access 2003 oder älter
  • ACCESS2007 - Microsoft Access 2007
  • EXCEL2000 - Microsoft Excel 2000 oder neuer
  • EXCEL97 - Microsoft Excel 97
  • MSSQL2000 - Microsoft SQL Server 2000
  • MSSQL2005 - Microsoft SQL Server 2005
  • ORACLE - Oracle Datenbank
  • DB2IBM I - IBM DB2 auf System i
  • DB2V9 - IBM DB2 V9 (Unix, Linux, Windows) inkl. XML Datentyp
  • INFORMIX - IBM INFORMIX Datenbank
  • SYBASE - Sybase Advantage Database Server
  • PSTGRE - Postgre SQL Datenbank
  • ODBC - Jede beliebige Datenbank, für die Sie einen ODBC Treiber haben

Im Falle des ODBC Treibers sollten Sie uns mitteilen, welche Datenbank Sie benutzen, damit wir einen nativen ADO.net Datenprovider einbauen können, der um einiges schneller ist, als ein ODBC Treiber.

CTRTCODE – 4 A

Dieser Parameter meldet Ihrem Programm zurück, ob der Befehl erfolgreich ausgeführt wurde oder ob Fehler aufgetreten sind.

Beachten Sie, dass mit unserem neuen Gateway Programm, welches Sie aktuell auf Anfrage erhalten, auch die exakte Fehlermeldung der Datenbank im Parameter CTSQLCMD zurückgeliefert wird!

Hier eine Liste der möglichen Fehlermeldungen:

  • 0xxx - Lizenzfehler
  • 0001 - Der Key ist abgelaufen
  • 0002 - Die Systemdaten passen nicht zum eingetragenen Schlüssel
  • 3xxx - Fehler aus Socket-Programm
  • 3425 - Ein ferner Host hat den Verbindungsversuch abgelehnt
  • 3455 - Broken Pipe - Tritt normalerweise auf, wenn die Verbindung bereits hergestellt ist und dann abbricht. Im Testfall ist es aufgetreten, weil gar keine Verbindung hergestellt werden konnte
  • 6xxx - Fehler aus directaccess4i Gateway Programm
  • 6001 - Microsoft Access Datenbank konnte nicht geöffnet werden
  • 6002 - Microsoft Access Datenbank Befehl konnte nicht ausgeführt werden
  • 6003 - MySQL Datenbank konnte nicht geöffnet werden
  • 6004 - MySQL Datenbank Befehl konnte nicht ausgeführt werden
  • 6005 - ORACLE Datenbank konnte nicht geöffnet werden
  • 6006 - ORACLE Datenbank Befehl konnte nicht ausgeführt werden
  • 6007 - Microsoft SQL Server Datenbank konnte nicht geöffnet werden
  • 6008 - Microsoft SQL Server Datenbank Befehl konnte nicht ausgeführt werden
  • 6009 - IBM DB2 for IBM i Datenbank konnte nicht geöffnet werden
  • 6010 - IBM DB2 for IBM i Datenbank Befehl konnte nicht ausgeführt werden
  • 6011 - ODBC Datenbank konnte nicht geöffnet werden
  • 6012 - ODBC Datenbank Befehl konnte nicht ausgeführt werden
  • 7xxx - Fehler aus RPG-Programm
  • 7001 - Kein Zeilenendezeichen übergeben §$
  • 7002 - Keine SQL-Anweisung übergeben
  • 7003 - Modus ungültig
  • 7004 - Datenbank nicht unterstützt
  • 7005 - Portnummer ist nicht numerisch
  • 7006 - Bei Modus 03 muss auch EPPFODTAQ und EPLIBRARY gefüllt sein

CTDTAQ2PF – 1 A

Mit diesem Parameter können Sie directaccess4i anweisen, alle Daten, die er per SELECT (s.u.) aus der externen Datenbank gelesen hat, parallel in eine DTAQ UND eine physische Datenbankdatei zu schreiben.

Mögliche Werte:

J = JA – Daten werden nur in die physische Datei CTRCV geschrieben

N oder BLANK – Daten werden nur in DTAQ CTRECV geschrieben

CTTARGETIP – 200 A

Dieser Parameter enthält entweder die TCP/IP Adresse bzw. DNS Namen des externen Datenbankservers oder den Windows Pfadnamen einer Access Datenbank.

Im Falle von ODBC muss hier der Name des ODBC Treibers des directaccess4i Gateway PC's eingetragen sein.

WICHTIG: Der Parameter muss mit den Zeichen §$ abgeschlossen werden bzw. den Zeilenendezeichen, die Sie im directaccess4i Administrator oder WRKCDB Punkt 2 hinterlegt haben.

Beispiele:

192.168.1.1§$
IBM IProduktion§$
C:\Datenbank\MeineAccessDatenbank.mdb§$

CTUSER – 30 A

CTPASSWORD – 30 A

Wenn bei der externen Datenbank ein Benutzername und ein Kennwort benötigt werden, können diese hier eingetragen werden.

CTENHANCED – 30 A

Dieser Parameter ist für optionale Zusatzinformationen vorgesehen.

Bei ORACLE Datenbanken kann hier der Servicename angegeben werden. Bei Oracle 10g wird, wenn kein Servicename angegeben wird, XE als Standardwert benutzt.

Bei Mode 07 können Sie hier im Falle eines Exports in Excel z.B. den Sheet Namen angeben, der in der zu erstellenden Excel Tabelle erstellt und verwendet werden soll.

Bei der IBM DB2 für Linux, Unix und Windows müssen Sie hier z.B. den Namen der Datenbank angeben.

CTPFODTAQ – 20 A

Zusammen mit dem Modus 03 müssen Sie hier den Namen der extern beschriebenen Datenbankdatei auf der IBM i angeben, in die die SELECT Ergebnisdaten geschrieben werden.

Bei Modus 02 können Sie hier den Namen einer eigenen DTAQ eintragen, in die die Daten von directaccess4i zurückgegeben werden.

Bei Modus 01 können Sie hier den Namen einer eigenen DTAQ eintragen, in welche Daten, die mittels SELECT zurück geliefert werden, geschrieben werden.

Damit kann z.B. für jede Bildschirmsitzung eine DTAQ angelegt werden, wenn directaccess4i im Dialog verwendet werden soll.

CTLIBRARY – 10 A

Hier muss der Namen der Bibliothek stehen, für die DTAQ oder physische Datei aus dem vorherigen Parameter CTPFODTAQ.

CTSQLCMD – 32000 A

Last but not least – der Parameter, der den SQL Befehl enthält.

Sie müssen hier den SQL Befehl so angeben, wie er von der externen Datenbank erwartet wird.

D.h. eine MySQL Datenbank hat u.U. eine andere Schreibweise für div. Angaben, als eine Microsoft SQL Server Datenbank.

WICHTIG: Der Parameter muss ebenfalls mit den Zeilenendezeichen (Standard §$) abgeschlossen

werden, die Sie im directaccess4i Administrator bzw. WRKDIRACC Punkt 2 eingetragen haben.