AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehlermeldung: Zugriff auf DBF gesperrt
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung: Zugriff auf DBF gesperrt

Ein Thema von ggscholz · begonnen am 22. Sep 2024 · letzter Beitrag vom 27. Sep 2024
Antwort Antwort
Seite 1 von 2  1 2      
ggscholz
Online

Registriert seit: 20. Nov 2013
Ort: Aachen
63 Beiträge
 
Delphi 11 Alexandria
 
#1

Fehlermeldung: Zugriff auf DBF gesperrt

  Alt 22. Sep 2024, 15:04
Datenbank: dbf • Version: ? • Zugriff über: TDBFUniprovider
Hallo in die Runde,

ich lese Daten per SQL SELECT Abfrage aus einer dbf-Datei mit den Komponenten TUniConnection, TDBFUniprovider und TUniQuery aus. Die Datei hat ca.250 Datensätze, ich lese in einer Zeile ein Feld aus.

Code:
SELECT USERID FROM TSTAMP WHERE TAGID = :p1
Delphi-Quellcode:
DbModul.qryTsUserId.Params[0].Value := UserName;
DbModul.qryTsUserId.Open;
UserNbr := DbModul.qryTsUserId.Fields[0].AsString;
DbModul.qryTsUserId.Close;
Das Programm, das die Datenbank mitgeliefert hat, wird wohl mit FoxPro entwickelt worden sein.

Es kommt vor, das eine Fehlermeldung aufplopt:
Code:
Datei TsUserId.dbf kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
Ich bin leider nicht so Fit mit diesem ja schon relativ alten Datenbankformat. Wie kann ich in Delphi prüfen, ob die dbf-Datei gerade gesperrt ist.

In der Komponente TUniConnection und TUniQuery gibt auch viele für mich nicht ganz verständliche Optionen, um den Zugriff auf die dbf zu steuern. Gibt es dort eventuell Möglichkeiten, die Sperre der Datei abzuwarten?

Wo wird in dem dbf-System eventuell die Datensperre verwaltet??

Gibt es eine bessere Möglichkeit, auf die dbf-Datei lesend zuzugreifen?

Ich bin für jeden Hinweis dankbar

Mit besten Grüßen

Gerd
Gerd
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.481 Beiträge
 
Delphi 7 Professional
 
#2

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt 22. Sep 2024, 16:46
Es kann bei 'ner DBF für gewöhnlich nur ein einzelner User auf die Datenbankdatei zugreifen. Mehrplatzbterieb oder Zugriff über mehrere Instanzen eines Programmes von einem Rechner scheitern für gewöhnlich mit einer derartigen Fehlermeldung. Selbst zwei Selects über zwei Querykomponenten, aus einem Programm heraus, können zu dieser Fehlermeldung führen.

Wenn Du z. B. in der IDE die Query geöffnet hast und dann das Programm aus der IDE (z. B. im Debugger / aber auch ohne Debugger) startes, wird das Öffnen der Query im Programm (höchstwahrscheinlich) mit dieser Fehlermeldung enden.

Stelle sicher, dass in der IDE keine Verbindung, keine Query geöffnet ist, sondern erforderliche Verbindungen zur DB erst zur Laufzeit geöffnet werden und Abfragen per Query erst unmittelbar vor deren Verwendung und nur solange wie zwingend erforderlich offen gehalten werden.

Ob TUniConnection, TDBFUniprovider und TUniQuery über Attribute verfügen, mit deren Hilfe man das Problem ggfls. reduzieren oder vermeiden kann, weiß ich nicht. Mit der BDE ging das früher in geringem Umfang, aber die ist inzwischen sowas von Schnee von gestern, dass sie als alternative Zugriffsschicht wohl eher ausscheidet.
  Mit Zitat antworten Zitat
mlc42

Registriert seit: 9. Feb 2013
126 Beiträge
 
#3

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt 22. Sep 2024, 17:51
Falls ein Virenscanner läuft mal eine Ausnahme auf den Ordner der DB definieren.
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
267 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt 22. Sep 2024, 19:35
Unter Delphi 12.1 habe ich gute Erfahrungen mit Adoconnection, Adoquery und dem ODBC-Driver(32bit) vfpodbc.dll 6.01.8629.01 vom 07.12.1999 gemacht.

Leider weiss ich nicht mehr wie der auf den Entwicklungsrecher gekommen ist und wo man den heute herbekommt.

Gruß
Alfred
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.481 Beiträge
 
Delphi 7 Professional
 
#5

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt 23. Sep 2024, 19:59
Die sind bei Windows in der ODBC-Verwaltung immer mit dabei, die scheint Microsoft da immer mit zuliefern, genauso wie die für Access, Paradox, Excel, Text und SQL-Server.
  Mit Zitat antworten Zitat
ggscholz
Online

Registriert seit: 20. Nov 2013
Ort: Aachen
63 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt Gestern, 10:55
Ich habe jetzt Verschiedenes probiert, aber so richtig funktioniert es nicht: es sind 2 DBF Dateien, die ich abfragen möchte, bei der einen läuft es eigentlich immer ohne Fehler durch, die zweite sperrt sich aber immer gegen meine Leseversuche. Eventuell passt auch die Fehlermeldung nicht zur Ursache. Ich werde weiter suchen...

Ich hab auch noch nicht herausbekommen, wie ich den Prozess, der die DB sperrt, finden kann.

Ich helfe mir jetzt damit, das ich mir die Datei außerhalb der Arbeitszeiten in ein eigenes Verzeichnis kopiere. Auch wenn das mich nicht wirklich zufrieden stellt, es funktioniert erstmal. Die kopierten Daten sind für 24 Stunden ausreichend aktuell.

Trotz allem, Danke für die Hilfe!!

Beste Grüße

Gerd
Gerd
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.481 Beiträge
 
Delphi 7 Professional
 
#7

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt Gestern, 11:16
Zitat:
Ich hab auch noch nicht herausbekommen, wie ich den Prozess, der die DB sperrt, finden kann.
Alle Rechner neustarten, die auf die Datei zugegriffen haben könnten. Eventuell ist bei einem Programmabsturz "nur" ein Handle offen geblieben, das nun suggeriert, die Datei sei aktuell im Zugriff von wem auch immer. Programmabstürze können bei DBF-Dateien zuweilen zu diesem Effekt führen.

Den "Übeltäter" finden könntest Du eventuell so:
Code:
Microsoft Sysinternals Process Explorer

Process Explorer öffnen: Starten Sie den Process Explorer als Administrator.

Handle oder DLL suchen: Klicken Sie auf das Fernglas-Symbol (Find Handle or DLL) oder drücken Sie STRG + SHIFT + F.

Dateinamen eingeben: Geben Sie den Dateinamen oder den Pfad der gesperrten Datei ein und klicken Sie auf „Search“.

Prozess identifizieren: Der Prozess, der die Datei verwendet, wird in der Liste hervorgehoben. Sie können den Prozess beenden, indem Sie den Eintrag markieren und die Entfernen-Taste drücken.
Kann funktionieren, muss aber nicht.
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
267 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt Gestern, 22:29
Ich würde mal mit einem Hexeditor prüfen was im ersten Byte der beiden dbf-Dateien
steht.

Man könnte aber auch die dbf mit LibreOffice Calc öffnen um zu sehen ob die Datei
ok ist.
  Mit Zitat antworten Zitat
BerndS
Online

Registriert seit: 8. Mär 2006
Ort: Jüterbog
487 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt Heute, 08:09
Wäre denn eine Umstellung auf das direkte Lesen der DBF-Dateien denkbar.
Das könnte dann z.B. über TDBF https://sourceforge.net/projects/tdbf erfolgen.
Bernd
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
267 Beiträge
 
Delphi 12 Athens
 
#10

AW: Fehlermeldung: Zugriff auf DBF gesperrt

  Alt Heute, 09:31
Die *.dbf könnte auch Teil einer *.dbc sein.

Gibt es denn eine *.cdx?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 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