Private Sub cmddel_Click()
Call Conndata
Set conn = New ADODB.Connection
conn.open connstr
Set rs = New ADODB.Recordset
sqlstr = "select * from class"
rs.Open sqlstr, conn, 1, 3
Dim msg As String
msg = MsgBox("确定要删除吗?", vbYesNo, "提示")
If msg = vbYes Then
Do While rs.EOF
If rs.Fields("classid") = DataGrid1.Columns(0) Then
rs.Delete
End If
rs.MoveNext
Loop
DataGrid1.Refresh
MsgBox "删除成功", , "提示"
Else
Exit Sub
End If
End Sub//以下是call conndata部分,写在模块里
Public Sub Conndata()
Connstr = "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source= " + App.Path + "\product.mdb;"
End Sub

解决方案 »

  1.   

    '这样试试:
    Private Sub cmddel_Click()
        Call Conndata
        Set conn = New ADODB.Connection
        conn.open connstr
        conn.execute "delete from class where classid='"& datagrid1.columns(0) &"'"
        MsgBox "删除成功", , "提示"
    End Sub
      

  2.   

    连接字符串可能错了,你对一下看看 
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False
      

  3.   

    呵呵你还没有更新数据库呢,在loop后面加rst.update就可以了
      

  4.   

    Private Sub cmddel_Click()
    Dim ask As String
    ask = MsgBox("是否删除分类?", vbYesNo, "提示")
    If ask = vbYes Then
    rs.Delete
    rs.Update
    Else
    Exit Sub
    End If
    End Sub这样能删除
      

  5.   

    第二种写法
    用一个classno的变量来记录分类的IDPrivate Sub cmddel_Click()
    classno = DataGrid1.Columns(0).Text
    Dim ask As String
    ask = MsgBox("是否删除分类?", vbYesNo, "提示")
    If ask = vbYes Then
    sqlstr = "delete from class where classid=" & classno
    conn.Execute (sqlstr)
    DataGrid1.Refresh
    Else
    Exit Sub
    End If
    End Sub=======================问题请教:在删除后刷新不了,有什么方法在删除后刷新呢?
      

  6.   

    我用一种不可理喻的方法,将datagrid1所在的主窗体unload然后重新show一次,是能解决,但这应该不是根本的解决方法,想请教大家更好的方法.
      

  7.   

    如果你用的是DataGrid  想删除所选的那条记录很简单啊 没必要你写的那么复杂 Private Sub cmddel_Click()
        Call Conndata
        Set conn = New ADODB.Connection
        conn.open connstr
        Set rs = New ADODB.Recordset
        sqlstr = "select * from class"
        rs.Open sqlstr, conn, 1, 3
        Dim msg As String
        msg = MsgBox("确定要删除吗?", vbYesNo, "提示")
        If msg = vbYes Then
           rs.Delete
           MsgBox "删除成功", , "提示"
        Else
           Exit Sub
        End If
    End Sub要刷新DataGria的话介意把数据库的连接和 DataGrid.DataSource=Rs等语句写到一个过程里面
    要刷新的话 调用此过程就行了  
      

  8.   

    老大,刷新DataGrid没有用啊,还是不能刷新显示记录.
      

  9.   

    呵呵,刷新DataGrid 这个控件应该有刷新的方法吧DataGrid.Refect