“对象关闭时,不允许操作”是怎么回事

时间:2021-03-11 23:39:03
用VB连SQL SERVER 2000时,想用一控件实现adodc1用SQL插入和删除,总是提示:对象关闭时,不允许操作,不懂怎么回事
做实验的程序,就一个command,text1,text2,和adodc1,datagrid
原代码如下:

Private Sub Command1_Click()
Adodc1.RecordSource = "insert into depart values('" & Text1.Text & "','" & Text2.Text & "')"
Adodc1.Refresh
End Sub

22 个解决方案

#1


你之前有没执行过Adodc1.close?
close了以后究不能再使用了

#2


什麼都沒有,我裡面就這段代碼

#3


用ADO吧

#4


考虑一下,是不是sql server服务没有启动呢?

#5


Adodc1.RecordSource = "insert into depart values('" & Text1.Text & "','" & Text2.Text & "')"
这句本身就是错的,RecordSource是数据源,Insert是操作数据的动作,没有返回数据的,这要数据源就不存在
Adodc1.Refresh
数据源都不存在,还刷新,当然会出问题啦

#6


说的对

#7


太谢谢了

#8


ADODB还是不错的选择

#9


程序压根不是这样写的。

dim cn as new adodb.connection
cn.connectionstring="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
cn.open
cn.execute("insert into table (fields) values(values)
cn.close

打完收工46558080

#10


对象没有打开或者执行了Adodc1.close

#11


whachun(jakly) ( ) 信誉:100    Blog  2007-3-26 22:50:28  
-------------------------------
说的很好!
 

#12


是rs.close了

#13


打开之前先判断下rs的状态;
rs.state=adStateClosed  '指示对象是关闭的。
rs.state=adStateOpen    '指示对象是打开的。 
然后再采取相应的操作,这是一种习惯!!

#14



程序压根不是这样写的。

dim cn as new adodb.connection
cn.connectionstring="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
cn.open
cn.execute("insert into table (fields) values(values)
cn.close

打完收工46558080
-------------------------------------------------------------------------------
dim rs as adodb.rscordset
dim dataling as string
dim string as string
dataling="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
string="select * from 表名 "
rs.open string ,dataling 
while not rs.eof
 rs.movenext
rs.(" 字段名")=text1.text
rs.("字段名")=text2.text
wend 
rs.close



#15


Adodc1.RecordSource = "insert into depart values('" & Text1.Text & "','" & Text2.Text & "')"
这句本身就是错的,RecordSource是数据源,Insert是操作数据的动作,没有返回数据的,这要数据源就不存在
Adodc1.Refresh
数据源都不存在,还刷新,当然会出问题啦
——————————————————————————————————————
说的很对,这是原因。下面是解决结果:
——————————————————————————————————————
dim rs as adodb.rscordset
dim dataling as string
dim string as string
dataling="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
string="select * from 表名 "
rs.open string ,dataling 
while not rs.eof
 rs.movenext
rs.(" 字段名")=text1.text
rs.("字段名")=text2.text
wend 
rs.close
——————————————————————————————————————
抄袭了哈
主要是代码完全能解决问题

#16


呵呵,确实没有数据源啊

#17


1.數據庫未打開
2.打開了,卻已關閉
3.長相問題

#18


adodc控件  远程连接没用的    用ADO

#20


引用 2 楼 rocita 的回复:
什麼都沒有,我裡面就這段代碼

莫非你前面根本就没建立过数据库连接?

#21


adodc1,datagrid 要先绑定数据源 

#22


打开对象

#1


你之前有没执行过Adodc1.close?
close了以后究不能再使用了

#2


什麼都沒有,我裡面就這段代碼

#3


用ADO吧

#4


考虑一下,是不是sql server服务没有启动呢?

#5


Adodc1.RecordSource = "insert into depart values('" & Text1.Text & "','" & Text2.Text & "')"
这句本身就是错的,RecordSource是数据源,Insert是操作数据的动作,没有返回数据的,这要数据源就不存在
Adodc1.Refresh
数据源都不存在,还刷新,当然会出问题啦

#6


说的对

#7


太谢谢了

#8


ADODB还是不错的选择

#9


程序压根不是这样写的。

dim cn as new adodb.connection
cn.connectionstring="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
cn.open
cn.execute("insert into table (fields) values(values)
cn.close

打完收工46558080

#10


对象没有打开或者执行了Adodc1.close

#11


whachun(jakly) ( ) 信誉:100    Blog  2007-3-26 22:50:28  
-------------------------------
说的很好!
 

#12


是rs.close了

#13


打开之前先判断下rs的状态;
rs.state=adStateClosed  '指示对象是关闭的。
rs.state=adStateOpen    '指示对象是打开的。 
然后再采取相应的操作,这是一种习惯!!

#14



程序压根不是这样写的。

dim cn as new adodb.connection
cn.connectionstring="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
cn.open
cn.execute("insert into table (fields) values(values)
cn.close

打完收工46558080
-------------------------------------------------------------------------------
dim rs as adodb.rscordset
dim dataling as string
dim string as string
dataling="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
string="select * from 表名 "
rs.open string ,dataling 
while not rs.eof
 rs.movenext
rs.(" 字段名")=text1.text
rs.("字段名")=text2.text
wend 
rs.close



#15


Adodc1.RecordSource = "insert into depart values('" & Text1.Text & "','" & Text2.Text & "')"
这句本身就是错的,RecordSource是数据源,Insert是操作数据的动作,没有返回数据的,这要数据源就不存在
Adodc1.Refresh
数据源都不存在,还刷新,当然会出问题啦
——————————————————————————————————————
说的很对,这是原因。下面是解决结果:
——————————————————————————————————————
dim rs as adodb.rscordset
dim dataling as string
dim string as string
dataling="driver={sql server};server=(local);uid=sa;pwd=??;database=??"
string="select * from 表名 "
rs.open string ,dataling 
while not rs.eof
 rs.movenext
rs.(" 字段名")=text1.text
rs.("字段名")=text2.text
wend 
rs.close
——————————————————————————————————————
抄袭了哈
主要是代码完全能解决问题

#16


呵呵,确实没有数据源啊

#17


1.數據庫未打開
2.打開了,卻已關閉
3.長相問題

#18


adodc控件  远程连接没用的    用ADO

#19


#20


引用 2 楼 rocita 的回复:
什麼都沒有,我裡面就這段代碼

莫非你前面根本就没建立过数据库连接?

#21


adodc1,datagrid 要先绑定数据源 

#22


打开对象