View Full Version : Command Call über c#
Hallo,
ich habe ein c# Anwendung. Aus dieser soll ein CommandString ausgeführt werden. Kann mir jemand ein Tutorial nennen, wo das beschrieben ist oder hat jemand ein Codeschnipsel, das aufzeigt wie das funktioniert?
Danke Oli
andreaspr@aon.at
17-06-10, 09:54
Hi Oli,
ein gutes Tutorial ist folgender Link:
myCSharp.de - DIE C# und .NET Community | Artikel | [Artikelserie] Parameter von SQL Befehlen (http://www.mycsharp.de/wbb2/thread.php?postid=3512877#post3512877)
Da wird beschrieben wie man das ganze mit Parameter angehen kann.
Statt ein Insert, machst du halt ein Call, und:
MyAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
Es kommt darauf an, was du als rückgabewert erwartest (Nichts oder Tabelle ...?).
Willst du eine Stored Procedure von dir aufrufen oder ein QCMDEXC ...?
lg
Hallo Andreas,
ich möchte ein QCMDEXC mit einem vorgegebenen CommandString aufrufen. Das ist eben mein Problem.
Danke Oli
andreaspr@aon.at
17-06-10, 10:07
Es gibt im Forum schon ein paar Themen darüber:
http://newsolutions.de/forum-systemi-as400-i5-iseries/system-i-hauptforum/15133-call-aus-excel-vba.html?highlight=QCMDEXC
Hallo,
ich habe eine Connection zu As400:
private static System.Data.OleDb.OleDbConnection conn;
Hier ist aber die Rede von ADODB. Ist das einen Library, die ich extra einbinden muss?
Grüße Oli
andreaspr@aon.at
17-06-10, 10:30
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 (http://www.connectionstrings.com/as-400)
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.