Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Einzelnen Datensatz speziell "markieren" (https://www.delphipraxis.net/80897-einzelnen-datensatz-speziell-markieren.html)

hirnstroem 17. Nov 2006 09:50

Datenbank: MS Access • Zugriff über: ADO

Einzelnen Datensatz speziell "markieren"
 
'loha Folks,

folgendes Szenario:

Viele Geräte die irgendetwas machen werden in einer Datenbank erfasst und auf einem Webinterface angezeigt. Die Anzeige bietet die Möglichkeit ein Gerät zu manipulieren. Sobald ein Benutzer ein Gerät manipuiert, soll es für andere Benutzer gesperrt werden.

Meine Idee wäre nun, dies direkt beim jeweiligen Datensatz zu vermerken. Muss ich dazu ein neues Feld in der Datenbank einführen oder kann ein einzelner Datensatz auch "markiert" werden ohne etwas in die Datenbank schreiben zu müssen?

Alternativ könnte ich eine StrinList benutzen. Jedes Gerät, dass vor hat manipuliert zu werden, trägt sich selbstständig in die Liste ein und aus.

Also eigentlich Suche ich eine Eigenschaft für einzelne Datensätze, welche in etwa der Tag-Eigenschaft entspricht.

Grüsse
hirnstroem

mkinzler 17. Nov 2006 10:00

Re: Einzelnen Datensatz speziell "markieren"
 
Unterstütz Access kein Locking.

hoika 17. Nov 2006 10:05

Re: Einzelnen Datensatz speziell "markieren"
 
Hallo,

was passiert, wenn du ein Feld "locked" hast,
und dein Webinterface abstürzt?
Dann kann der Admin ran, und das "reparieren".

Access is eh nicht so schön
(keine Transaktionen, damit fällt ein locken über Transaktionen flach).

Ich würde zumindestens nach 2. Feld ein Datum/Uhrzeit
reinpacken (LockDateTime), welches per Timer (?)
von der Anwendung, die das Gerät gelockt hat aktualsiert wird.
Dazu könnte das Gerät (die DBId) in einer StringList gespeichert werden.

Die Feststellung, ob eine Gerät tatsächlich gelockt ist,
würde dann über das "locked" und eine definierte Zeitspanne zu "LockDateTime"
erfolgen (z.B. Timer 1 Minute -> alle LockDateTime=3 Minuten sind veraltet,
der Client ist wohl abgestürzt).

Alternativ könnte man auch eine Lock-Tabelle mit GeräteId und
den beiden Feldern benutzen
und durch unique index verhindern, dass das gerät zweimal eingetragen wird.

Ein 3. Feld könnte die UserId sein.
Eine Meldung "Gerät gerade benutzt von XXX" wäre dann möglich.


Heiko

hirnstroem 17. Nov 2006 10:33

Re: Einzelnen Datensatz speziell "markieren"
 
Zitat:

Zitat von mkinzler
Unterstütz Access kein Locking.

Doch, Locking wird schon unterstützt, nur bringt es in diesem Fall nicht viel, da ich mit dem Datensatz an und für sich nichts mache ausser die Adresse des entsprechenden Gerätes auszulesen und mit dieser Adresse weiterzuarbeiten.

Dann werde ich wohl auf die von Heiko beschriebene Variante zurückgreifen.

Vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 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