首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

备份时出现“文件正在使用”解决思路

2012-03-02 
备份时出现“文件正在使用”一个备份的表单,连编后运行时出现“文件正在使用”的错误(但不是备份“全部”时没有

备份时出现“文件正在使用”
一个备份的表单,连编后运行时出现“文件正在使用”的错误(但不是备份“全部”时没有问题),也不知什么原因,请老师帮助指点,谢谢!

表单中combo1中选项是aaa、bbb、全部 && aaa、bbb是数据表
表单中command1(备份到按钮),代码:
If thisform.combo1.value="全部"
  Thisform.text1.value=getdir()+"数据"+allt(str(year(date())))+"-"+allt(str(month(date())))+"-"+allt(str(day(date())))
Else
  If not empty(thisform.combo1.value)
  Thisform.text1.value=PUTFILE("数据备份",allt(thisform.combo1.value),"dbf")
  Else
  Messagebox("请选择要备份的数据。",64+0,"数据备份")
  Thisform.combo1.setfocus
  Endif
Endif
表单中text1用来显示备份路径目录
表单中command2(确定按钮)代码:
Set safety off
Set talk off

If empty(thisform.combo1.value)
  Messagebox("请选择要备份的数据。",64+0,"数据备份")
  Thisform.combo1.setfocus
Else
  If empty(thisform.text1.value)
Messagebox("请选择数据备份去向。",64+0,"数据备份")
Thisform.command3.setfocus
  ELSE
  CLOSE all
  If thisform.combo1.value#"全部" && 分别备份
  _fpt=allt(juststem(thisform.text1.value))+".FPT"
  _cdx=allt(juststem(thisform.text1.value))+".CDX"
  If file(sys(5)+curdir()+""+_fpt) and file(sys(5)+curdir()+""+_cdx)
  Copy file sys(5)+curdir()+""+justfname(allt(thisform.text1.value)) to allt(thisform.text1.value)
  Copy file sys(5)+curdir()+""+_fpt to justpath(allt(thisform.text1.value))+"\"+_fpt
  Copy file sys(5)+curdir()+""+_cdx to justpath(allt(thisform.text1.value))+"\"+_cdx
  Messagebox(juststem(allt(thisform.text1.value))+"备份成功!",64+0,"数据备份")
  Else
  If file(sys(5)+curdir()+""+_fpt)
Copy file sys(5)+curdir()+""+justfname(allt(thisform.text1.value)) to allt(thisform.text1.value)
Copy file sys(5)+curdir()+""+_fpt to justpath(allt(thisform.text1.value))+"\"+_fpt
Messagebox(juststem(allt(thisform.text1.value))+"备份成功!",64+0,"数据备份")
  Else
If file(sys(5)+curdir()+""+_cdx)
Copy file sys(5)+curdir()+""+justfname(allt(thisform.text1.value)) to allt(thisform.text1.value)
Copy file sys(5)+curdir()+""+allt(juststem(thisform.text1.value))+".CDX" to justpath(thisform.text1.value)+"\"+allt(juststem(thisform.text1.value))+".CDX"
Messagebox(juststem(allt(thisform.text1.value))+"备份成功!",64+0,"数据备份")
Else
Copy file sys(5)+curdir()+""+justfname(allt(thisform.text1.value)) to allt(thisform.text1.value)
Messagebox(juststem(allt(thisform.text1.value))+"备份成功!",64+0,"数据备份")
Endif
  Endif
  Endif
  ELSE && 备份全部
  If DIRECTORY(allt(thisform.text1.value))=.t. && 找到text1所显示的目录
  Sask=messagebox("所选的路径已经包含全部数"+chr(13)+"据备份,是否覆盖?",32+4,"数据备份")
  If Sask=6
Delete file allt(thisform.text1.value)+"\*.*" 
rd allt(thisform.text1.value)
md allt(thisform.text1.value)
  *运行到以下时出现“文件正在使用”的错误,如果忽略的话,则各数据表未能备份,但.cdx\.fpt能备份
Copy file sys(5)+curdir()+""+"*.dbf" to allt(thisform.text1.value)+"\*.dbf" 
Copy file sys(5)+curdir()+""+"*.cdx" to allt(thisform.text1.value)+"\*.cdx"  
Copy file sys(5)+curdir()+""+"*.fpt" to allt(thisform.text1.value)+"\*.fpt"
Copy file sys(5)+curdir()+""+"*.dbc" to allt(thisform.text1.value)+"\*.dbc"
Copy file sys(5)+curdir()+""+"*.dct" to allt(thisform.text1.value)+"\*.dct"


Copy file sys(5)+curdir()+""+"*.dcx" to allt(thisform.text1.value)+"\*.dcx"  
Messagebox("A成功备份所有数据!",64+0,"数据备份")
  Endif
  Else
  md allt(thisform.text1.value)
  Copy file sys(5)+curdir()+""+"*.dbf" to allt(thisform.text1.value)+"\*.dbf"
  Copy file sys(5)+curdir()+""+"*.cdx" to allt(thisform.text1.value)+"\*.cdx"
  Copy file sys(5)+curdir()+""+"*.fpt" to allt(thisform.text1.value)+"\*.fpt"
  Copy file sys(5)+curdir()+""+"*.dbc" to allt(thisform.text1.value)+"\*.dbc"
  Copy file sys(5)+curdir()+""+"*.dct" to allt(thisform.text1.value)+"\*.dct"
  Copy file sys(5)+curdir()+""+"*.dcx" to allt(thisform.text1.value)+"\*.dcx"
  Messagebox("成功备份所有数据!",64+0,"数据备份")  
  Endif
  Endif
 Endif
Endif

[解决办法]
备份前,关闭所有打开的文件。

[解决办法]
备份前CLEA ALL试试
[解决办法]
close database
你的表单上控件调用数据库了吧 
或者是你有建立临时表的程序 都容易出现这种情况
建立个中转的数组文件 试试
[解决办法]
当前目录中肯定有已打开的文件。严重不同意这种备份思路,应当将需备份的文件先拷贝到临时文件夹,再压缩备份
[解决办法]
独占方式打开 关掉文件
[解决办法]
在多用户环境常会出现此问题。有两种可能:一是别的用户独占打开了文件;二是别的用户虽共享打开了文件但正在锁定文件。请分析后处理。
[解决办法]
两种解决方案:
1.copy的时候,要所有用户全部退出系统
2.在服务器上定期运行bat先copy到另一个目录,客户端再从另一目录copy到本地
[解决办法]
加 close table all

热点排行