再问~~~~~~~~~一个VB+SQL server系统的数据库关闭问题~~急`~在线等~~~
我做的一个VB+SQL server系统~~
当我要做修改一个窗口有关一个表的数据时,我打开了窗口~~但我又不想修改了~~
后来又修改另外一个窗口有关另一个表的数据,当我打开窗口时,出现错误~~
提示"实时错误'3704'"
" 对象关闭时,不允许操作"
代码错误处:" If mrc.EOF = False Then"
这是什么错误~~该怎么样修改````
问题点数:0、回复次数:17Top
1 楼happytoy()回复于 2005-03-02 13:45:14 得分 0
这是因为你的表格已经关闭了,贴出代码,我看看。错误应该在你贴的代码的前边Top
2 楼daisy8675(莫依 沉迷)回复于 2005-03-02 13:45:40 得分 0
对象关闭的时候不允许操作,一般是因为你的recordset是关闭的
一般情况先打开recordset,比如
if rs.stata<>adstateclosed then rs.close '如果不是关闭状态先关闭
rs.open"Select * from TableName",conn,3,3 'recodset再打开Tablename表
if rs.eof=false then
......
end ifTop
3 楼twismning(阿艺)回复于 2005-03-02 13:49:09 得分 0
Public Sub ShowData()
Dim j As Integer
Dim i As Integer
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then'出错在这里
Top
4 楼twismning(阿艺)回复于 2005-03-02 13:56:32 得分 0
莫依::
我按你的加上去,提示出错:"未找到方法或数据成员"
If mrc.stata <> adStateClosed Then mrc.CloseTop
5 楼twismning(阿艺)回复于 2005-03-02 14:00:41 得分 0
莫依:
加上去了~~
还是那个错误:
提示"实时错误'3704'"
" 对象关闭时,不允许操作"
代码错误处:" If mrc.EOF = False Then"
Top
6 楼daisy8675(莫依 沉迷)回复于 2005-03-02 14:19:42 得分 0
If mrc.stata偶写错了嘛 if mrc.state不是stata。哈哈,偶是顺手敲的嘛:(Top
7 楼daisy8675(莫依 沉迷)回复于 2005-03-02 14:21:38 得分 0
Set mrc = ExecuteSQL(txtSQL, MsgText)???偶没看见过这样的写法,你在写function还是sub
狂倒
老老实实去open,你的写法根本有问题,是用connection去executesql的,你这什么都没得到,recordset当然是关闭的Top
8 楼twismning(阿艺)回复于 2005-03-02 14:26:13 得分 0
我在模块中定义了:
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'executes SQL and returns Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
'rst.MoveLast 'get RecordCount
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误: " & _
Err.Description
Resume ExecuteSQL_Exit
End Function
Top
9 楼twismning(阿艺)回复于 2005-03-02 14:28:40 得分 0
我间接打开那个窗口时,才出错~~~
我直接打开时不会出错~~,数据也能出现~~~~Top
10 楼myhgyp(也许是这样的,信不信由你)回复于 2005-03-02 14:31:19 得分 0
ConnectString没赋值,数据库都没打开,怎么取到数据集啊Top
11 楼twismning(阿艺)回复于 2005-03-02 14:33:08 得分 0
请指教~~说明白一点好吗?Top
12 楼daisy8675(莫依 沉迷)回复于 2005-03-02 14:38:52 得分 0
Set rst = New ADODB.Recordset
'这边加上if rs.state=1 then rs.closed 没用吗?
rst.Open Trim$(SQL), cnn, _
觉得没必要那你这样写sub,把简单的ado操作写得艰难无比,看得偶头都大了
Top
13 楼twismning(阿艺)回复于 2005-03-02 14:52:09 得分 0
不行啊~~
那样连登录都不行了.
" 对象关闭时,不允许操作"
Top
14 楼daisy8675(莫依 沉迷)回复于 2005-03-02 15:06:39 得分 0
偶看不懂得你写的function...Top
15 楼daisy8675(莫依 沉迷)回复于 2005-03-02 15:06:51 得分 0
偶看不懂得你写的function...Top
16 楼twismning(阿艺)回复于 2005-03-02 15:08:55 得分 0
你帮我测试一下好吗?Top
17 楼twismning(阿艺)回复于 2005-03-02 15:09:31 得分 0
我发给你~~Top




