Announcement

Collapse
No announcement yet.

"Recordset->Save"-Anomalie in ADO Programm

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Recordset->Save"-Anomalie in ADO Programm

    Ich bin auf folgendes Problem gestoßen:
    Ein offensichtlich funktionierendes ADO-Recordset läßt sich nicht mit der "Save"-Methode speichern. Genauer: Es gibt eine Speicherzugriffs-Ausnahme.
    Verwendet wird MDAC 2.6 SP1 und programmiert ist das Ganze in CB5.
    Ich habe auch versucht, das Recordset in einen Stream zu speichern - das gleiche Ergebnis. Wie gesagt, der ganze ADO-Kram funktioniert ... bis auf Save.
    ... bin ratlos. Habt Ihr eine Idee, wie man das Problem beheben kann?
    Hier der entscheidende Code:
    <PRE>
    ...
    conn->Mode = adModeRead;
    TVariant strCnn(WideString("Provider=Microsoft.Jet.OLEDB.4. 0;data source=E:\\Data\\db1.mdb;"));
    hr= conn->Open(strCnn,TVariant(WideString("")),TVariant(Wid eString("")),adConnectUnspecified);

    rs->CursorLocation = adUseClient;
    hr= rs->Open( TVariant(WideString("ctbl")), TVariant((IUnknown*)conn) , adOpenForwardOnly, adLockOptimistic, adCmdTable);

    //einige funktionierende Testroutinen:
    hr= rs->MoveFirst() ;
    TVariant vtIndex;
    vtIndex.vt = VT_I2;

    FieldsPtr pFldLoop = rs->Fields;

    for (int intFields = 0; intFields < (int)pFldLoop->Count; intFields++)
    {
    vtIndex.iVal = intFields;
    AnsiString str= AnsiString (TVariant((WideString) pFldLoop->get_Item(vtIndex)->get_Value()));

    }
    //Ende der Tests

    //hier tritt die Exception auf:
    hr= rs->Save((wchar_t*)"e:\\Data\\ctbl.xml", adPersistXML);
    ...
    </PRE>

  • #2
    Hi Felix!<br>

    ich habe mich zwar noch nicht mit ADO beschäftigt, aber mir sticht<br>
    gleich etwas ins Auge -> <<<< conn->Mode = adModeRead; >>>> <br>
    Bestimmt nur Lesezugriff.<br>

    Gruß Fre

    Comment


    • #3
      Hallo Fred!
      Danke für's Durchchecken des Codes!<BR>adModeRead ist für die Datenquelle völlig ausreichend, die Save-Methode des Recordsets speichert nicht in derselben Datenbank zurück, sondern schreibt eine Datei. Der mit gleichen Parametern umgesetzte VB-Code läuft übrigens bestens.

      Gruß, Feli

      Comment

      Working...
      X