Anmelden

View Full Version : IBMDA400 OLEDB



Seiten : 1 2 [3]

Fuerchau
23-06-04, 18:08
@Sven
Wie heißts so schön: wer lesen kann ist klar im Vorteil !
Wahrscheinlich sollte man die Fehler in 10-facher Schriftgröße mit dick Rot markeiren. Also mehr als auf die doppelte {-Klammer hinzuweisen geht wirklich nicht.

rst
24-06-04, 09:21
In der Eile habe ich übersehen, dass es mehrere Seiten zu diesem Thema gibt
und dadurch auch den Beitrag von Sven nicht gelesen.
Ich probiere es sofort aus.

rst

rst
25-06-04, 13:48
Danke Sven für den Tipp.

Dein Antworttext.
Zwei geschweifte Klammern rufen immer den Remote-Command Server, weile der CommandText dann von IBMDA400 als Command interpretiert wird und nicht als SQL-String !!!.

Ich habe es mit einer geschweiften Klammer probiert.
Es ist richtig das dann der Database Server Job QZDASOINIT angesprochen wird,
aber wie Du schon schreibst "von IBMDA400 als Command interpretiert wird und nicht als SQL-String !!!." er wird als SQL interpretiert und bringt mir somit einen SQL Fehler.

Der Zweite Tipp war Super...

Mit dem ODBC Treiber kann mann das Problem Lösen.
folgender Link gibt noch nützliche Hinweise (Listing3):
http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0402chong2/index.html#listing2 (http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0402chong2/index.html#listing2)


Beispiel Programm:
ODBC-Treiber in Verbindung mit den ADO-Objektklassen.

Sub Artikel_anlegen()

Dim Sachn$, strSQL1$
Dim Merk1 As Boolean
Sachn = "'1234-0235'"

Const IP = "192.1.1.xxx"
'Const cnnstr400 = "DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=" & IP & ";DBQ=LIB1,LIB2,LIB3,LIB4"

Dim cnn400 As ADODB.Connection
Dim cmd400 As ADODB.Command
Dim rst400 As ADODB.Recordset

Merk1 = True

On Error Resume Next

'Open Connection
Set cnn400 = New ADODB.Connection
cnn400.ConnectionString = "DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=" & IP & ";DBQ=Lib1,LIB2,LIB3,LIB4"
cnn400.Provider = "MSDASQL"
cnn400.CursorLocation = adUseClient
cnn400.Open , "user", "pwd"

strSQL1 = _
"SELECT TSACHN " & _
"FROM LIB1.Artikelstamm " & _
"WHERE (Artikel =" & Sachn & ") "

'Set the command text
Set cmd400 = New ADODB.Command
Set cmd400.ActiveConnection = cnn400
With cmd400
strSQL1 = _
"SELECT Artikel " & _
"FROM LIB1.Artikelstamm " & _
"WHERE (Artikel =" & Sachn & ") "
.CommandTimeout = 100
.CommandText = strSQL1
.CommandType = adCmdText
.Execute
End With

'Open the recordset
Set rst400 = New ADODB.Recordset
Set rst400.ActiveConnection = cnn400
rst400.Open cmd400
'Prüfen ob Artikelnummer im Teilestamm vorhanden ist.
While Not rst400.EOF
MsgBox "Sachnummer ist im Artikelstamm vorhanden."
Merk1 = False
rst400.MoveNext
Wend

If Merk1 = True Then
strSQL1 = _
"INSERT INTO LIB1.Artikelstamm (Artikel) VALUES(" & Sachn & ")"
With cmd400
.CommandText = strSQL1
.CommandType = adCmdText
.Execute
End With
End If
'close the connection
cnn400.Close
Set cmd400 = Nothing
Set rst400 = Nothing
Set cnn400 = Nothing
End Sub

Dieses Programm läuft unter VB6.

Der Database Server Job QZDASOINIT hat somit die gewünschten Bibliotheken
im Zugriff..

Bibliotheksliste anzeigen

System: MeineAS400

Job: QZDASOINIT Benutzer: QUSER Nummer: 165496



Auswahl eingeben und Eingabetaste drücken.

5=Objekte in Bibliothek anzeigen



Aus-

wahl Bibliothek Art Text

QSYS SYS Systembibliothek

QSYS2 SYS Systembibliothek für einh. Anwendungsunterstützung

QHLPSYS SYS

QUSRSYS SYS

QIWS PRD

LIB1 USR

LIB2 USR

LIB3 USR

LIB4 USR

Fuerchau
25-06-04, 14:05
Der IBMDA400 hat noch ein paar weitere Nachteile:

Journalisierung wird NICHT unterstützt (warum auch immer) und, was ich in der Verbindungsfolge IMMER einstelle (inzwischen Default): COMPRESSION=1 um die Datenkomprimierung einzuschalten (von IBMDA400 nicht unterstützt).

Bei LAN's gibt es nämlich keine Einstellmöglichkeit (wäre schön) sondern nur bei WAN's. Das Abrufen der Daten erfolgt tatsächlich schneller.