-
Hallo,
ich habe eine Connection zu As400:
privatestatic System.Data.OleDb.OleDbConnection conn;
Hier ist aber die Rede von ADODB. Ist das einen Library, die ich extra einbinden muss?
Grüße Oli
-
Ob du OleDB, ADODB, ODBC oder die Nativ IBM.DB2 Klassen verwendest ist fürs erste mal egal. Arbeiten kannst du mit verschiedene.
Damit du die OleDB-Klasse verwenden kannst, musst du die "Microsoft ActiveX Data Objects ... Library" hinzufügen (COM).
Wichtig ist nur, dass du den korrekten Connection-String angiebst.
AS/400 (IBM iSeries) Connection String Samples - ConnectionStrings.com
OleDB ist aber meiner Meinung nach nicht die beste Wahl. Ich verwende die ODBC-Klasse.
-
Dann sollte das so funktionieren:
conn.Execute("CALL QCMDEXC ('" + command + "', " + command.Length + ", 'IGC'" + ")", out recAff, 0);
??
-
command.length musst du allerdings als Zahl mit 10 Vorkomma und 5 Nachkomma formatieren.
In VB geht das mit
Format(command.length, "0000000000.00000")
Der 3. Parameter ist nicht erforderlich und nur für DBCS (IGC) gültig.
Enthält dein Command Hochkomma, dann sind diese vorher zu verdoppeln.
-
Hi,
hab den 3.Paramter rausgeschmissen.
Jetzt funktioniert es.
Allerdings auch mit command.Length ohne Formatierung...
Oder ist das nur Zufall und es kann irgendwann zu Problemen führen?
Grüße Oli
-
Müsste eigentlich Zufall sein da der 2. Parameter ja dec(15, 5) sein muss.
Je nach Release wird aber ein Call auf QCMDEXC speziell erkannt.
-
Hi,
wenn ich die Länge des Commands aber mit "0000000000.00000" formatiere und das Command ist länger, führt das dann nicht zu Problemen?
Oder was ist mit dieser Länge sonst gemeint?
Grüße Oli
-
Hi,
conn.Execute("CALL QCMDEXC ('" + command + "', '" + String.Format("{0:000000000000000.00000}",command.Length) + "')", out recAff, 0);
bringt jetzt folgende Fehlermeldung:
CPF0006: Im Befehl ist ein Fehler aufgetreten.
Ursache . . . . : Falls bei einem Teil des Befehls eine falsche Länge weitergegeben wurde, werden andere Nachrichten ausgegeben, weil der falsche Teil des Befehls analysiert wird. Fehlerbeseitigung: Die zuvor im Jobprotokoll aufgelisteten Nachrichten überprüfen. Die Fehler korrigieren und anschließend den Befehl wiederholen.
Woran kann das liegen? Die Formatierung sollte doch ok sein, oder?
Grüße Oli
-
Lass dir mal den kompletten String als Text anzeigen, was da wirklich übergeben wird.
"CALL QCMDEXC ('" + command + "', '" + String.Format("{0:000000000000000.00000}",command.Length) + "')"
-
Die Längenangabe muß insgesamt genau 15 Stellen lang sein, 10 Stellen vor und 5 Stellen nach dem Komma. Und sie muß in gepackter Form übergeben werden. Siehe Beschreibung.
-
Das mit dem gepackt kannst du getrost vergessen, das erledigt SQL für dich automatisch.
Allerdings hast du ein paar zu viele Nullen: 10 vor dem Punkt, 5 nach dem Punkt.
Ach ja und wichtig:
Die Längenangabe selber wird nicht in Hochkomma gepackt !!!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks