中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 数据库区 -> ACCESS -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ACCESS · MSSQL
· Mysql · DB2
· ORACLE · SYBASE
· 其他相关
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· 随机得到Access数据...
· asp.net连接Access数...
· 在VB中使用API函数(...
· 已调试好的asp程序在...
· 在VB中利用Word宏命...
· 将Access数据库移植...
· 基于ACCESS数据库的...
· 如何从ACCESS数据库...
· 压缩并修复Access数...
· 读取Access数据库表...
在VB中压缩ACCESS数据库
作者:佚名  来源:不详  发布时间:2006-5-9 15:57:46  发布人:chinazhan

 减小字体 增大字体


  如果您在Access、Access项目中删除数据或对象,可能会产生碎片并导致磁盘空间使用效率的降低。同时,文件的大小并未减小,而是不断的增大,直至您的硬盘没有空间。 有没有好的处理方法呢?其实,在Access中可以对进行压缩优化以提升Access和Access项目的性能,这样的压缩处理的实质是复制该文件,并重新组织文件在磁盘上的存储方式。但是,在Access项目中进行这样的压缩不会影响到对象(例如表或视图),因为它们是存储在Microsoft SQL Server中而不是在Access项目本身中。同样,这样的压缩也不会影响到Access项目中的自动编号。在Access中,如果已经从表的末尾删除了记录,压缩该是就会重新设置自动编号值。添加的下一个记录的自动编号值将会比表中没有删除的最后记录的自动编号值大一。

下面介绍如何在VB中用一个CompactJetDatabase过程实现对Access文件的压缩处理,在这个过程中有一个可选参数,就是在压缩前你是否需要把原有的文件备份到临时目录(True或False)。我用此办法使21.6MB的压缩到仅仅300KB。

‘这些代码可放在模块中,在其他窗体也使用

Public Declare Function GetTempPath Lib "kernel32" Alias _

"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Public Const MAX_PATH = 260

Public Sub CompactJetDatabase(Location As String, Optional BackupOriginal As Boolean = True)

On Error GoTo CompactErr

Dim strBackupFile As String

Dim strTempFile As String

‘检查文件是否存在

If Len(Dir(Location)) Then

‘如果需要备份就执行备份

If BackupOriginal = True Then

strBackupFile = GetTemporaryPath & "backup.mdb"

If Len(Dir(strBackupFile)) Then Kill strBackupFile

FileCopy Location, strBackupFile

End If

‘创建临时文件名

strTempFile = GetTemporaryPath & "temp.mdb"

If Len(Dir(strTempFile)) Then Kill strTempFile

‘通过DBEngine压缩文件

DBEngine.CompactDatabase Location, strTempFile

‘删除原来的文件

Kill Location

‘拷贝刚刚压缩过临时文件至原来位置

FileCopy strTempFile, Location


‘删除临时文件

Kill strTempFile

Else

End If

CompactErr:

Exit Sub

End Sub

Public Function GetTemporaryPath()

Dim strFolder As String

Dim lngResult As Long

strFolder = String(MAX_PATH, 0)

lngResult = GetTempPath(MAX_PATH, strFolder)

If lngResult <> 0 Then

GetTemporaryPath = Left(strFolder, InStr(strFolder, Chr(0)) - 1)

Else

GetTemporaryPath = ""

End If

End Function

以后您在使用Access时可以尝试进行这样的压缩,您应该会发现我说的没有错。   压缩
 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .