Einzelnen Beitrag anzeigen

Ackerjan

Registriert seit: 4. Jun 2007
Ort: Potsdam
17 Beiträge
 
Delphi 2009 Enterprise
 
#1

Prüfe vor Post, ob der Datensatz gesperrt ist

  Alt 25. Aug 2008, 15:46
Datenbank: Informix • Version: 10 • Zugriff über: Borland Database Engine
Hallo,

ich habe das folgende Problem:

Ein Teil der Anwendungsumgebung in der ich programmiere nutzt eine nicht sehr verbreitete 4GL-sprache. Will man in dieser Sprache einen Datensatz bearbeiten nutzt man einen Update-Cursor. Dieser sorgt dafür, dass ein Datensatz auf der Informixdatenbank explizit gesperrt wird, während man damit arbeitet.

Nun will ich auf der Tabelle über ein TTable-Objekt mehrere Datensätze mit meinem Delphiprogramm ändern. Das klappt solange, bis ich ein Post auf den gesperrten Satz mache.(logisch).

Nun meine Fragen.

Gibt es eine "einfache" Möglichkeit vorher zu erfragen, ob der Datensatz gesperrt ist?
Kann ich den exclusiven Zugriff auf einen bestimmten Datensatz erzwingen (Nicht die ganze Tabelle sperren!)?
Oder kann ich zumindest gezielt in einem try except -Block den Informix-Fehler abfangen?
Oder könnt Ihr mir irgendwie anders weiterhelfen?


Der folgende Versuch lieferte leider nicht den richtigen Fehler!
-107 = [ISAM error: record is locked.] Diese wurde zwar in der EDB.Message als unknown error message number '-107' angezeigt. Der NativeErrorCode war leider falsch (-243).

except
on EDB: EDBEngineError do
begin
for i := 0 to EDB.ErrorCount -1 do
begin
if EDB.Errors[i].NativeError = -107 then
probiere_es_nochmal;
end;
end;

Anmerkung: Ich arbeite mit der BDE und Informix.
Jan
  Mit Zitat antworten Zitat