[NEWSboard IBMi Forum]

Thema: ADO/OLE DB

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    727

    ADO/OLE DB

    Folgendes Problem :

    einem ADO-recordset kann ich u.a. folgende properties zuweisen :

    Code:
    Set rsSql = CreateObject("ADODB.Recordset")
    
    rsSql.CursorType = adOpenDynamic
    rsSql.CursorLocation = adUseServer
    rsSql.LockType = adLockReadOnly

    Weiter im Code :

    Code:
    Set cn400 = CreateObject("ADODB.Connection")
    Set cmSql = CreateObject("ADODB.Command")
    
    cn400.Provider = "IBMDA400"
    cn400.Properties("data source") = "MyServer"
    cn400.Open
    Set cmSql.ActiveConnection = cn400
    cmSql.CommandText = "SELECT * FROM QIWS.QCUSTCDT "
    cmSql.CommandType = adCmdText
    cmSql.Prepared = True
    Wen ich dieses recordset implizit mit der excute Methode eines Command Objekts öffne, werden die properties ignoriert :
    Code:
    Set rsSql = cmSql.Execute '!!!! properties werden nicht berücksichtigt
    Öffne ich diese recordset explizit, werden die properties, wie gewünscht, berücksichtigt :
    Code:
    rsSql.Open = cmSql 'properties werden berücksichtigt
    Wer kann mir eine Begründung liefern warum.

    Hintergund der ganzen Geschichte :
    mit der Execude-Methode wird im default nur ein forwardonly-Recordset erstellt, d.h. die recordset-Methoden movefirst bzw. moveprevious funktionieren nicht.

    Vielen Dank
    Sven

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Mit "set rsSql = " wird ein neues Recordset erstellt (nämlich vom Command) und das vorherige verworfen !

    Mit der Execute-Methode können im 3. Parameter entsprechende Optionen angegeben werden:
    Set rsSql = cmSql.Execute(,,adOpenKeyset)

    Microsoft hat absichtlich die Methoden so getrennt, dass man das nützlichste heraussuchen kann.
    Im Recordset.Open() kann ja auch ein Command-Objekt angegeben werden. Dies eignet sich nur nicht für Command's mit Parametern "select ... where key=?".

    Schau in der Hilfedatei zu ADO nach.
    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
    Jun 2001
    Beiträge
    727
    Wie immer :
    Wer lesen kann ist im Vorteil !

    Online Hilfe zur ADO-Methode execute in Excel :

    Das zurückgegebene Recordset-Objekt ist immer ein schreibgeschützter Cursor vom Typ Vorwärts. Wenn Sie ein Recordset-Objekt mit einer größeren Anzahl an Funktionen benötigen, erstellen Sie zunächst ein Recordset-Objekt mit den gewünschten Eigenschaftseinstellungen. Verwenden Sie anschließend die Open-Methode des Recordset-Objekts, um die Abfrage auszuführen und den gewünschten Cursortyp zurückzugeben.
    Trotzdem Danke!
    Sven

Similar Threads

  1. Einzelne DB Tabellen sichern
    By CAL in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-06-06, 09:03
  2. Datensätze in DB mittels VB einfügen
    By Toschie in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 21-06-06, 11:53
  3. Suche Grafische Oberfläache für die AS400 DB
    By Stefan M. in forum NEWSboard Server Software
    Antworten: 3
    Letzter Beitrag: 16-02-05, 07:25
  4. DB Ausgelastet
    By homerun in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 03-06-02, 15:25
  5. SQL mit anderer DB
    By Atomik in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 21-11-01, 11:05

Berechtigungen

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