主题:关于数据备份的问题?
crocodile3358
[专家分:390] 发布于 2008-08-13 22:48:00
建立一个备份数据库中所有记录的命令按钮,但是在程序连编后,制作成独立的安装程序,在计算机上安装后,执行这个命令,总显示有部分文件在使用,无法备份,但是不能备份的文件基本上是.exe,foxuser.dbf,foxuser.frp,和表单上的一些小图标,有没有办法在备份的时候,忽略这几个文件,就是当遇到文件正在使用时,直接跳过,不用复制。谢谢了
回复列表 (共7个回复)
沙发
ihorse [专家分:970] 发布于 2008-08-16 08:22:00
请你给出你的备份代码好么?
一般而言,备份时直接选数据文件即可。这是有办法的,所以要先看你的备份方法!
板凳
crocodile3358 [专家分:390] 发布于 2008-08-17 20:53:00
是的,我也知道备份一般是备份数据文件就行的,但是我的数据表链接着很多图片以及其他内容,需要把默认路径下的所有文件都备份了,现在关键的问题是我不知道怎样忽略掉.exe和foxuser.dbf和foxuser.fxp在每次执行程序后总会产生那两个令人讨厌的文件。。。。。。。
path_1=ADDBS(ALLTRIM(thisform.text1.Value))
path_2=ADDBS(ALLTRIM(thisform.text2.Value))
IF EMPTY(path_1) OR EMPTY(path_2)
MESSAGEBOX("备份数据库名和路径不能为空!",16,"系统")
ELSE
IF DIRECTORY(path_2)=.f.
MD "&path_2"
ENDIF
IF RIGHT(path_1,1) <> "\"
dirpath=path_1+"\*.*"
Ypath=path_1+"\"
ELSE
dirpath=path_1+"*.*"
Ypath=path_1
ENDIF
ADIR(filecursor,dirpath)
cout=ALEN(filecursor,1)
thisform.olecontrol1.Visible=.t.
thisform.olecontrol1.max=cout
FOR m=1 TO cout
thispathname=Ypath+ALLTRIM(filecursor(m,1))
bakpathname=path_2+ALLTRIM(filecursor(m,1))
COPY FILE "&thispathname" TO "&bakpathname"
thisform.olecontrol1.value=m
thisform.Refresh
ENDFOR
thisform.olecontrol1.Visible=.f.
MESSAGEBOX("数据备份成功!",48,"系统")
ENDIF
thisform.refresh
3 楼
yzzd2167 [专家分:550] 发布于 2008-08-18 10:52:00
試試:
FOR m=1 TO cout
thispathname=Ypath+ALLTRIM(filecursor(m,1))
bakpathname=path_2+ALLTRIM(filecursor(m,1))
if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
or JUSTFNAME(thispathname) = 'foxuser.frp'
else
COPY FILE "&thispathname" TO "&bakpathname"
thisform.olecontrol1.value=m
thisform.Refresh
endif
ENDFOR
4 楼
crocodile3358 [专家分:390] 发布于 2008-08-18 15:41:00
不行啊,if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
or JUSTFNAME(thispathname) = 'foxuser.frp' 这一句只有假设,没有操作呀,怎样把这三个文件忽略
5 楼
yzzd2167 [专家分:550] 发布于 2008-08-19 08:25:00
只有假设,没有操作
不就忽略了嗎!
else裡你不是用
COPY FILE "&thispathname" TO "&bakpathname"
做了備份嗎?
不解。
6 楼
ihorse [专家分:970] 发布于 2008-08-20 15:47:00
[quote]不行啊,if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
or JUSTFNAME(thispathname) = 'foxuser.frp' 这一句只有假设,没有操作呀,怎样把这三个文件忽略[/quote]
这句话就是判断文件扩展名是否为EXE等之类的,你自己修改并完善啊!
7 楼
crocodile3358 [专家分:390] 发布于 2008-08-22 11:14:00
不知道怎么完善啊, 请赐教 。
我来回复