Hallo,
Umg.: Delphi 6 Ent. UP2, BDE 5.2, Paradox
Eine Tabelle hat folgende Struktur:<br>
-ID INTEGER<br>
-Beschreibung VARCHAR(80)
Auf dem Feld Beschreibung liegt ein eindeutiger Sekundärindex.
Versucht nun der Benutzer einen neuen Datensatz mit einer bereits vorhandenen Beschreibung zu posten, dann fange ich diesen Fehler wie folgt ab:<pre><code>
procedure TMyDataModule.MyTablePostError(
DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
var
iDBIError: Integer;
begin
if (E is EDBEngineError) then begin
iDBIError := (E as EDBEngineError).Errors[0].ErrorCode;
case iDBIError of
9729: // Key Violation
begin
MessageDlg(...);
DataSet.Cancel;
SysUtils.Abort;
end;
end;
end;
end;
</pre></code>
Funktioniert beim ersten Mal sehr gut. Der MessageDlg erscheint, man klickt auf Ok und versucht es sofort erneut. Verheerende Wirkung: Man kann Datensätze mit Beschreibungen anlegen, die bereits existieren. Es erscheint kein MessageDlg mehr.
Wo liegt das Problem? Oder sollte ich diese Art Fehler anders abfangen?
Umg.: Delphi 6 Ent. UP2, BDE 5.2, Paradox
Eine Tabelle hat folgende Struktur:<br>
-ID INTEGER<br>
-Beschreibung VARCHAR(80)
Auf dem Feld Beschreibung liegt ein eindeutiger Sekundärindex.
Versucht nun der Benutzer einen neuen Datensatz mit einer bereits vorhandenen Beschreibung zu posten, dann fange ich diesen Fehler wie folgt ab:<pre><code>
procedure TMyDataModule.MyTablePostError(
DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
var
iDBIError: Integer;
begin
if (E is EDBEngineError) then begin
iDBIError := (E as EDBEngineError).Errors[0].ErrorCode;
case iDBIError of
9729: // Key Violation
begin
MessageDlg(...);
DataSet.Cancel;
SysUtils.Abort;
end;
end;
end;
end;
</pre></code>
Funktioniert beim ersten Mal sehr gut. Der MessageDlg erscheint, man klickt auf Ok und versucht es sofort erneut. Verheerende Wirkung: Man kann Datensätze mit Beschreibungen anlegen, die bereits existieren. Es erscheint kein MessageDlg mehr.
Wo liegt das Problem? Oder sollte ich diese Art Fehler anders abfangen?
Comment