社区
VB基础类
帖子详情
如何恢复access中被删除的记录
qhzxcz
2002-04-09 05:51:39
在Access中,如果删除记录之后(无论用手工或程序删除),文件字节数并没有减少,说明数据还在里面,如何将它恢复回来。如果不恢复,又用什么方法,把多余的空间释放出来(要求编程解决)。
...全文
1143
12
打赏
收藏
如何恢复access中被删除的记录
在Access中,如果删除记录之后(无论用手工或程序删除),文件字节数并没有减少,说明数据还在里面,如何将它恢复回来。如果不恢复,又用什么方法,把多余的空间释放出来(要求编程解决)。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weidegong
2002-04-10
打赏
举报
回复
这个问题是否算解决了?
用DAO压缩也是一个办法,没试过,但是感觉不是较好的方法:
首先我们看一下这段帮助文档:
压缩 Access 数据库或 Access 项目疑难解答
Microsoft Access 数据库或 Microsoft Access 项目不能压缩的原因有下列几点:
磁盘空间已经不能同时容纳原始与压缩的 Access 数据库或 Access 项目版本。请删除不必要的文件后重试一次。
没有“打开/运行”和“以独占方式打开”Access 数据库的权限。如果没有拥有此数据库,请与其拥有者联系以决定是否可以获得这个数据库的这两个权限。如果拥有此数据库,必须更新权限。
其他用户打开了 Access 数据库或 Access 项目。
Access 数据库或 Access 项目位于只读的共享网络中,或它的文件属性设置为“只读”。
1.假如发布在网站、C/S程序服务器上,可能会有很多人在线访问,如何判断时间可以“以独占方式打开”?
2.压缩后的新文件必须手工替换原有文件
而如果设置关闭时自动压缩,则所有问题交给Access自动处理了。
weidegong
2002-04-10
打赏
举报
回复
我想我知道问题的答案了:
Access在增加数据时,会增大数据库文件*.mdb的体积。但是在删除数据时,只是清空物理空间中的数据而没有收回所分配在硬盘上的空间。因此我们看到的*.mdb文件的大小是历史上这个文件体积的最大值。下面我举个例子:
比如,test.mdb中曾经保存了10M的数据,那么他的体积会是10M,删掉数据库中所有数据后,test.mdb文件的大小将仍然是10M.此时再增加新的数据,假如新增加的数据量有5M,此时test.mdb文件的大小依然是10M,而不是15M。
要解决这个问题其实很简单,下述文字摘自Access 2000的帮助文档某一页:
-----
关闭时自动压缩 Access 数据库或 Access 项目
Microsoft Access 可以在每次关闭时自动压缩 Microsoft Access 数据库或 Microsoft Access 项目。
打开想要 Microsoft Access 自动压缩的 Access 数据库或 Access 项目。
单击“工具”菜单中的“选项”命令。
单击“常规”选项卡。
选中“关闭时压缩”复选框。
注意 在关闭多用户(共享)数据库时,如果其他用户打开了该数据库,也不会压缩。
zjq5308
2002-04-10
打赏
举报
回复
关注,但太长了,我以后看吧
weidegong
2002-04-10
打赏
举报
回复
如果您在 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数据库时可以尝试进行这样的压缩,您应该会发现我说的没有错。
weidegong
2002-04-10
打赏
举报
回复
压缩 Access 数据库或 Access 项目 如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片并会降低磁盘空间的使用效率。压缩 Access 数据库或 Access 项目实际上是复制该文件,并重新组织文件在磁盘上的存储方式。
压缩同时优化了 Access 数据库和 Access 项目的性能。但是,在 Access 项目中,压缩不会影响数据库对象 ,例如表或视图,它们存储在 Microsoft SQL Server 数据库中而不是在 Access 项目本身中。同样,压缩不会影响 Access 项目中的自动编号。但是,在 Access 数据库中,如果已经从具有 AutoNumber 字段的表的末尾删除了记录,压缩该数据库就会重新设置自动编号值。添加的下一个记录的自动编号值将会比表中没有删除的最后记录的自动编号值大一。
weidegong
2002-04-10
打赏
举报
回复
删除记录之后(无论用手工或程序删除),文件字节数并没有减少,说明数据还在里面?
上面这句不一定正确,文件字节数没有减少,并不说明数据还在里面,只是空间没有回收而已吧
dgz01
2002-04-10
打赏
举报
回复
关键是怎么恢复呀
xxfeiyu
2002-04-09
打赏
举报
回复
用DAO压缩阿
DBEngine.CompactDatabase "C:\Old.Mdb", "C:\New.mdb", dbSimpleChinese & ";pwd=newpwd", , ";pwd=oldpwd"
8988
2002-04-09
打赏
举报
回复
难道VB都解决不了吗?
8988
2002-04-09
打赏
举报
回复
可以给出代码吗?
thorkhan
2002-04-09
打赏
举报
回复
刪除現在不清楚
壓縮嗎﹐妳看一下VB帶的VisData程序源代碼就知道了﹐別告訴我妳不知到visdata在哪儿
qhzxcz
2002-04-09
打赏
举报
回复
有解决好者,发短信到8988
Access
2013数据库入门教程
本课程为
Access
2013数据库知识系列课程-数据库表部分,
access
数据库全系列第5部,课程目标:结合《物品管理系统》简单的实例讲解,零基础入门学习
Access
2013数据库表知识。本课程知识点【具体视频章节安排请到课程大纲里查看】:第一章知识点:
Access
2013概述1、
Access
2013概述第二章知识点:
Access
2013工作界面1、
Access
2013工作界面第三章知识点:创建数据库表1、 使用字段模板创建数据表2、 利用表设计器创建表3、 学习技巧第四章知识点:字段的基本操作1、 添加、
删除
和更改移动字段2、 字段的属性及作用3、 主关键字和索引4、 主键的设置、更改和
删除
5、 更改数据类型第五章知识点:数据的有效性1、 数据类型验证2、 字段大小验证3、 使用验证规则属性验证4、 输入掩码验证第六章知识点:创建表之间的关系1、 关系类型2、 创建和使用表关系第七章知识点:为数据库加密1、 设置数据库密码2、 撤销数据库密码第八章知识点:编辑数据表1、 添加和修改
记录
2、
删除
记录
3、 数据查找和替换4、 数据排序和筛选第九章知识点:设置数据表格式1、 设置表的行高和列宽2、 设置字体格式3、 隐藏和显示字段第十章知识点:
Access
数据库总结与
中
文编程概述1、
Access
数据库总结2、
中
文编程概述
Access
删除
重复
记录
(
删除
多余
记录
)
Access
删除
重复
记录
(
删除
多余
记录
)
在
Access
中
查找并
删除
重复
记录
如果您的
Access
数据库包含从多个源导入的数据,或者您继承了已经使用多年而且没有得到正确设置的数据库,那么该数据库
中
可能包含需要清除的重复
记录
。 要确定
Access
表
中
是否存在重复
记录
,可以使用
Access
中
的“查找重复项查询向导”;如果您的表包含的重复
记录
不多,并且您需要先查看
记录
再决定
删除
哪些
记录
,“查找重复项查询向导”可以帮助您清除重复
记录
。但是,您也可以自动
删除
重复
记录
access
重复数据累计_在
Access
中
查找并
删除
重复
记录
如果您的
Access
数据库包含从多个源导入的数据,或者您继承了已经使用多年而且没有得到正确设置的数据库,那么该数据库
中
可能包含需要清除的重复
记录
。要确定
Access
表
中
是否存在重复
记录
,可以使用
Access
中
的“查找重复项查询向导”;如果您的表包含的重复
记录
不多,并且您需要先查看
记录
再决定
删除
哪些
记录
,“查找重复项查询向导”可以帮助您清除重复
记录
。但是,您也可以自动
删除
重复
记录
并保留原...
Access
/VBA/Excel-06-
Access
记录
删除
微信公众号原文 系统:Windows 7 软件:Excel 2010 /
Access
2010 这个系列开展一个新的篇章,重点关注
Access
数据库 主体框架:以Excel作为操作界面,
Access
作为数据库 今天讲讲如何
删除
原有
记录
涉及知识:ADO,SQL:delete Part 1:目标
删除
姓名为张三的这一条
记录
逻辑过程 连接数据库 根
VB基础类
7,763
社区成员
197,609
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章