[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2003
    Beiträge
    17

    Red face leider immernoch habe ich Problem ??!!!

    Hallo,

    vielen Dank für die Antwort.

    Tut mir leid, daß ich erst jetzt antworte, aber in der Zeit konnte ich das Programm nicht weiter bearbeiten.

    Jetzt habe ich folgendes Problem:

    Hier ein Teil meines Codes:
    Code:
    .........
    .................
    Dim db As DAO.Database
    Dim SQLStr As String
    Dim conn As New ADODB.Connection
    
    conn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _
               "System=AS400;" & _
               "Uid=BENUTZERNAME;" & _
               "Pwd=KENNWORT"
    
    Set db = CurrentDb
    ..................
    ............................
    ....................................
    'Variablen werden vorher definiert!
    SQLStr = "Insert Into Bibliothek_Tabelle Values ('" & LENAM & "', '" & LEVON & "', '" & LEBIS & "', '" & LEART & "');"
    
    db.Execute SQLStr
    ......................
    .................................
    Obwohl ich in der Verbindungszeichenfolge "UID=XXX;PWD=YYY;" s. o. angegeben habe, fragt DB2 beim ausführen von db.Execute SQLStr nochmal nach Anmeldedaten nach.

    Was mach ich denn falsch??

    Dank nochmal für die Hilfe

    Gruß,

    Otto

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    War mein Fehler, statt "UID=" verwende "User=" !

    Obwohl das nicht empfehlenswert ist.
    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
    Dec 2003
    Beiträge
    17

    Red face weitere Fehlermeldungen!?!?

    Hallo,

    Danke für die schnelle Antwort.

    Zitat Zitat von Fuerchau
    War mein Fehler, statt "UID=" verwende "User=" !

    Obwohl das nicht empfehlenswert ist.
    Wenn ich "User=Benutzername" verwende - also nur UID durch User ersetzt - der Benutzername ist gleichgeblieben!!! - dann bekomme ich die Fehlermeldung:
    Code:
    Laufzeitfehler '-2147217843 (80040e4d)': [IBM][Client Access ODBC-Treiber] Fehler bei Datenübertragungsverbindung. commrc=8015 - CWBSY1006 - Benutzer-ID ist ungültig, Passwort length=6, Prompt Mode = Never, System IP-Address = xx.xx.xxx.xxx
    Den Benutzernamen habe ich wirklich nicht geändernt, aber trotzdem diese Fehlermeldung??

    Hier nochmal meine Verbindung:
    Code:
    conn.Open "Driver={Client Access ODBC Driver (32-bit)}; System=AS400; User=Benutzername; Pwd=Kennwort"
    Danke nochmal

    Gruß
    Otto

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Genau das deutet darauf hin, dass der Benutzer auf der AS/400 nicht bekannt ist !
    Als Benutzer-Id ist der max. 10-Stellige AS/400-Benutzer zu verwenden.
    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

  5. #5
    Registriert seit
    Dec 2003
    Beiträge
    17

    Question zwei Benutzer oder reicht es auch nur einen auf der AS400?

    Hallo,

    Zitat Zitat von Fuerchau
    Genau das deutet darauf hin, dass der Benutzer auf der AS/400 nicht bekannt ist !
    Als Benutzer-Id ist der max. 10-Stellige AS/400-Benutzer zu verwenden.
    Bedeutet es, daß es zwei Benutzer für die Verbindung benötigt werden - eins auf der AS400 und eins in der DB2? Mein Benutzername, den ich verwende, ist 6-stellig. Das heißt es liegt nur auf der DB2??

    Wie lege ich denn einen neuen Benutzer auf der AS400 an?

    Danke nochmal

    Gruß
    Otto

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Für die DB2/400 ist kein eigener Benutzer erforderlich. Normalerweise reicht die gleiche Anmeldung, die du auch in dem Anmeldebild verwendest.
    Gib doch genau den User an, mit dem du dich auch sonst anmeldest.
    Für ein AS/400-Profil wende dich an deinen Administrator.
    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

  7. #7
    Registriert seit
    May 2004
    Beiträge
    1
    Du solltest das EXECUTE auf die zuvor geöffnete CONNECTION ausführen und nicht
    auf das CURRENTDB-Objekt !

    Gruss, Matz

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da muss ich Matz allerdings zustimmen.
    ADO und DAO lassen sich nicht so verbinden.
    DAO verwendet hierzu eine eigene Verbindung, das Verbinden auf ADO hat keine Auswirkung auf DAO.

    Dies hat allerdings nichts mit dem Benutzernamen in der ADO-Verbindung zu tun, sondern beim Zugriff per DAO ist eine erneute Anmeldung erforderlich.
    In deiner CurrentDB ist wahrscheinlich eine verknüpfte Tabelle, die einen eigenen Connection-String enthält (Eigenschaften der Tabelle).
    Deine separate Anmeldung mittels ADO bringt also nichts, selbst wenn der Aufruf an sich funktioniert.
    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
    Dec 2003
    Beiträge
    17

    Red face keine Wirkung?!?!

    Zitat Zitat von Fuerchau
    Da muss ich Matz allerdings zustimmen.
    ADO und DAO lassen sich nicht so verbinden.
    DAO verwendet hierzu eine eigene Verbindung, das Verbinden auf ADO hat keine Auswirkung auf DAO.

    Dies hat allerdings nichts mit dem Benutzernamen in der ADO-Verbindung zu tun, sondern beim Zugriff per DAO ist eine erneute Anmeldung erforderlich.
    In deiner CurrentDB ist wahrscheinlich eine verknüpfte Tabelle, die einen eigenen Connection-String enthält (Eigenschaften der Tabelle).
    Deine separate Anmeldung mittels ADO bringt also nichts, selbst wenn der Aufruf an sich funktioniert.
    Hallo allerseits,

    das hatte ich auch gedacht, daß Execute uaf Connection ausgeführt werden sollte und das habe ich auch gerade gemacht. Es wird zwar keine Fehlermeldung beim ausführen von
    Code:
    conn.Execute SQLStr
    ausgegeben, aber es werden auch keine Änderungen in der DB2-Datenbank vorgenommen - sprich es werden keine neue Datensätze eingefügt
    Code:
    Insert Into Bibliothek.Tabelle Values ('Otto Müller', '040101', '041231', 'Summe der Fehlzeiten');
    DELETE-Anweisung geht überhaupt nicht, weder wenn ich currentdb.execute nehme noch wenn ich conn.execute nehme.

    Woran kann es denn noch liegen??

    Danke nochmal

    Gruß
    Otto

  10. #10
    Registriert seit
    Dec 2003
    Beiträge
    17

    Thumbs up Jetzt gehts !!

    Hallo nochmal,

    den Fehler konnte ich lokalisieren und zwar lag es an das Semikolon am Ende von INSERT und DELETE

    Vielen Dank für die SUPER-Hilfe.

    Viele Grüße

    Otto

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn du über CurrentDB auf die Tabellen zugreifst, wird die Access-Syntax von SQL verwendet, die nach einer Übersetzung in die ODBC-Syntax an den Treiber weitergegeben wird.
    Wenn du direkt über das Connection-Objekt zugreifst, wird direkt die AS/400-Syntax verwendet, dies entspricht in Access einem SQL-Passthru.

    Wenn du mit ADO statt DAO arbeitest, ändern sich ein paar Kleinigkeiten:
    DAO.Database => ADODB.Connection
    DAO.QueryDef => ADODB.Command

    Recordset, Parameter und Field-Objekte gibt es weiterhin mit ein paar erweiterten bzw. geänderten Eigenschaften.

    Bei wiederholten SQL-Statements mit verschiedenen Werten lohnen sich "Parameter":

    dim myCnn as new ADODB.Connection
    dim myCmd as new ADODB.Command

    with myCmd
    .Commandtext = "Insert Into Bibliothek.Tabelle Values (?, ?, ?, ?)"
    .Prepared = true
    set .ActiveConnection = myCnn
    .execute , Array('Otto Müller', '040101', '041231', 'Summe der Fehlzeiten'), adExecuteNorecords
    end with

    Mit dem Array() wird der 1. Wert dem 1. Fragezeichen zugeordnet, der 2. Wert dem 2. Fragezeichen und so weiter.

    Der große Vorteil liegt in der Vereinfachung der Verwendung, da der SQL-Befehl nicht immer neu zusammengesetzt werden muss (Dezimalpunkt/-komma, Hochkomma in Zeichenfolgen, usw.).
    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

  12. #12
    Registriert seit
    Dec 2003
    Beiträge
    17

    Thumbs up Danke!

    Hallo,

    vielen Dank für die detailierte Hilfe. Das hat mich sehr voran gebracht.

    Ich werde den letzten Ansatz auch probieren und melde mich dann.

    Gruß
    Otto

Similar Threads

  1. ACCESS mit Unterformularen per ODBC
    By Armin in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-09-06, 11:18
  2. Access AS400 -> odbc
    By guru30 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-12-05, 09:26
  3. Performanceprobleme mit Access <--> DB2 per ODBC
    By Rico in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 03-05-05, 17:16
  4. ODBC Anmeldung Access
    By Spoldo in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 11-03-05, 12:09
  5. Zugriff von Access auf iSeries per ODBC
    By Unregistriert in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-01-05, 08:57

Berechtigungen

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