Foxpro 2.6阵列文件正在使用中

时间:2014-09-05 09:47:50

标签: arrays foxpro

我不得不为旧的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文件的情况下删除数组临时文件?

谢谢

1 个答案:

答案 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 ...