DataSet läßt sich im BeforeDelete-Ereignis nicht bearbeiten



  • Hallo,
    in einem DataSet mit 5 Feldern möchte ich vor dem Löschen eines Datensatzes den Inhalt von 4 Feldern löschen. Nur der Inhalt des 1. Feldes ist für die Aktualisierung in der verbundenen Tabelle einer Datenbank nötig.

    void __fastcall TDataModule1::ADODataSet1BeforeDelete(TDataSet *DataSet){
    const Spalte0 = 0; //bleibt unverändert
    const Spalte1 = 1;
    const maxSpalte = 5;
    	for (int i=Spalte1; i<maxSpalte; i++)  DataSet->Fields->Fields[i]->Value = NULL;	
    }
    

    Leider erhalte ich hier die Exception:

    Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EDatabaseError mit Meldung 'ADODataSet1: Datenmenge weder im Editier- noch im Einfügemodus'.

    Wie läßt sich das Problem lösen?



  • Konnte das Problem lösen:

    DataSet->Edit();
    

    Direkt nach dem Durchlauf der Funktion erhalte ich jetzt eine weitere Exception. 😕

    Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EOleException mit Meldung 'Nicht genügend Schlüsselfeldinformationen zum Aktualisieren'.

    Was kann ich dagegen tun?


Anmelden zum Antworten