我不得不为旧的Foxpro 2.6
dos数据库创建一个额外的表单。我正在使用:
SELECT DISTINCT Conref, Conref + ", " + STR(ProdQty) + ", " + Produce
FROM c:\temp\tempconx.dbf
INTO ARRAY unselected
ORDER BY Conref, ProdQty, Produce
未选择填充数组。问题是这似乎为数组创建了一些临时文件。如果我重新运行表单,我会收到一个正在使用的文件错误。我在清理部分尝试了"RELEASE unselected"
,但仍然遇到同样的问题。
如果我查看temp文件夹,我可以看到文件在创建数组时出现,并在运行程序的数据库.exe
文件关闭时消失。然后我可以再次运行.exe
文件并运行没有错误的表单。
任何想法,如何在不关闭.exe
文件的情况下删除数组临时文件?
谢谢
答案 0 :(得分:0)
执行select时,如果表已经使用与FROM引用名称相同的名称打开,则应该使用它。如果所述表作为另一个名称打开(无论出于何种原因),它可能会阻塞该表已被使用。
如果这个“C:\ Temp \ TempConx.dbf”是罪魁祸首,你可以随时将其重新创建为“CURSOR”(但这是只读的,没有一些特殊的烟雾镜像再次打开 - 如果您需要编辑临时结果表中的数据,请写入。
无论如何,如果表格已预先打开或已经存在,您可能需要查看
设置安全关闭
如果你试图重新创建文件(并且没有打开),它将允许你覆盖而不存在...文件已经存在....
此外,如果您可能需要通过执行类似...
之类的操作来预先检查/关闭临时表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 ...