Autor Beitrag
Bart
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 01.08.02 15:45 
Hallo,

ich habe ein Problem mit der Aktualisierung von Queries:

Ich würde gern ein Query aktualiseren, dabei aber den Cursor an seiner angestammten Stelle lassen, damit er sich im mit dem Query verbundenen Grid nicht verschiebt.

Das ganze mache ich wiefolgt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
currentPosition := MyQuery.GetBookmark;
MyQuery.Close;
MyQuery.Open;

try
  MyQuery.GotoBookmark(currentPosition);
except
  ShowMessage('Fehler');
end;
MyQuery.FreeBookmark(currentPosition);

Nun kommt aber manchmal der Execption-Fehler: "Kein aktueller Datensatz vorhanden". Daher habe ich extra einen try...execpt Block iengebaut, um das abzufangen.
Delphi stoppt trotzdem an der Stelle mit einer Exception.

Wie kann ich das verhindern?
Kann ich irgendwie herauskriegen, ob currentPosition überhaupt gültig ist bevor ich mit GotoBookmark dorthin springe?


Habt vielen Dank
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 01.08.02 16:35 
Hallo Bart,

zur Überprüfung gibt es die Methode

ausblenden Quelltext
1:
function BookmarkValid(Bookmark: TBookmark): Boolean;					


mit der du prüfen kannst, ob ein Bookmarkgültig ist.

Wenn das Ganze in einem try ... except Block steht, wird eine Exception zur Laufzeit abgefangen. Führst du aber die Anwendung aus der Delphi IDE heraus aus, kommt es auf deine Debugger Einstellungen an. Dort kannst du festlegen, ob bei Exception angehalten werden soll oder nicht.

_________________
Live long and prosper
MrSpock \\//
Cashels
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Do 01.08.02 19:03 
Hi Bart,

ich bin mir nicht sicher, aber gehen die Bookmarks nicht verloren nach Schliessen und Wiederöffnen einer Tabelle rsp. Query.

Gruss,
Tom
Bart Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 02.08.02 21:36 
Verloren sind die Bookmark nicht.
In 80% der Fälle funktioniert es ja wunderbar.
Nur für den Rest wollte ich gerne evtl. Fehler abfangen.

Das mit ValidBookmark klingt logisch, läßt sich auch problemlos compilieren. Danke! Warum steht da in der Hilfe unter TBookmark nur kein Verweis drauf?

Nur zur Laufzeit stürzt mir das Programm immer genau beim Aufruf dieser Funktion mit einer Exception ala Zugriffsverletzung ab.

Die Lösung:

Die Bookmark darf nicht nil sein! Also vorher lieber 'ne Abfrage machen.

Grüße