程序的不正常关闭(连接不正常断开,记录集不正常关闭)
就有可能导致。所以每次启动程序的时候最好修复、压缩一下数据库。还有,直接Access数据库的删除并没有真正删除,您需要压缩才能
真正的释放空间。

解决方案 »

  1.   

    您可以尝试添加10000条记录,然后看文件大小。
    再删除记录,再看文件大小。
    再压缩,再看文件大小。
    您就会明白了。您可以在程序启动的时候做。'修复压缩数据库
    Public Sub RepairDataBase()
        
        Dim TmpData As String
        
        TmpData = App.Path & "\DataBase\tmp.mdb"
            
        If FileExists(TmpData) Then Kill TmpData
        
        DBEngine.CompactDatabase SYSDATABASE, TmpData, , , ";pwd=" & DataBasePWD
        Kill SYSDATABASE
        Name TmpData As SYSDATABASE
        
    End SubSYSDATABASE : 数据库路径
    (App.Path & "\Data\My.MDB")
    DatabasePWD : 数据库密码这个sub在程序开始时候调用。
      

  2.   

    Const OFS_MAXPATHNAME = 128
    Const OF_EXIST = &H4000Private Type OFSTRUCT
            cBytes As Byte
            fFixedDisk As Byte
            nErrCode As Integer
            Reserved1 As Integer
            Reserved2 As Integer
            szPathName(OFS_MAXPATHNAME) As Byte
    End TypePrivate typOfStruct As OFSTRUCT
    Declare Function apiOpenFile Lib "Kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
    Public Function FileExists(ByVal sFilename As String) As Boolean
        On Error Resume Next
        If Len(sFilename) > 0 Then
            apiOpenFile sFilename, typOfStruct, OF_EXIST
            FileExists = typOfStruct.nErrCode <> 2
        End If
    End Function判断文件是否存在的Func