[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2005
    Beiträge
    47

    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

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hi Oli,
    ein gutes Tutorial ist folgender Link:
    myCSharp.de - DIE C# und .NET Community | Artikel | [Artikelserie] Parameter von SQL Befehlen
    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

  3. #3
    Registriert seit
    Feb 2005
    Beiträge
    47
    Hallo Andreas,

    ich möchte ein QCMDEXC mit einem vorgegebenen CommandString aufrufen. Das ist eben mein Problem.

    Danke Oli

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  5. #5
    Registriert seit
    Feb 2005
    Beiträge
    47
    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

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    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.

  7. #7
    Registriert seit
    Feb 2005
    Beiträge
    47
    Dann sollte das so funktionieren:

    conn.Execute(
    "CALL QCMDEXC ('" + command + "', " + command.Length + ", 'IGC'" + ")", out recAff, 0);

    ??

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    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

  9. #9
    Registriert seit
    Feb 2005
    Beiträge
    47
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    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

Berechtigungen

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