2014-09-05 47 views
-1

我必須爲舊的Foxpro 2.6 dos數據庫創建額外的表單。我正在使用:正在使用的Foxpro 2.6陣列文件

SELECT DISTINCT Conref, Conref + ", " + STR(ProdQty) + ", " + Produce 
    FROM c:\temp\tempconx.dbf 
    INTO ARRAY unselected 
    ORDER BY Conref, ProdQty, Produce 

填充未選中的數組。問題是這似乎爲數組創建了一些臨時文件。如果我重新運行表單,我得到一個使用中的文件錯誤。我已經在清理部分嘗試過"RELEASE unselected",但仍然存在相同的問題。

如果我查看臨時文件夾,我可以看到文件顯示爲陣列創建並消失,因爲數據庫.exe運行該程序的文件已關閉。然後我可以再次運行.exe文件並運行沒有錯誤的表單。

任何想法,如何刪除陣列臨時文件,而不關閉.exe文件?

謝謝

+0

「文件正在使用中」錯誤不可能有什麼用陣列的非選定,因爲那不是一個文件。數組不創建臨時文件。你確定你沒有遇到過使用DBF的問題嗎? – 2014-09-05 20:38:41

回答

0

當做一個選擇,如果表已經由同名開闢爲FROM引用的名稱,它應該只是使用它。如果所述表格以其他名稱(無論出於何種原因)被打開,則它可能會窒息表格已被使用。

如果這個「C:\ Temp \ TempConx.dbf」是罪魁禍首,你總是可以重新創建一個「CURSOR」(但這是隻讀的,沒有一些特殊的煙霧和鏡像, -write如果確實需要從臨時結果表中編輯數據。

總之,如果表是預先打開,或者已經存在,你可能想看看

SET SAFETY OFF

這如果您嘗試重新創建該文件(而不是打開),它將允許您覆蓋,而沒有嘮叨文件已存在....

此外,如果你可能需要預先檢查/通過執行類似關閉臨時表...

if used("TempConx") 
    select TempConX 
    use 
endif 

if file("C:\Temp\TempConx.dbf") 
    erase "C:\Temp\TempConx.dbf" 
endif 


select * ; 
    from SomeOtherTable ; 
    where SomeCondition ; 
    into table C:\Temp\TempConx.dbf; 
    order by ...