在数据集中加标记字段,点选后置位,在按‘删除’键后
执行SQL的 DELETE 表名 WHERE 标记字段=置位或干脆使用允许多条选择方式的DBGRID,删除选中的指定记录。

解决方案 »

  1.   

    try
      ...(1)
      ...(2) 
    except
      ...(3)
    end;结构中的(1)出错将有以下顺序: (1)-(3)-(2)
      

  2.   

    1.首先设置DBGrid的dgMultiSelect为True,允许选择多条,然后参考下面的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      if DBGrid1.SelectedRows.Count>0 then
        with DBGrid1.DataSource.DataSet do
          for i:=0 to DBGrid1.SelectedRows.Count-1 do
          begin
            GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
            Delete;
          end;
    end;2.跟踪一下,看是否执行了别处的代码.
      

  3.   

    把dbgrid 的dgMultiselect 属性设为true 可以实现多选
      

  4.   

    ClientDataSet.ApplyUpdates(0);
    保存出错,是发生在ReconcileError事件中。
    ClientDataSet.ApplyUpdates(0)不关是否成功,后面的代码都要执行。
      

  5.   

    ClientDataSet.ApplyUpdates(0)
    保存出错是发生在ReconcileError事件中,且不管是否发生错误,后面的代码都要执行。
      

  6.   

    var
      i: Integer;
    begin
      if DBGrid1.SelectedRows.Count>0 then
        with DBGrid1.DataSource.DataSet do
          for i:=0 to DBGrid1.SelectedRows.Count-1 do
          begin
            GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
            Delete;
          end;
    end;
      

  7.   

    Snakeguo(楠):
    Snakeguo(楠) :
      你的这段代码,能实现删除多条记录,但不符合我的要求:
      
    1。因为我必须设置dgRowSelect--〉false,当DBGrid的dgMultiSelect为true,只有在DBGrid最左边,当鼠标光标形状变为--〉时才算选中一条,而点一条记录的一个cell不认为选中这条记录,不被 DBGrid1.SelectedRows.Count属性统计在内,这无法让客户接受。2。点选一条记录,在它的最左边做个向书签一样的标记。
    如何实现? denglt() :
    我就要提交成功显示:保存成功!提交不成功显示异常信息不出现保存成功,怎么办?
    [注]我的ReconcileError事件中有异常信息翻译显示代码。
      

  8.   

    dbgrid的options属性的dgrowselect置为true,你就可以选取整条记录了.
    而不是一个cell.
      

  9.   

    你把Multiselect属性设为True就好了啊
      

  10.   

    >>byc6352(雪原) :
    我必须设置dgRowSelect--〉false!
    >> denglt() :
    '这样的话,你就必须定义一个全局变量了,来判断是否发生错误。'
    关键是如何判断是否发生错误?
    try
        ClientDataSet.ApplyUpdates(0);//执行这句时有错误,如何判断?它有返
                                        回值?
        showmessage('保存成功!');
      except
        //do something 
      end;