Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [BDE] Datensatz in der aktuellen Sitzung bereits gesperrt (https://www.delphipraxis.net/130542-%5Bbde%5D-datensatz-der-aktuellen-sitzung-bereits-gesperrt.html)

HeikoAdams 10. Mär 2009 09:53

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

[BDE] Datensatz in der aktuellen Sitzung bereits gesperrt
 
Hallo,
wir haben vor einigen Jahren für einen Kunden eine Dispositionssoftware entwickelt, die Paradox als Datenbank nutzt. Seit einiger Zeit bekommt der Kunde sporadisch die Meldung, das ein Datensatz in der aktuellen Sitzung bereits gesperrt sei. Der Versuch, die Fehlermeldung mittels Prüfung über CanModify zu verhindern schlägt jedoch fehl, da CanModify für den betreffenden Datensatz True zurückliefert.

Gibt es einen anderen Weg, diesen "Fehler" abzufangen?

Fürs Protokoll: Ja, mir ist bekannt, das die BDE toter als tot ist. Unser Kunde sieht jedoch (noch) keine Veranlassung, das Programm auf eine andere Datenbank umzustellen.

nahpets 10. Mär 2009 10:09

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Hallo,

die BDE erstellt die Datei PDOXUSRS.NET. Hier werden wohl Sperrvermerke... verwaltet. Wenn nun mehrere Benutzer auf die gleiche Paradoxtabelle zugreifen, so wird hier nachgeschaut, ob ein Zugriff möglich ist. Das funktioniert aber nur, wenn es für "ALLE" Benutzer nur eine PDOXUSRS.NET gibt. Gibt es mehrere davon (in der Regel auf jedem Rechner eine), so tritt die von Dir genannte Fehlermeldung auf.

Ob die Fehlermeldung auch in anderen Fällen auftritt, weiß ich nicht.

In der BDE-Verwaltung kannst Du unter Konfiguration/Treiber/Native/Paradox/NET DIR das Verzeichnis angeben, in dem die PDOXUSRS.NET liegen soll. Prüf mal bitte, ob hier für alle Benutzer die gleiche Datei benutzt wird. Wir haben vor Jahr und Tag da mal bei allen Nutzern ein Netzlaufwerk eingetragen, seit dem ist Ruhe.

Manchmal hilft es auch, die PDOXUSRS.NET einfach wegzuwerfen, sie wird dann von der BDE neu erstellt. Das Wegwerfen geht jedoch nur, solange nach 'nem Rechnerstart noch nicht auf die BDE zugegriffen wurde.

mkinzler 10. Mär 2009 10:13

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Haben alle Clients das selbe Session-Verzeichnis konfiguriert?

HeikoAdams 10. Mär 2009 11:30

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Also das NetDir sollte auf allen Clients identisch konfiguriert sein.
Wir werden es mal damit probieren, die PDOXUSRS.NET Datei zu löschen und neu anlegen zu lassen.

mkinzler 10. Mär 2009 11:41

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
CrossPost DF

nahpets 10. Mär 2009 11:53

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Hallo,
Zitat:

Zitat von HeikoAdams
Also das NetDir sollte auf allen Clients identisch konfiguriert sein.
Wir werden es mal damit probieren, die PDOXUSRS.NET Datei zu löschen und neu anlegen zu lassen.

heißt das, dass es im Netz nur eine PDOXUSRS.NET gibt oder dass sie bei allen Rechnern auf C:\ (oder so) liegt?
Die Formulierung sollte ist mir zu vage, es muss heißen Also das NetDir ist auf allen Clients identisch konfiguriert. Die Mutmaßung hat mich schon Tage an Suche gekostet.

Ggfls. prüft mal, ob auf einem der Rechner irgendwo noch eine PDOXUSRS.NET liegt, wenn mehrere Programme benutzt werden, die die BDE benutzen, kann euch das ggfls. in die Quere kommen, weil sich da ein Programm auf einem Rechner irgendwas zur Laufzeit anders konfiguriert, als von euch vorgegeben.

Die BDE benutzt die idapi32.cfg, benutzen hier alle Clients die gleiche Datei? Wenn ihr die BDE so konfiguriert, dass alle Clients eine (im Netz liegende) idapi32.cfg benutzen, könnte das bei der Problembeseitigung hilfreich sein und ihr müsst für alle Clients nur noch eine Konfiguration pflegen. Eventuell solltet ihr die lokalen idapi32.cfg's beseitigen (oder umbenennen, um die Konfiguration anderer, die BDE benutzende, Programme restaurieren zu können).

HeikoAdams 11. Mär 2009 07:39

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Wir haben die Sache geprüft. Das NetDir ist auf allen Rechnern identisch konfiguriert. Nachdem der Kunde die PDOXUSRS.NET Datei gelöscht hat, scheint das Problem behoben zu sein. Jedenfalls kam die entsprechende Fehlermeldung bislang nicht mehr.

nahpets 11. Mär 2009 08:38

Re: [BDE] Datensatz in der aktuellen Sitzung bereits gesperr
 
Hallo,
Zitat:

Zitat von HeikoAdams
Wir haben die Sache geprüft. Das NetDir ist auf allen Rechnern identisch konfiguriert. Nachdem der Kunde die PDOXUSRS.NET Datei gelöscht hat, scheint das Problem behoben zu sein. Jedenfalls kam die entsprechende Fehlermeldung bislang nicht mehr.

kann es sein, dass das Programm eventuell ab und an mal abstürzt oder vom Anwender nicht so ganz korrekt beendet wird (Taskmanager...)? Dann kann auch mal eine kaputte PDOXUSRS.NET überbleiben. Das Problem bekommst Du programmseitig dann nicht weg. Bei uns gibt es immer wieder Kollegen und Kolleginnen, die etwas ungeduldig sind. Wenn denen was zu lange dauert, wird der Prozeß abgeschossen und das Programm neu gestartet. Je nach Häufigkeit, bekommt die BDE bei dieser Verfahrensweise auch schon mal Probleme. Dies kann dann auch zu diesem Effekt führen.
Auf was für einem Rechner liegt die PDOXUSRS.NET? Einem Server, der auch Nachts durchläuft? Dann könntet ihr per Taskplaner die PDOXUSRS.NET irgendwann in der Nacht wegwerfen. Falls da zufällig noch ein Client auf die PDOXUSRS.NET zugreift, scheitert das Löschen halt, aber das hat dann keine negativen Nebenwirkungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.

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