我点击删除按钮,就删除鼠标指定的行,并更新数据库。但运行时出现了对象关闭的错误,大虾们,帮我看一下啦,我在线等,很急的!原代码如下:
Private Sub Command4_Click()
Dim i As Long
Dim SQL As String
Dim msgtext As String
Dim r As New ADODB.Recordset
 
  If MsgBox("确定要删除鼠标选中行吗?", vbExclamation + vbYesNo + vbDefaultButton2) = vbNo Then
  Exit Sub
  Else
   i = MSHFlexGrid1.Row
   Me.MSHFlexGrid1.RemoveItem (i)
   SQL = "delete from attendance where ID=" & MSHFlexGrid1.TextMatrix(i, 0) & " "
   Set r = TransactSQL(SQL, msgtext)
   r.Update
   r.Close
  End If
End Sub注:ID是自动编号,即数字型。 

解决方案 »

  1.   


    要看TransactSQL这个函数里面是怎么包装的连接串ADODC使用不当就会有这样的问题(能删除记录但报错)
    ADODB打开连接之前也可能出现对象关闭。好好看看你这网上抄来的TransactSQL函数吧
      

  2.   

    都Removel ,取不到值的
    Remove放在最后
      

  3.   

    要看TransactSQL这个函数里面是怎么包装的连接串ADODC使用不当就会有这样的问题(能删除记录但报错)
    ADODB打开连接之前也可能出现对象关闭。好好看看你这网上抄来的TransactSQL函数吧
    [/Quote]
    这个函数就是在教科书中和各类参考书中相当流行的ExecuteSQL公共函数啦!怎么改都有错误,呃……
      

  4.   

    去网上查(vb ADODB)去看看怎么用,再说;要知其所以然,不要抄来就用,否则你永远也就这水准了。
      

  5.   


      Me.MSHFlexGrid1.RemoveItem (i)
      SQL = "delete from attendance where ID=" & MSHFlexGrid1.TextMatrix(i, 0) & " "你都RemoveItem(i)了, 还能取到TextMatrix(i,0)?????????
      

  6.   

    Private Sub Command4_Click()
    Dim i As Long
    Dim SQL As String
    Dim msgtext As String
    Dim r As New ADODB.Recordset
      
      If MsgBox("确定要删除鼠标选中行吗?", vbExclamation + vbYesNo + vbDefaultButton2) = vbNo Then
      Exit Sub
      Else
      i = MSHFlexGrid1.Row
      'Me.MSHFlexGrid1.RemoveItem (i)  '如果这里就删除了,下面那句找谁去呀?
      SQL = "delete from attendance where ID=" & MSHFlexGrid1.TextMatrix(i, 0) & " "
      Set r = TransactSQL(SQL, msgtext)
      r.Update
      r.Close
      Me.MSHFlexGrid1.RemoveItem (i)
      End If
    End Sub
      

  7.   

    ... 
    Me.MSHFlexGrid1.RemoveItem (i)
    SQL = "delete from attendance where ID=" & MSHFlexGrid1.TextMatrix(i, 0)
    ...别的且不说, 你都把这一行内容从表格中删掉了,那你后面还MSHFlexGrid1.TextMatrix(i, 0)取原来的内容??
      

  8.   

    顶of123和WallesCai,楼主的编程先后逻辑上出现了错误...