Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Edit bei mehreren Benutzern (https://www.delphipraxis.net/48295-edit-bei-mehreren-benutzern.html)

stefan681 23. Jun 2005 11:18

Datenbank: Advantage • Zugriff über: TDataSet

Edit bei mehreren Benutzern
 
Hallo,

ich möchte beim Zufriff auf einen Datensatz wissen, ob ein anderer User diesen
schon zum edit geöffnet hat. Den Code dafür habe ich schon geschrieben.

Meine Frage ist aber:
Ich wollte diesen Code in dem Ereignis 'BeforeEdit' der Tabelle verwenden.
Wenn jetzt dieser Code sagt, der Datensatz ist gesperrt, würde die Routine 'BeforEdit'
automatisch weitermachen, und so doch eine Fehlermeldung des Datenbank-Servers anzeigen.
Oder kann ich diese Routine irgendwie verlasen?

Danke.

Stefan

Sharky 23. Jun 2005 11:25

Re: Edit bei mehreren Benutzern
 
Hai Stefan,

es müsste doch reichen ein DataSet.Cancel einzubauen oder?

Catbytes 23. Jun 2005 11:27

Re: Edit bei mehreren Benutzern
 
Langt nicht ein einfaches:

Delphi-Quellcode:
procedure TForm1.ADOQuery1BeforeEdit(DataSet: TDataSet);
begin
if Datensatzgesperrt then
Exit;
SonstigeRoutinen...
end;
??? :gruebel: :gruebel: :gruebel:

Jelly 23. Jun 2005 12:32

Re: Edit bei mehreren Benutzern
 
Zitat:

Zitat von Sharky
es müsste doch reichen ein DataSet.Cancel einzubauen oder?

Da im BeforeEdit Ereignis der Datensatz noch nicht im Editiermodus ist. wird ein Cancel nicht viel bringen. Es sollte aber klappen das Ganze ins AfterEdit Ereignis zu verlagern.

stefan681 23. Jun 2005 13:58

Re: Edit bei mehreren Benutzern
 
Aber beim Ater Edit ist es "schon zu spät", da Edit schon ausgelöst
wurde und dann der Datenbank-Server die Fehlermeldung erzeugt.

Wie macht ihr das denn bei mehreren Benutzer sicher stellen,
das nur ein User den Datensatz bearbeitet?

Jelly 23. Jun 2005 14:13

Re: Edit bei mehreren Benutzern
 
Zitat:

Zitat von stefan681
Aber beim Ater Edit ist es "schon zu spät", da Edit schon ausgelöst
wurde und dann der Datenbank-Server die Fehlermeldung erzeugt.

Das hängt dann aber davon ab, wie du den Server konfigurierst. Kuck dir in dem Zusammenhang mal TransIsolation Level an.

Stevie 23. Jun 2005 14:19

Re: Edit bei mehreren Benutzern
 
Hi,

wenn ich mich recht erinner, müsste ein Delphi-Referenz durchsuchenAbort im BeforeEdit reichen, um auch das Edit an sich zu stoppen.
Allerdings halte ich diese Vorgehensweise in deinem Fall nicht für die beste, denn so wird der Benutzer nicht darüber informiert, dass und warum der Satz nicht gespeichert werden kann. Ich würde eher vorschlagen, global (im Delphi-Referenz durchsuchenApplication.OnException) diese spezielle Execption, die der Server liefert, abzufangen und in eine für den Benutzer verständliche Nachricht zu verarbeiten.

MfG
Stevie


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz