主题:VF数据备份与还原代码
lanxiaojun2
[专家分:20] 发布于 2008-06-07 13:22:00
急求备份与还原的代码 那位高手帮忙? 成功的送三十分,不完全成功的看情况送分,一般为十分
最后更新于:2008-06-09 18:02:00
回复列表 (共10个回复)
沙发
ibcasliyi [专家分:100] 发布于 2008-06-07 15:41:00
备份
bfpath=getdir()
use 表名
copy to bfpath+表名
MESSAGEBOX(CHR(13)+"数据备份完毕,存放路径为: "+CHR(13)+CHR(13)+bfpath,64,"信息")
use
恢复
use 表名
zap
append from bfpath+表名
MESSAGEBOX(CHR(13)+"数据自以下路径恢复完毕: "+CHR(13)+CHR(13)+bfpath,64,"信息")
use
板凳
hccddwh [专家分:710] 发布于 2008-06-08 15:02:00
1、数据备份
复制一winrar.exe文件到你的程序运行目录下,然后把下列代码加到你的备份按钮中,即可备份数据库文件,文件名按为“年月日时分秒”来命名。
例子:将当前目录下database数据库目录的所有文件备份到当前目录的backup下,文件名按为“年月日时分秒”来命名
cdir=''
cdir=SYS(5)+CURDIR()
run /n &cdir\winrar a -ag -ep -afzip -y -inul &cdir\backup\sy &cdir\database\*.*
RELEASE cdir
2、恢复
可建一表单,上放一“浏览”按钮和一显示备份文件路径的“text控件”,再放一“恢复
”按钮:
浏览代码:
c1zipfile=''
c2zipfile=''
c1zipfile=GETFILE('zip','压缩文件:','打开',0,'恢复数据')
IF !EMPTY(c1zipfile)
thisform.text1.Value=c1zipfile
c2zipfile=JUSTSTEM(c1zipfile)
ENDIF
恢复代码:
cdir=''
cdir=SYS(5)+CURDIR()
IF !EMPTY(c1zipfile).and.justext(c1zipfile)='ZIP'.and.len(c2zipfile)=16.and.substr(c2zipfile,1,2)='SY'
RUN /n &cdir\winrar x -y -inul "&c1zipfile" &cdir\database
ELSE
=MESSAGEBOX("打开的文件名或类型错误!",0+48,"错误")
ENDIF
thisform.text1.Value=''
c1zipfile=''
c2zipfile=''
thisform.Refresh
3、注意在表单的init事件中放入代码:
PUBLIC c1zipfile
PUBLIC c2zipfile
在表单的unload事件中放入代码:
release c1zipfile
release c2zipfile
release cdir
3 楼
lanxiaojun2 [专家分:20] 发布于 2008-06-09 17:56:00
怎么和我搜的一样啊,备份可以实现,但是还原就实现不了耶
4 楼
lanxiaojun2 [专家分:20] 发布于 2008-06-09 17:58:00
你的回复也是和我搜的一样,就是行不通,那个备份有问题
5 楼
lanxiaojun2 [专家分:20] 发布于 2008-06-09 18:17:00
原来在
MESSAGEBOX(CHR(13)+"数据备份完毕,存放路径为: "+CHR(13)+CHR(13)+bfpath,64,"信息")
行代码中 +bfpath 是多余的,所以导致错误,
6 楼
ibcasliyi [专家分:100] 发布于 2008-06-10 09:10:00
备份
bfpath=getdir()
use 表名
copy to bfpath+表名
MESSAGEBOX(CHR(13)+"数据备份完毕,存放路径为: "+CHR(13)+CHR(13)+bfpath,64,"信息")
use
恢复
bfpath=getdir()
use 表名
zap
append from bfpath+表名
MESSAGEBOX(CHR(13)+"数据自以下路径恢复完毕: "+CHR(13)+CHR(13)+bfpath,64,"信息")
use
7 楼
homayzh [专家分:7040] 发布于 2008-06-11 11:49:00
我用的是 MyFll
MyFll是专为Microsoft Visual FoxPro设计的扩展库,
大小 152Kb
以下是我备份和还原的源码,你可以参考一下!!!
如果对MyFll 有兴趣可在网上下载,或我给你发到你的e-mail里
SET LIBRARY TO myfll
cName = TTOC(DATETIME(),1)+".homayzh" &&取备份文件为,扩展名为homayzh
IF !DIRECTORY(cpath) &&判断备份目录 是否存在
IF 6 = messbox("你的系统备份目录:"+CHR(13)+cpath+CHR(13)+"已被删除!现在建立吗?",292)
MD &cPath
ENDIF
ENDIF
****下面是备份proof_data.dbf;proof_rsyd.dbf;code.dbf;sys_info.dbf 四个文件
IF Zip('proof_data.dbf|proof_rsyd.dbf|code.dbf|sys_info.dbf',cPath+"\"+cName,'homayzh@foxmail.com')
MESSBOX("数据备份成功!"+CHR(13)+"备份目录:"+cPath+"\"+CHR(13)+"备份文件:"+cName)
ELSE
messbox("备份失败,可能是备份文件目录不存在!请检查!")
ENDIF
thisform.Release
8 楼
homayzh [专家分:7040] 发布于 2008-06-11 11:50:00
还原::
IF !UPPER(ALLTRIM(cLir))=="HOMAYZH"
messbox("你没有选择备件文件,或备件文件无效!!",28)
RETURN
ENDIF
IF 7 = messbox("确定要还原["+ALLTRIM(thisform.label8.caption)+"]备件的文件吗?",292)
RETURN
ELSE
IF UnZip(cFileName,cNewPath,'homayzh@foxmail.com')
USE sys_info
oform.image1.Picture = sys_info.picture
messbox("还原成功!")
ELSE
messbox("还原失败!")
ENDIF
ENDIF
9 楼
homayzh [专家分:7040] 发布于 2008-06-11 11:53:00
硬件相关函数:
GetDiskSerial 读取指定硬盘的序列号
GetCpuId 读取CPU的序列号
GetMAC 读取网卡的MAC地址
GetVolumeNumber 读取指写磁盘的卷标
IsDiskInDrive 检查指定磁盘是否就绪
GetPort 读取系统的串口、并口
加密解密函数:
MD5File 计算一个文件的MD5效验和
MD5String 计算一个字符串的MD5效验和
CRC32File 计算一个文件的CRC32效验和
CRC32String 计算一个字符串的CRC32效验和
des 采用DES算法加密或解密一个字符串,长度为8位
des16 采用DES算法加密或解密一个字符串,长度为16位
des24 采用DES算法加密或解密一个字符串,长度为24位
EnDeString 双向加密解密字符串的函数
Encrypt 双向加密解密字符串
压缩解压函数:
Zip 压缩文件
UnZip 解压文件
ZipInfo 测试一个文件是否在压缩文件中存在
ZipFileToStr 测试一个文件是否在压缩文件中存在
CompressString 压缩一个字符串
DeCompressString 解压字符串
网络相关函数:
DownFile 从internet上下载文件到本地
DownFileX 线程方式从网上下载一个文件
HttpGetFileSize 读取internet上的文件大小
FtpDownFile 从FTP服务器下载文件
FtpUploadFile 向FTP服务器上传文件
ShareAdd 在局域网共享文件夹
ShareDel 删除共享文件夹的共享
ShareMapDrive 映射网络驱动器
ShareDelDrive 删除映射的网络驱动器
GetLocalIP 读取本机IP
DomainToIP 转换域名为IP地址
DialUp 建立拨号连接
DialDown 断开拨号连接
GetSqlServer 列出所有网络上的SQL Server
邮件函数:
SmtpCreate 创建一个SMTP发送邮件的句柄
SmtpNewMail 在内存中创建邮件内容,等待发送
SmtpSend 发送邮件
SmtpGetLastError 检测邮件最后的错误
SmtpClose 关闭句柄
打印相关函数:
PaperAdd 添加自定义纸张并返回ID
PaperDel 删除自定义纸张
PaperInfo 读取所有纸张信息或指定纸张信息
GetDefaultPrinter 取得默认打印机的名称
SetDefaultPrinter 设置默认打印机
常用转换函数:
ToPY 生成指写字符串的拼音首字
NToC 数字转人民币大写
hzbh 计算指定字符串的汉字笔划
StringToDword 将高底位存放的字符串,转换为字符型
DwordToString 将整型数值转换为字符型数值
NumConver 进制转换函数,能够将一个数字转换为2至36进制的字符串
ConverNum 将指定进制的字符串转换为数值型
GB2312ToBIG5 简体转繁体
BIG5ToGB2312 繁体转简体
FormToBmp 将表单保存为BMP图片
注册表读写函数:
regRead 读取注册表中的设置
regWrite 向注册表中写入设置
regDelKey 删除注册表中的分支
regDelValue 删除注册表中的设置
ini文件读写函数:
iniRead 从ini文件中读取设置
iniWrite 向ini文件中写入一个设置
iniSet 设置默认的数据段和ini文件
iniSetSection 设置默认的数据段
iniSetFileName 设置默认的ini文件
系统托盘
SysTrayAdd 向系统托盘添加一个图标
SysTrayEdit 修改系统托盘的图标
SysTrayDel 删除系统托盘中的图标
HotKeyAdd 向系统注册一个热键
HotKeyDel 删除向系统注册的热键
文件操作
CopyFiles 复制文件
MoveFiles 移动文件
DeleteFiles 删除文件
CreateShortcut 创建快捷方式
GetIcon 释放exe或dll中的图标
其它:
SetDateTime 设置Windows系统时间
ChangEres 更改屏幕的分辨率
idleLoad 开始加载空闲检测
idleSeconds 读取系统空闲时间
idleUnload 卸载空闲检测
KillApp 终止指定进程
KillAllApp 终止所有进程,但排除指定标题的进程
FindAllFile 查找指定文件夹下的所有文件
IsNum 检测函数是否是数字
CheckProcess 检测主程序是否重复运行
封装过的Win32 API函数:
FindWindow 查找指定窗口的句柄
SendMessage 向指写窗口发送指定消息
PostMessage 将消息投递到指定句柄的消息队列
ShowWindow 显示指定窗口
ShowWindowAsync 显示指定窗口
SetWindowLong 设置窗口的扩展样式
SetLayeredWindowAttributes 设置窗口效果
SetForegroundWindow 激活指定窗口使这成为最前面的窗口
ShellExecute 调用系统关联,打开一个文件
ShellExecWait 调用一个程序,并等待执行结束
SuspendThread 暂停一个线程
ResumeThread 恢复一个线程
Beep 使电脑内喇叭发出beep声
ExitWindowsEx 退出Windows
Sleep 程序挂起nMilliseconds毫秒
ExitProcess 终止当前进程
GetLastError 返回最后的错误号码
SetParent 设置窗口的父窗口
UpdateWindow 更新窗口
10 楼
homayzh [专家分:7040] 发布于 2008-06-11 12:25:00
函数名:Zip(cSourceFile,cZipFileName[,cPassword])
缩写:zip
压缩文件函数。支持通配符,如*.prg,*.fr?等,支持子文件夹。此算法使用开源的zlib和minizip。
注意:此函数将覆盖已存在的zip文件,使用前应检查zip文件是否存在。
返回值:
逻辑值,压缩成功,返回真。
参数:
cSourceFile:字符型,准备压缩的文件列表,可以使用通配符,不同文件使用|分隔,只能使用相对路径,如果使用绝对路径,将产生不可预知后果。
示例:
当前文件夹下的所有文件:*.*
所有报表文件和data文件夹下的dbf文件:*.frx|*.frt|data\*.dbf
cZipFileName:字符型,要生成的压缩文件,比如Test.zip,可以使用相对路径或绝对路径。
cPassword:字符型,可选,密码,默认无密码
示例代码
Set Library To myFll
*压缩当前文件夹下的所有文件到d:\test1.zip
?Zip("*.*","d:\test1.zip")
*压缩当前文件夹下所有chm文件和fll文件到当前文件夹下的myfll.zip
?Zip("*.chm|*.fll","myfll.zip")
*压缩文件夹
?Zip("data","data.zip")
Set Library To
*******************************************************************************
函数名:UnZip(cZipFileName [,cDestDir[,cPassowrd]])
缩写:unzi
解压文件。此算法使用开源的zlib和minizip。
返回值:
逻辑值,为真时解压成功。
参数:
cZipFileName:字符型,指定要解压的文件,可以使用相对路径和绝对路径。
[cDestDir]:字符型,可选,解压的位置。默认为当前路径。可以使用绝对路径和相对路径。如果指写文件夹不存在,将解压失败。
cPassowrd:字符型,密码,可选
示例代码
Set Library To myFll
*将Test.zip解压到当前文件夹
?UnZip("test.zip")
*将Test.zip解压到c:盘
?UnZip("test.zip","c:\")
*将Test.zip解压到当前test文件夹
?UnZip("test.zip","test")
Set Library To
我来回复