程序不能正常关闭,请高手指点。
各位高手:
我现在的一个程序,如果用数据连接打开一个数据库,关闭程序时,系统提示:
应用程序错误:
“0x07....”指令引用的“0x......”内存。该内存不能为“read”.要终止程序,请单击“确定”.
问题点数:50、回复次数:8Top
1 楼gump2000(阿甘)回复于 2002-04-11 10:13:47 得分 10
在关闭程序以前
把全部recordset connection.close 还有 set nothing
再看看
Top
2 楼ltpao(啊炮)回复于 2002-04-11 10:15:32 得分 0
你的程序中是否使用了DBGridTop
3 楼cszyt(发酵)回复于 2002-04-11 10:21:46 得分 0
多谢,不过象
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
这些要引用什么?
Top
4 楼lihonggen0(李洪根,MS MVP,标准答案来了)回复于 2002-04-11 10:22:12 得分 20
如何在数据控件断开所有的数据连接
如果在代码中使用了数据控件如 DAO, RDO, 或 ADO, 在退出时应该关闭所有打开的 recordset, database,和 workspace 。 虽然对象能自动注销, 但是数据连接不会马上断开,可能会导致一些内存不能被系统重新分配。
下面的代码可以关闭所有打开的 DAO workspace,并释放所占的内存。
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
'
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
'
For Each ws In Workspaces
For Each db In ws.Databases
For Each rs In db.Recordsets
rs.Close
Set rs = Nothing
Next
db.Close
Set db = Nothing
Next
ws.Close
Set ws = Nothing
Next
'
End Sub
Top
5 楼cszyt(发酵)回复于 2002-04-11 10:24:15 得分 0
对呀,上面的代码我也看到过,我用的数据连接也可以吗?
Top
6 楼cszyt(发酵)回复于 2002-04-11 10:39:41 得分 0
我用的不是DAO呀?Top
7 楼nebular(星云)回复于 2002-04-11 10:42:22 得分 20
一个程序员应该有一个良好的习惯:
用完一个RECORDSET之后,使用下面的语句显式地关闭它
rs.close
set rs=nothing
同样对待ADO.CONNECTION
cn.close
set cn=nothing
一般来说,CONNECTION可以等待到程序结束时关闭它,不过RECORDSET最好是在定义它的过程结束的同时关闭。注意尽量不要定义全局的RECORDSET。Top
8 楼cszyt(发酵)回复于 2002-04-11 11:58:08 得分 0
可能是我误导了大家:
我知道了,我在系统中用了一个VertMenu控件,不过只要打开数据库时就出错,不打开不出错,把控件删掉打开数据库就不出错,
到底怎么办呢???
请各位高手指点!!Top




