本帖最后由 sxtgwj 于 2011-08-22 02:28:45 编辑

解决方案 »

  1.   

    补充一下,我用的数据库是SQL 2000。
      

  2.   

    ADOQuery1指针指向的那一行就是你选中的那一行
    ADOQuery1.delete就行了
      

  3.   

    感知控件,可直接删除指定行数据,执行语句ADOQuery1.Delete
      

  4.   

    楼上2位正确。 DBGrid中的数据来自数据集(如:adoquery、adotable、adodataset、...),要想删除dbgrid中的行,内能通过删除数据集中的记录来实现,没有其它办法。楼主:你可以设定dbgrid的options属性下的dgRowSelect为true,这样用户就能“整行”选中。
      

  5.   

    1、DBGrid1.SelectedRows.Delete; 2、adoquery1.delete; 3、dbgrid1.DataSource.DataSet.Delete;以上三种语句我都试过,设定dbgrid的options属性下的dgRowSelect为true我也做了,对于不是重复的记录可以,但是表中有重复的记录(各个字段的记录值都一样)就会出错。假如有两条相同的记录,选中一条进行删除,就会报错,而且两条记录都会被删除。
      

  6.   


    怎么会出现“各个字段的记录值都一样”的记录呢? 你应该给表建个Primary Key ,否则以后问题大大的。
      

  7.   

    第一:你的数据库设计出现严重问题,出现重复数据
    第二:如果要删除的话可以这样if not adoquert1.isempty  then
    begin
     adoquert1.delete;
    end
      

  8.   

    1、判断是否选中 ,如果选中 就直接删除了 
    2、要不就通过ADOQuery的移动来删除了
      

  9.   

      设置一个自动增量id 的字段,要删除那一条时,可先取得其id 后探id 删除,很方便的