2009-04-16 5 views
1

FoxProで開いている排他テーブルを取得しようとすると、アクセスが拒否された場合、ダイアログボックスが生成されます。私は非対話型アプリケーションをターゲットにしているので、操作が成功するかどうか、あるいは少なくとも静かに失敗するかどうかを検出する方法はありますか?古いバージョンでは排他的オープンがfoxproで成功するかどうかを判断する方法は?

TRY 
    USE MyTable IN 0 EXCLUSIVE 
ENDTRY 
... 
IF USED ("MyTable") 
    *-- Use the table here 
ENDIF

答えて

2

cOldError = ON("ERROR") 
ON ERROR * 
USE MyTable IN 0 EXCLUSIVE 
lSuccess = used("MyTable") 
ON ERROR &cOldError 

if lSuccess ... 
+1

を使用して成功はちょうどそれを発見したしました。しかし、(空の)CATCHステートメントが必要であることがわかりました。 –

+0

残念ながら、テーブルオープンは「ソフトで失敗する可能性がありますが、ハードに失敗しました」という操作の1つです。 TRY-CATCH-ENDTRYまたはON ERRORの手配は道のりです。 –

1

:あなたはVFP 8以上持っている場合は

0

を私はFOPEN ...

nFHdl = FOPEN("myfile.dbf", 1) && 1 tries to open the file for writing 
IF nFHdl > 0 THEN 
    FCLOSE(nFHdl) 
    USE myfile.dbf exclusive 
ELSE 
    = messagebox("Can't open Exclusive") 
ENDIF 
関連する問題