FLOCK( )-Funktion
Versucht, die aktuelle oder die angegebene Tabelle zu sperren.
FLOCK([nWorkArea | cTableAlias])
Rückgabewerte
Logisch
Parameter
nWorkArea
Gibt den Arbeitsbereich der Tabelle an, die FLOCK( ) zu sperren versucht.FLOCK( ) gibt Falsch (.F.) zurück, wenn im angegebenen Arbeitsbereich keine Tabelle geöffnet ist.
cTableAlias
Gibt den Alias der Tabelle an, die FLOCK( ) zu sperren versucht.Microsoft Visual FoxPro generiert eine Fehlermeldung, wenn Sie einen nicht vorhandenen Tabellenalias angeben.
Hinweise
FLOCK( ) gibt Wahr (.T.) zurück, wenn die Tabelle erfolgreich gesperrt wurde, und Falsch (.F.), wenn die Tabelle oder ein Datensatz der Tabelle bereits durch einen anderen Benutzer gesperrt ist.
Wenn Sie die optionalen Argumente nicht angeben, versucht FLOCK( ), die Tabelle zu sperren, die im aktuellen Arbeitsbereich geöffnet ist.
Anmerkung Wenn eine FLOCK( )-Funktion eine Tabelle nicht sperren kann, gibt sie Falsch (.F.) zurück, generiert aber keinen Fehler. Aus diesem Grund können Sie FLOCK( ) nicht verwenden, um eine ON ERROR-Routine auszulösen.
Wenn die Tabelle gesperrt ist, hat der Benutzer, der die Tabelle gesperrt hat, Lese- und Schreibzugriff für diese Tabelle. Alle anderen Benutzer im Netzwerk haben dagegen nur Lesezugriff auf die Tabelle. Weitere Informationen zum Sperren einer Tabelle und zum Sperren des Zugriffs auf eine Tabelle durch andere Benutzer finden Sie unter SET EXCLUSIVE und USE.
Eine Tabelle bleibt gesperrt, bis sie von dem Benutzer, der sie gesperrt hat, wieder freigegeben wird. Sie können eine Tabelle mit UNLOCK, durch Schließen der Tabelle oder Beenden von Visual FoxPro freigeben. Tabellen können mit USE, CLEAR ALL oder CLOSE DATABASES geschlossen werden.
Standardmäßig versucht FLOCK( ) einmal, eine Tabelle zu sperren. Verwenden Sie SET REPROCESS, wenn der Versuch, die Tabelle zu sperren, automatisch wiederholt werden soll, nachdem der erste Versuch fehlgeschlagen ist. SET REPROCESS legt die Anzahl der Versuche fest, die Tabelle zu sperren, oder den Zeitraum, in dem versucht wird, die Tabelle zu sperren, nachdem der erste Versuch fehlgeschlagen ist. Weitere Informationen finden Sie unter SET REPROCESS.
Mit Hilfe von SET RELATION können Sie Beziehungen zwischen zwei oder mehr Tabellen herstellen. Wenn Sie eine Tabelle, die mit mehreren Tabellen verknüpft ist, mit einer Dateisperre versehen, werden die verknüpften Tabellen nicht ebenfalls mit einer Dateisperre versehen. Sie müssen die Sperren für die verknüpften Tabellen explizit aktivieren und aufheben.
Weitere Informationen zum Sperren von Datensätzen und Dateien sowie zum Freigeben von Tabellen in einem Netzwerk finden Sie unter Programmieren für gemeinsamen Zugriff.
Beispiel
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products && Opens products table
SET REPROCESS TO 3 SECONDS
SELECT * FROM products INTO TABLE newprods
IF FLOCK( )
** New product initialization ** REPLACE ALL in_stock WITH 0.00 REPLACE ALL on_order WITH 0.00 WAIT 'Initialization Complete' WINDOW NOWAIT ELSE ** File is locked, warn user ** WAIT WINDOW 'Unable to open products file; try again later!' NOWAIT ENDIF
BROWSE FIELDS in_stock, on_order && Displays newprods table
USE
ERASE newprods.dbf
Siehe auch
LOCK( ) | RLOCK( ) | SET REPROCESS | SET RELATION | UNLOCK | USE | SET EXCLUSIVE