Office中国论坛/Access中国论坛

标题: 循环中怎样压缩数据库 [打印本页]

作者: apeng    时间: 2007-1-25 02:13
标题: 循环中怎样压缩数据库
我有很多的TXT文档要导入到access中,希望每导入一个TXT文档,执行一步查询和DAO做的更新,然后压缩数据库,再导入下一个TXT文档,但是怎样才能执行压缩后在执行接下来的步骤呢?

Private Sub Command0_Click()
Dim MyFile, MyPath

On Error GoTo ImportTXTFile_Err

MyPath = "C:\Documents and Settings\xiaoapen\桌面\apeng0123\"
MyFile = Dir(MyPath & "*.txt")    ' 找寻第一项。
Do While MyFile <> ""    ' 开始循环。
    If myname <> "." And myname <> ".." Then
        If (GetAttr(MyPath & MyFile) And vbDirectory) <> vbDirectory Then
            Debug.Print MyFile
            DoCmd.TransferText , "导入规格", "原始", MyPath & MyFile, False
            DoCmd.OpenQuery "查询1"
            qqqqq
            DoCmd.OpenQuery "查询2"
            DoCmd.OpenQuery "查询3"
            Call del_errTab
            Compact
        End If
    End If
    MyFile = Dir    ' 查找下一个目录。
    Loop
End Sub
作者: andymark    时间: 2007-1-25 04:23
压缩当前数据库,调用下面的命令

CommandBars("menu bar").Controls("工具(&T)").Controls("数据库实用工具(&D)").Controls("压缩和修复数据库(&C)...").accDoDefaultAction
作者: apeng    时间: 2007-1-25 05:44
运行宏或VB代码期间不能压缩打开的数据库。。。。。。
作者: andymark    时间: 2007-1-25 07:12
一定要每导入一个压缩一次,全部导完压缩不行?
作者: apeng    时间: 2007-1-25 18:29
由于数据每次处理后就会变得很大,比如压缩后有40M,压缩前500M,很快就会到2G,DAO得过程是

Public Sub qqqqq()
Dim rs As DAO.Recordset
Dim s1 As String

Set rs = CurrentDb.OpenRecordset("原始")
rs.MoveFirst
s1 = rs(1)
rs.MoveNext
Do Until rs.EOF
    If IsNull(rs(1)) Then
        rs.Edit
        rs(1) = s1
        rs.Update
    Else
        s1 = rs(1)
    End If
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing
   
End Sub

可以优化吗?
作者: 强子    时间: 2007-1-26 04:18
幸亏我的文本数据文件没有楼主的大,我的文本文件是100个100K的。

全部导入计算后退出时压缩。
作者: apeng    时间: 2007-1-26 18:32
晕倒,100K就不用压缩了,呵呵




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3