标题:不能连续删除,删除第一个的时候可以,第二个就提示对象关闭时不允许操作
取消只看楼主
lz_xiaohai
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-2
结帖率:50%
已结贴  问题点数:10 回复次数:4 
不能连续删除,删除第一个的时候可以,第二个就提示对象关闭时不允许操作
在模块里
Option Explicit
    Public cnn As New ADODB.Connection
    Public rs As New ADODB.Recordset
    Public cnnstr As String
    Public i As Integer
Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
   '**********************************************************
'功能:   执行后台SQL语句,
'参数:   SQL:SQL语句
'返回值: 如果是查询语句则返回记录集
'返回类型:记录集
'**********************************************************
    Dim cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=itxrgw;Initial Catalog=db_SPJXC;Data Source=."
    rs.Open Trim(sql), cnn, adOpenKeyset, adLockOptimistic
    Set ExecuteSQL = rs
End Function

Public Sub main()            '定义一个公共主函数,用于连接数据库
    If cnn.state = adStateOpen Then
        cnn.Close
    Else
        cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=itxrgw;Initial Catalog=db_SPJXC"
    End If
End Sub
工具栏
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
    Case "add"   '添加
        tlbState Toolbar1, True
        Call MyAdd
    Case "del"    '删除
        Set rs = ExecuteSQL("select * from 经手人表 where 经手人编号='" & Text1(0).Text & "'")
        If rs.RecordCount > 0 Then
            Call main
            cnn.BeginTrans
            cnn.Execute ("Delete 经手人表 where 经手人编号='" & Text1(0).Text & "'")
            
            MsgBox "删除成功"
            Set rs = ExecuteSQL("select * from 经手人表")
            Set MSHFlexGrid1.DataSource = rs
        End If
    Case "save"   '保存
        Call main
        cnn.BeginTrans
        cnn.Execute ("insert into 经手人表 values('" & Text1(0).Text & "','" & Text1(1).Text & "','" & Text1(2).Text & "','" & Text1(3).Text & "','" & Text1(4).Text & "','" & Text1(5).Text & "')")
        
        MsgBox "保存成功"
        Set rs = ExecuteSQL("select * from 经手人表")
        Set MSHFlexGrid1.DataSource = rs

        MSHFlexGrid1.Refresh
        tlbState Toolbar1, False

    Case "cancel"  ' 取消
        tlbState Toolbar1, False
        Call MyClear
        MyFlag = False
'    Case "find"    ' 查询
'        Mystr = InputBox("请输入要查询的货品名称", "企业进销存管理系统", "J000001")
'        Adodc1.RecordSource = "select * from tb_in where in_numid ='" + Mystr + "'"
'        Adodc1.Refresh
'        Call JionBack
'        Adodc1.RecordSource = "select * from tb_in"
'        Adodc1.Refresh
'        MyFlag = False
    Case "close"   '关闭
        Unload Me
    End Select
End Sub
搜索更多相关主题的帖子: 删除 Select Case Text1 Text 
2017-12-28 10:12
lz_xiaohai
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-2
得分:0 
你好,我是新手,为什么有时候提示对象打开时不允许操作,有时提示对象关闭时不允许操作,版主能给讲一下嘛,谢谢。。。。

我在cnn.close前面加一个rs.close set rs=nothing 就提示对象关闭时不允许操作

[此贴子已经被作者于2017-12-28 15:11编辑过]

2017-12-28 15:02
lz_xiaohai
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-2
得分:0 
谢谢,受教了。。。。
2017-12-28 16:34
lz_xiaohai
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-2
得分:0 
cnn.Execute ("Update 经手人表 set 经手人姓名='" & Trim(Text1(1).Text) & "' , 联系方式='" & Trim(Text1(2).Text) & "',联系地址='" & Trim(Text1(3).Text) & "' ,身份证号='" & Trim(Text1(4).Text) & "' ,备注='" & Trim(Text1(5).Text) & "' where 经手人编号='" & Text1(0).Text & "'")

版主你好,请教一下长代码如何换行,比如上面的代码我任找一个&  在后面加空格加下划线回车就可以,如果在逗号后面同样加空格加下划线回车就不可以,这是为什么,这个下划线放在哪儿有什么讲究吗。
2017-12-29 13:04
lz_xiaohai
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-2
得分:0 
哦,知道了,就是字符串内不能使用下划线换行。
2017-12-29 14:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483786-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061147 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved