if (FDataSet <> nil) and (FDataSet.RecordCount > 0) then
   if MessageDlg('是否确定要删除此记录', mtInformation, [mbOK, mbCancel], 0) = mrOK then
    begin
      FDataSet.Delete;
      FDataSet.post;
      FDataSet.ApplyUpdates(-1);
    end;

解决方案 »

  1.   

    一加就出错,我加过了。出错信息:
     "Dataset not in edit or insert mode"
      

  2.   

    你是不是自己发送sql语句返回执行结果的?
      

  3.   

    去掉Post , 用ApplyUpdates(0), 象这样:
    if (FDataSet <> nil) and (FDataSet.RecordCount > 0) then
       if MessageDlg('是否确定要删除此记录', mtInformation, [mbOK, mbCancel], 0) = mrOK then
        begin
          FDataSet.Delete;
          FDataSet.ApplyUpdates(0);
        end;
      

  4.   

    我是自己发送sql的,楼上的方法我也试过了,还是不行。我怀疑是数据库里面字段的问题,你们说那?
      

  5.   

    首先你该找到为什么不能删除的原因。
    很好解决:先产生一个错误处理窗口(Reconcle Error Dialog),再在clientdataset的OnReconcileError事件过程中写代码.
    HandleReconcileError(Dataset,UpdateKind,E)
    这样,在保存出错时,就会弹出一个窗口,很清楚的显示了出错的原因。据我的经验,不能删除好多时候是由于表没设主键引起的。
    这时候,可修改应用服务器的Tdatasetprovider的updatemode属性来解决。