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>
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>
Comment