对象关闭时 不允许操作怎么解决

时间:2021-03-11 23:38:57
我要实现的功能是在text1里输入的值可以添加到数据库里面去,但是当我点击添加时就出现对象关闭时 不允许操作,该如何解决,还有其他方法能实现添加或者修改的代码吗
Private Sub Command1_Click()
 Dim c
 c = MsgBox("确认添加该信息么?", 33, "提示信息")
           If c = vbOK Then
            Call main
               Set adoRs = adoCon.Execute("insert into csmc(摊位编号) values('" + Text1.Text + "')")
               MsgBox "数据添加成功!"
               Text1.Text = ""
               Text1.SetFocus
            adoCon.Close
           Else
           End If
  
 Adodc1.RecordSource = "select * from 摊位信息表"
 Adodc1.Refresh
End Sub

11 个解决方案

#1


UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP

#2


adoCon.Close
去掉试试

#3


要先连接数据库:
adoCon.open ...

如果adoCon是过程外部变量,要把它设置成全局变量。

#4


引用 2 楼 bestbadgod 的回复:
adoCon.Close
去掉试试

还是不行,是在Set adoRs = adoCon.Execute("insert into csmc(摊位编号) values('" + Text1.Text + "')")就显示对象关闭时 不允许操作

#5


...

#6


还有就是Set adoRs = adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text + text2.Text + "')")格式应该是怎样的啊。试了几次都不对,不好意思,刚接触VB

#7


在执行adoCon.Execute之前要先执行adoCon.open以将数据连接打开,没有打开就直接去访问数据库当然会出那个错误。

直接执行adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" & text1.Text & text2.Text & "')"),不需要返回记录集了。

#8


call adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" & _
                    text1.Text & "','" & text2.Text + "')")

#9


dim after as double
adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text +","+ text2.Text + "')")
after=Now+30#/24#/3600#
do
    doevents
    if adoCon.State and adStateExecuting=0 then exit do
    if now>after then
        msgbox "30s timeover!"
        exit do
    end if
loop
adoCon.Close

#10


更正上面
adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text +"','"+ text2.Text + "')")

#11


Dim adoCon As ADODB.Connection

    Set adoCon = New ADODB.Connection
    adoCon.Open "DSN=dsnname;uid=userid;pwd=password"
上面是用odbcad32设置系统DSN指向数据库服务
下面是用cliconfg设置别名指向数据库服务
'adoCon.ConnectionString = "driver={SQL Server};server=myservername;uid=myuserid;pwd=mypassword;database=mydatabase"
'adoCon.ConnectionTimeout = 60
'adoCon.CommandTimeout = 60
'adoCon.Open

#1


UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP

#2


adoCon.Close
去掉试试

#3


要先连接数据库:
adoCon.open ...

如果adoCon是过程外部变量,要把它设置成全局变量。

#4


引用 2 楼 bestbadgod 的回复:
adoCon.Close
去掉试试

还是不行,是在Set adoRs = adoCon.Execute("insert into csmc(摊位编号) values('" + Text1.Text + "')")就显示对象关闭时 不允许操作

#5


...

#6


还有就是Set adoRs = adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text + text2.Text + "')")格式应该是怎样的啊。试了几次都不对,不好意思,刚接触VB

#7


在执行adoCon.Execute之前要先执行adoCon.open以将数据连接打开,没有打开就直接去访问数据库当然会出那个错误。

直接执行adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" & text1.Text & text2.Text & "')"),不需要返回记录集了。

#8


call adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" & _
                    text1.Text & "','" & text2.Text + "')")

#9


dim after as double
adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text +","+ text2.Text + "')")
after=Now+30#/24#/3600#
do
    doevents
    if adoCon.State and adStateExecuting=0 then exit do
    if now>after then
        msgbox "30s timeover!"
        exit do
    end if
loop
adoCon.Close

#10


更正上面
adoCon.Execute("insert into 摊位信息表(摊位编号,摊位号) values('" + text1.Text +"','"+ text2.Text + "')")

#11


Dim adoCon As ADODB.Connection

    Set adoCon = New ADODB.Connection
    adoCon.Open "DSN=dsnname;uid=userid;pwd=password"
上面是用odbcad32设置系统DSN指向数据库服务
下面是用cliconfg设置别名指向数据库服务
'adoCon.ConnectionString = "driver={SQL Server};server=myservername;uid=myuserid;pwd=mypassword;database=mydatabase"
'adoCon.ConnectionTimeout = 60
'adoCon.CommandTimeout = 60
'adoCon.Open