Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

煮江品茶老师请进来,关于你文章的删除备份

mmtea  发表于:2011-09-20 10:42:17  
复制

我一直用的是关闭窗体自动备份后台数据库,长久后但是导致备份文件非常多,能不能设定为只保留十条备份多余的自动删除?

 

我查了论坛后发现煮江品茶老师的文章

【Access小品】删除备份文件函数 http://www.accessoft.com/article-show.asp?id=4748

品茶老师,这是按时间删除的,能不能按条数进行删除?最好能给个例子,谢谢

 

Top
jia 发表于:2011-09-20 13:08:56

模块

Public Sub BackData()
'备份数据
    Dim strdir As String
    Dim strSourceFile As String
    Dim strDestinFile As String
    Dim fs As Object
    Dim strPath As String
    Dim strBkp As String
    Dim intBkp As Integer
    Dim strLowBkp As String

    Set fs = CreateObject("Scripting.FileSystemObject")

    strdir = CurrentProject.path & "\自动备份" 'BackupData备份文件夹保称

    On Error Resume Next
    MkDir strdir
    On Error GoTo 0

    ' 现在查找存在的备份文件 - 只保存最近的 10 个文件
    strBkp = Dir(strdir & "\自动*.mdb")
    Do While Len(strBkp) > 0
        intBkp = intBkp + 1
        If (strBkp < strLowBkp) Or (Len(strLowBkp) = 0) Then
            ' 保存找到的最早的文件名
            strLowBkp = strBkp
        End If
        ' 获取下一个文件
        strBkp = Dir
    Loop
    ' 如果超过 10 个备份文件
    If intBkp > 10 Then
        ' 删除最早的一个
        Kill strdir & "\" & strLowBkp
    End If

    ' 现在,备份一个以今天的日期命名的备份文件
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim sFilename As String
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset("MSysObjects", dbOpenDynaset)
    rs.FindFirst BuildCriteria("Type", dbInteger, "=6")
    sFilename = rs(1)       '获取后端数据库路径和文件名
    Set rs = Nothing
    Set db = Nothing

   strdir = strdir & "\自动" & Format(Now(), "yyyymmdd_hhnnss") & "备份.mdb" '(Date, "yymmdd") & ".bak"
     'strdir = strdir & "\自动" & Format(Date, "yymmdd") & "备份.bak"
    If Dir(strdir) = "" Then
        strSourceFile = sFilename
        strDestinFile = strdir
        fs.CopyFile strSourceFile, strDestinFile

    End If

End Sub

调用:

BackData



煮江品茶 发表于:2011-09-20 16:42:15

可参考1楼jia同志所提供代码。

备份文件多几个少几个无碍大局,按方便的原则处理即可。



dbaseIIIer 发表于:2011-09-21 01:49:19

我98年编的程式,曾用的方法, (现在还每天在正常操作 Win98系统, Access97):

 

 

SrcFile = currentdb().TableDefs("已连接表名称").Connect

n = Instr( SrcFile, ":\") -1

SrcFile = Mid( SrcFile, n)

BakPath = "F:\.......\"  ' 自定义备份路径

 

if dir( BakPath & "Bak10.mdb") <> "" then Kill BakPath & "Bak10.mdb"

for x = 1 to 9

    shell "command.com /c ren " & BakPath & "Bak" & x & ".mdb Bak" & (x+1) & ".mdb", vbHide

next

 

shell "command.com /c copy " & SrcFile & " Bak1.mdb", vbHide

 

曾经客户要求自行删除, 后来改为自动删除 余31个.

以上例字是 10个为限.



总记录:3篇  页次:1/1 9 1 :