设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2876|回复: 7
打印 上一主题 下一主题

ADP程序两个窗体来回切换,提示内存不足,怎么解决?

[复制链接]
跳转到指定楼层
1#
发表于 2018-8-9 16:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老师有没有遇到这样的情况?ACCESS程序运行一段时间会提示内存不足,如两个窗体通过计时器实现来回切换,可切换
一段时间,如几个小时后,电脑会提示内存不足,程序停止运行!

  请问有没有VBA清内存的代码?

  我用了下面代码清理,实践证明没有效果:
Call SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2018-8-10 17:22:07 | 只看该作者
没搞懂为什么会有这种来回切换的需求,而且还使用计时器事件~~~
印象中,计时器事件比较耗内存的。
3#
 楼主| 发表于 2018-8-13 10:42:48 | 只看该作者
我是车间有电视看板,需要在安灯和订单状态来回切换的,但内存会越来越高导致系统停止运行,这个问题很严重!需要一段自动清内存的代码!
4#
发表于 2018-8-14 11:05:55 | 只看该作者
这是典型的内存泄露问题。代码当中有一部分代码 导致内存无法释放资源。或导致栈直接溢出。
5#
 楼主| 发表于 2018-8-15 13:56:59 | 只看该作者
ganlinlao 发表于 2018-8-14 11:05
这是典型的内存泄露问题。代码当中有一部分代码 导致内存无法释放资源。或导致栈直接溢出。

请问,可以解决吗?

点击这里给我发消息

6#
发表于 2018-8-16 15:14:54 | 只看该作者
你看看代码中有什么对像,逐个都释放一下看看
7#
发表于 2018-8-16 21:52:29 | 只看该作者
XMX64311,有时间的话,请提供一点你的真实情形的代码(局部的),否则一切都是空谈。别人也没办法模拟你的真实情形。
8#
 楼主| 发表于 2018-8-23 08:37:16 | 只看该作者
Private Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long



Private Sub Form_Load()




Me.frmAndonXTsub.Requery

Me.frmAndonXTsub.Width = Me.WindowWidth - 600

Me.Text1 = DCount("*", "qforAndonXT", "问题类别=1")

Me.Text1.Requery

Me.Text2 = DCount("*", "qforAndonXT", "问题类别=2")

Me.Text2.Requery

Me.Text3 = DCount("*", "qforAndonXT", "问题类别=3")

Me.Text3.Requery

Me.Text4 = DCount("*", "qforAndonXT", "问题类别=4")

Me.Text4.Requery

Me.Text5 = DCount("*", "qforAndonXT", "问题类别=5")

Me.Text5.Requery


Me.Child1.Requery
Me.Child2.Requery
Me.Child3.Requery
Me.Child4.Requery
Me.Child5.Requery
Me.Child6.Requery
Me.Child7.Requery
Me.Child8.Requery
Me.Child10.Requery
Me.Child11.Requery
Me.Child12.Requery
Me.Child13.Requery
Me.Child14.Requery
Me.Child15.Requery
Me.Child16.Requery
Me.Child17.Requery
Me.Child18.Requery
Me.Child19.Requery
Me.Child20.Requery
Me.Child21.Requery
Me.Child22.Requery
Me.Child23.Requery
Me.Child24.Requery
Me.Child25.Requery
Me.Child26.Requery
Me.Child27.Requery
Me.Child28.Requery
Me.Child29.Requery
Me.Child30.Requery
Me.Child31.Requery
Me.Child32.Requery
Me.Child33.Requery






End Sub

Private Sub Form_Open(Cancel As Integer)

DoCmd.ShowToolbar "Ribbon", acToolbarNo


DoCmd.Maximize

End Sub

Private Sub Form_Timer()

DoCmd.OpenForm "frmAndonXT1"
DoCmd.close acForm, "frmAndonXT"

Call SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1)


End Sub


frmAndonXT和frmAndonXT1来回切换,frmAndonXT1的对象和frmAndonXT是完全一样的,我本来是做计时器时间到再打开它自己的,不行,才做了一个窗体frmAndonXT1,对象和frmAndonXT一样的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 03:09 , Processed in 0.094197 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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