crowley - Fr 04.01.08 12:32
Titel: Key Violation Fehler bei Open/Refresh von TClientDataset
Servus und ein frohes neues Jahr!
Aaalso... ich habe hier wieder mal was ganz besonderes. Seit neuestem bekomme ich bei zwei Rechnern (von etwa 1000) beim Öffnen eines ClientDatasets die Fehlermeldung 9729 - Key violation.
Interessanterweise passiert das wirklich NUR auf diesen Rechnern und wenn ich von einem anderen Rechner aus mit derselben Software (komplett inklusive Konfig-Files kopiert) auf dieselbe Datenbank zugreife, gibt es keine Probleme.
Ein Fehler mit denselben Symptomen hatte bei einem anderen Dataset dazu geführt, dass wir einen Workaround gebastelt haben. Dieselbe Fehlermeldung trat hier auch bei einem Refresh eines(!) von mehr als 30 Clientdatasets auf einem(!) Rechner auf. Mutmaßung war damals, dass das Clientdataset sich an unserem Primary Key Feld - Oracle Number(10) - verschlucken könnte. Dieser Workaround funktionierte auch einwandfrei. Aber in meinem Falle läuft er quasi schon beim ersten Open und nicht nur bei einem Refresh in die Exception.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TCsClientDataSet.DbQuery; begin if (FRefreshBugPresent) then Close;
try if not Assigned(FOnDbQuery) then begin Exit; end; FOnDbQuery(Self); if Active and HasAppServer then Refresh else Open; except on E: EDBClient do begin if (FRefreshBugPresent) then raise;
FRefreshBugPresent := True;
Close; DbQuery; end; end; end; |
Aktuell habe ich keine Ideen mehr, woran es liegen könnte. Der Fehler tritt aktuell nur auf, wenn mehr als 10 Records gefunden werden und diese angezeigt werden sollen.
Hat jemand hier eine Idee?
Vielen Dank
C.