回 帖 发 新 帖 刷新版面

主题:VF数据备份与还原代码

急求备份与还原的代码 那位高手帮忙?   成功的送三十分,不完全成功的看情况送分,一般为十分

回复列表 (共10个回复)

沙发

备份
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

板凳

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 楼

怎么和我搜的一样啊,备份可以实现,但是还原就实现不了耶

4 楼

你的回复也是和我搜的一样,就是行不通,那个备份有问题

5 楼


原来在
MESSAGEBOX(CHR(13)+"数据备份完毕,存放路径为:          "+CHR(13)+CHR(13)+bfpath,64,"信息")  
行代码中  +bfpath  是多余的,所以导致错误,

6 楼


备份
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 楼

我用的是 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 楼

还原::

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 楼

硬件相关函数:

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 楼

函数名: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 

我来回复

您尚未登录,请登录后再回复。点此登录或注册