Warum funktioniert das nicht? (ADO)



  • Rs1 ist ein ADODB::_RecordsetPtr und ist bereits geöffnet

    _bstr_t test = (_bstr_t)(Rs1->Fields->GetItem( _variant_t( "NAME" ) )->Value);
    	Rs1->MoveNext();
    	test = (_bstr_t)(Rs1->Fields->GetItem( _variant_t( "NAME" ) )->Value);
        Rs1->MovePrevious();
    	test = (_bstr_t)(Rs1->Fields->GetItem( _variant_t( "NAME" ) )->Value);
    

    bei MovePrevious Kracht es 😡



  • Hallo,

    hast du vielleicht einen (Nur-)Vorwärtscursor beim Öffnen des RecordSets angegeben? (Dann kann man sich nur mit MoveNext weiterbewegen, aber keine "Rückwärtsbewegungen" durchführen)

    MfG



  • Danke geht jetzt!

    Aber was ist eigendlich der unterschied zwischen den ganzen Open's

    adOpenUnspecified
        adOpenForwardOnly
        adOpenKeyset
        adOpenDynamic
        adOpenStatic
    

    mfg



  • Diese Konstanten charakterisieren die Eigenschaften des RecordSets, mit dem man arbeitet:

    adOpenStatic:
    Die Datensätze stellen eine (statische) Kopie dar, Änderungen an der Datenbank können so nicht mitbekommen werden

    adOpenDynamic:
    hier werden auch Änderungen, die von anderen Personen an der Datenbank gemacht werden, registriert, und können die Datensätze verändern, mit denen man gerade arbeitet (das RecordSet ändert sich dynamisch)

    adOpenKeyset:
    fast wie adOpenDynamic, mit dem Unterschied, daß hinzugefügte Datensätze sich nicht im RecordSet widerspiegeln, Änderungen dagegen schon

    adOpenForwardOnly:
    eine Form des statischen Cursors (adOpenStatic), nur daß man sich damit nur vorwärts im RecordSet bewegen kann. Dies kann leistungs-verbessernd wirken, da nicht so viele Verwaltungsinformationen nötig sind, um das RecordSet zu durchlaufen

    adOpenUnspecified:
    überläßt die Wahl des Cursors dem DBMS/dem Provider

    MfG


Anmelden zum Antworten