TLookupComboBox + TADOQuery + Post = EOleException?

Dario Linsky

Erfahrenes Mitglied
Hallo zusammen...

Ich hab hier ein ziemlich nerviges Problem mit einer Lookup-Liste. Ich hab die TLookupComboBox (cmbTraeger) folgendermassen eingestellt:
Code:
srcMain.DataSet := rsMain;
srcTraeger.DataSet := rsTraeger;
cmbTraeger.DataSource := srcMain;
cmbTraeger.DataField := 'traeger';
cmbTraeger.KeyField := 'nr';
cmbTraeger.ListField := 'bez';
cmbTraeger.ListSource := rsTraeger;
Wenn ich jetzt irgendetwas an dem aktuellen Datensatz ändere und mit rsMain.Post speichern möchte, gibt mir der Debugger eine Exception mit der Meldung "nicht genügend Schlüsselfeldinformationen zum Aktualisieren" aus.
Kennt das Problem jemand und hat es evtl. schon behoben? Das Lustige an der ganzen Sache ist ja, dass die geänderten Daten trotzdem gespeichert werden, wenn man die Exception wegklickt...
 
Die Fehlerursache hab ich inzwischen gefunden und auch (mehr oder weniger) behoben. Das Problem scheint damit zusammenzuhängen, dass die Refresh-Methode vom TCustomADODataSet irgendwie nicht so ganz sauber funktioniert.
Wenn ich rsMain mit "SELECT * FROM dt_main" öffne, klappt es ohne Probleme. Öffne ich rsMain mit "SELECT dt_main.*, lu_traeger.bez AS traegerbez FROM dt_main INNER JOIN lu_traeger ON dt_main.traeger = lu_traeger.nr", komm ich bei der Refresh-Methode auf die erwähnte Exception.
So ganz versteh ich auch nicht, warum das so ist. Scheint aber ein Bug in den ADOExpress-Komponenten oder direkt in den ADO-Bibliotheken zu sein. :(
 

Neue Beiträge

Zurück