ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5969|回复: 10

[求助] 请教,这是怎么一回事:数据库突然无法恢复一个正在设计的窗体

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-7-7 16:51 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这两天,在调整一个窗体,突然发生以下问题:

首先,在保存调整或非特定某个操作时,突然屏显有关“内存不足,不能进行操作”的提示,而且是一连出现数次。

接着,这个窗体就不能关闭或保存,并影响整个数据库不能正常关闭。

再者,MS并发出“发送错误报告”的提示。

无论是否选择“发送错误报告”,在其生成的backup文件内,就不能够再打开这个窗体了,但其它表/查询/窗体等非是次操作的对象均不受影响。

即使使用“压缩和修复数据库”工具,也没有办法恢复这个窗体。

这种情况,是这两天才出现的。

另外,要补充一下的是:

创建这个数据库初期,我曾试过用“压缩和修复数据库”工具来减少这个数据库的“体重”,但每次压缩后都提示“不能打开数据库XXX(我的数据库名称)。应用程序可能无法识别该数据库,或文件可能损坏。”所以,后来一直都只是用.rar的方式压缩数据库。

在此,请教各位前辈,对上述两个问题的看法和处理办法。

感谢回复。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-7 16:51 | 显示全部楼层
急盼回复
因为害怕这个数据库正式应用时,出现同类问题而产生不可逆转的数据丢失情况。
谢谢~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-7 19:54 | 显示全部楼层
补充一下:
屏显有关“内存不足,不能进行操作”的提示,具体内容是:内存不足,无法运行此操作,请关闭多余程序,然后重试。

我的PC是4G内存的,放置这个数据库的硬盘空间为195G,数据库目前“体重”10MB。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-8 16:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-8 16:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这样试试,新建一个数据库,把老的数据库中的所有对象(除了这个窗体以外)都导入到新的数据库中,看看有没有问题.如果没有问题,再重新设计一个窗体.或者把你的数据库传上来看看有什么问题.

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-9 15:19 | 显示全部楼层

回复 5楼 sgrshh29 的帖子

前辈,如果数据库里只有少量对象,你的教路可能可以试一下,但上百个对象,这就...,还要重新建议“关系”,噢

TA的精华主题

TA的得分主题

发表于 2009-7-10 10:16 | 显示全部楼层

提高数据库运行效率的一点建议

提高数据库运行效率的一点建议:当有打开相关记录时,程序运行结束时,建议及时关闭连接,如下例中的qdf.Close   和rs.Close及Set rs = Nothing,这叫释放内存,当然,记录少时,这个优点并不明显,但记录多了,就能看出效率了。
DoCmd.DeleteObject acQuery, "入库单导出查询"
qdf.Close   
............
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "入库单", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
........
rs.Update
rs.Close
Set rs = Nothing

你说所的压缩问题,如果故障已产生却无法修复,你可以试试access的专修工具,论论里不记得谁上传过。不过,对今后的同样的错误,我有一个预防方法,你可以试下,这应该是一个成熟的做法吧,那些高手们,一般是把一个AEECSS文件好好的拆分成两个,一个是单纯的表,也就是后台,里面只有表,也就是单纯的数据,另一个是结合查询、窗体、模块、报表为一体的前台,前台里没有完整的表,前台的表,都是用路径指向后台的那个表,这样做的好处是,无论哪个出问题,修复也是很容易的,如果有象你这样无法压缩的问题,导出表也不会太为难。这样,前台程序的体积也可以大为缩小,减少出错可能。这是一个很好的做法,强烈推建。
当然,象你这样,错误都产生了,如果左试右试弄不好,那你还是试试象前面老兄所说的,重做一个吧,一个个导出,模块多也没办法,你就当重建文件了,正好,给你一个查错的时机。

建议如有用的话,谢我就不用了,如有可能,能把你的作品传上来供大家一起参考就好。

打这么多字真累啊

[ 本帖最后由 .无忧. 于 2009-7-10 10:19 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-10 10:58 | 显示全部楼层

回复 5楼 sgrshh29 的帖子

前辈,已经按你的叮嘱进行了“搬运”,结果,唉,还是发生了几次,晕S~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-10 11:53 | 显示全部楼层

回复 7楼 .无忧. 的帖子

谢谢前辈的经验分享,因为偶还是小菜,所以不太明白“提高数据库运行效率的一点建议”所述,请看以下例子,不知怎么写入VB,使程序运行结束时“及时关闭连接”:

Private Sub cmdUndo_Click()
    Dim R1, R2 As QueryDef  '声明R1、R2为查询类型
    Dim sql As String       '声明spl为字符串
    Dim sno As String
    Dim x As String

If sno = DLookup("流水号", "T211单据已申报", "[流水号]=" & Me.txt流水号) Then
        sql = "delete from T211单据已申报 where 流水号 =Cstr('" & txt流水号 & "')"    '删除已申报的记录
        Set R1 = CurrentDb.QueryDefs("Q216撤消申报")                                        'R1所应用的删除查询文件名称
        R1.sql = sql                                                                     'R1应用的SQL语句为定义为sql的语句
        R1.Execute
        Set R2 = CurrentDb.QueryDefs("Q210单据状态更新")                                 'R2所应用的更新查询文件名称,同上。
        R2.sql = "UPDATE TA200日记账营运物资采购 SET 单据完成状态='已撤消' , 单据可行操作='待重新申报'  WHERE 流水号 =Cstr('" & txt流水号 & "') And 采购单No='" & No & "'"    '定义R2执行更新查询的SQL语句,同上。
        R2.Execute
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Else
        x = MsgBox("不能撤消处于“录入中”状态的单据!" & vbNewLine & "" & vbNewLine & "如果需要删除当前单据,请选择“删除”按钮。", vbOKOnly + vbCritical, "操作出错!")
End If
End Sub


感谢指教!

TA的精华主题

TA的得分主题

发表于 2009-7-12 10:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
R1, R2两个就是对象,在程序中输入对象在加点时能选择到close,就要选择关闭事件,如果没有就将对象设成nothing
set R1=nothing
set R2=nothing
这叫打扫战场
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 02:40 , Processed in 0.052075 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表