我遇到了一个问题,用VB打开一个Access的数据库,在这个数据库中有一个数据表,这个数据表没有设定索引字段,所以我可以随意地在这个表中连续重复地添加所有字段值完全相同的记录,可是当我要删除其中的一条时,马上出错并提示:实时错误'-2147467259(80004005)':
键列信息不足或不正确。更新影响到多行。请教我要如何才能解决这个问题?

解决方案 »

  1.   


    代码很简单,如下:Private Sub cmddelete_Click()
      '删除rs中的当前记录
      rs.Delete
      rs.Update
      '如果所删除的是最后一条记录
      If rs.EOF = True Then
         rs.MoveLast
      End If
      '如果rs中已经没有了记录
      If rs.RecordCount = 0 Then
         cmddelete.Enabled = False
      End If
    End Sub
      

  2.   

    没有主键导致有重复值引起
    加入主键即可解决
    或者用sql语句作删除cn.execute "delete from table1 where..."
      

  3.   

    Private Sub cmd_Delete_Click()
    If rs.BOF Then
          Cmd_Delete.Enabled = False
          MsgBox "表中已无记录"
       Exit Sub
    End If
    rs.Delete
    If rs.RecordCount = 0 Then rs.Requery '当datagrid中没有记录时刷新记录数
       If rs.BOF Then
          Cmd_Delete.Enabled = False
          MsgBox "表中已无记录"
       Exit Sub
       End If
    End IfEnd Sub
      

  4.   

    如果在表中不设主键(即有唯一标识的字段),在datagrid中删除刷新相似记录就会报错。
    解决方法:在现有的表最后增加一个流水号(自动编号)字段,设为“主键”,排序为唯一。