当前位置: 代码迷 >> VFP >> 备份时出现“文件正在使用”解决思路
  详细解决方案

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

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

表单中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"
  相关解决方案