[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2008
    Beiträge
    2

    ODBC Verbindung AS/400

    Hallo an alle,

    ich habe zwar schon ähnliche Themen hier gefunden, aber diese waren mir immer etwas zu unausführlich, daher nochmal diese Frage.

    Ich möchte mittels eines eigenen Programms (in meinem Fall mit VB) einen Connect zur AS/400 über den iSeries Access ODBC Treiber realisieren und ein paar Daten auslesen.

    Nun gibt es ja mehrere Ansätze.
    - ODBC.Connection
    - ADODB. Connection

    Bis jetzt habe ich ein DSN eingerichtet und schon ein paar Codeschnipsel geschrieben, aber ich bekomme einfach kein Connect hin.

    ODBC:
    Code:
     Dim odbcCon As Odbc.OdbcConnection
     Dim reader As Odbc.OdbcDataReader
     Dim cmd As Odbc.OdbcCommand
        
     strSQL = "SELECT ORDNO FROM MOMAST"
    
     odbcCon = New Odbc.OdbcConnection("DSN=DSNname")
    odbcCon.Open()
    cmd = New Odbc.OdbcCommand(strSQL,odbcCon)
        reader = cmd.ExecuteReader()
        Do While reader.Read()
            tmp1 = reader["ORDNO"]
            Debug.print (tmp1)
        Loop
    
        reader.Close
        odbcCon.close
    Dann sagt er mir Benutzer ungültig und Password length = 0, muss ich die bei der ODBC.Variante noch irgendwo angeben?

    Hat jemand eine ADODB Varinate parat?



    Viele Grüße
    Andreas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.334
    Deine ODBC-Klassen kenne ich (noch) nicht, aber mit ADODB gehts so:

    dim myCnn as new adodb.connection
    dim myRcd as adodb.recordset

    myCnn.ConnectionString = "DSN=MyDSN"
    myCnn.Properties("User Id")="MYUSER"
    myCnn.Properties("Password")="MYPASSW"
    myCnn.Open

    set myRcd = myCnn.Execute("select ...")
    do while myRcd.EOF=FALSE
    myRcd.MoveNext
    loop

    In Verbindungsfolgen können meistens auch weitere Einstellungen vorgenommen werden:

    "DSN=MyDsn;User Id=MYUSER;PWD=MYPASSW;"

    Statt "User Id" geht auch manchmal nur "User" und bei "PWD" gaht auch häufig "Password". Das ist jedoch sehr treiberspezifisch.

    Beachte noch den Unterschied zwischen ADODB und ODBC (.NET):
    Bei ADO wird zwischen Client- und Server-Cursor unterschieden.
    Ein Client-Cursor lädt beim Open bereits das gesamte Ergebnis in den Hauptspeicher, ein Server-Cursor holt Block/Satzweise.

    Ein NET-Reader wirkt wie ein Server-Cursor, eine DataTable (o.ä.) wie ein Client-Cursor.
    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

  3. #3
    Registriert seit
    Oct 2008
    Beiträge
    2
    Vielen Dank für diese Infos. Das hat mir schon sehr geholfen.

    Eine Frage noch zu Ihrem Tipp. Wenn ich die ADO-Variante wähle, wie entscheide ich nun (also Programmtechnisch), ob ich einen Server oder einen Client-Cursor verwende. Wenn ich ODBC verwende habe ich immer einen Server-Cursor? Hab ich das richtig verstanden?

    Denn ich will natürlich unbedingt einen Server-Cursor und nicht den Speicher "vollmüllen".

    Viele Grüße aus Berlin

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.334
    Nunja, das mit dem Speicher ist immer so eine Sache.
    Die Doku und Beispiele zu ADO (MSDN) sind eigentlich ganz gut.
    Schau mal im Windows-Verzeichnis unter Help/ADO210.CHM nach, das meiste gilt auch heute noch.

    Es gibt je nach Anwendung Vor- und Nachteile für die Cursorart:

    ClientCursor unterstützt Filter-/Find-/Move-Methoden sowie RecordCount/AbsolutePosition/Bookmark-Eigenschaften.

    ServerCursor sind meist statisch (hängt vom SQL ab) und können nur dann auch nur vorwärts gelesen werden.

    Die meisten Forms-Controls kommen mit Servercursorn überhaupt nicht zurecht.

    Deshalb ist das in .NET ja auch abgeschafft, hier gibts eben die Reader zum reinen vorwärts lesen oder komplette Datenbankmodelle mit Tables/Relations usw. die nürlich auch komplett im Speicher liegen.

    Desweiteren gibts bei ADO keine 64-Bit-Unterstützung mehr !!!
    Wenn du dein NET-Programm dann mal auf einer 64-Bit-Maschine laufen läßt, funktionierts nicht mehr und NET-Programme können nicht im 32-Bit-Kompatibilitäts-Modus laufen (die CLR verhindert das).

    Wenn du schon mit .NET anfängst, dann vergiss besser ADO und beschäftige dich mit den ADO.NET-Methoden.

    Gute Literatur ist z.B. "Visual Basic 2005 & .NET 3.0" von Data Becker mit einem großen ADO.NET 2.0 Teil.
    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

Similar Threads

  1. ODBC Verbindung (User, Password)
    By Hubert in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 12-05-06, 11:52
  2. Verbindung PC zu AS/400 trennen!
    By c_kinkel in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 15-07-05, 09:16
  3. Zugriff MS Access auf AS/400 via ODBC
    By SL in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-07-02, 11:54
  4. Verbindung zur AS/400 über CA
    By Antonio in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-02-02, 17:20
  5. Verbindung von Win98 auf AS/400 Unterordner
    By qiwi2000 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 17-10-01, 09:20

Berechtigungen

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