//设置sql读出数据
query1.edit;
query1.delete;
应该就可以了呀。
如果还有行,用sql写
query1.sql.add('delete from table1 where name='''+edit1.text+'''');

解决方案 »

  1.   

    //设置sql读出数据
    是什么意思?我添加的数据在dbgrid中显示,可能已有好几条,现在要求删除如果我在添加后不从数据库读取数据,那么删除根本就没有反应。只有根据条件重新从数据库读取数据,再删除就可以了。很急的,今天一定要搞定,麻烦了
      

  2.   

    部分代码,被我简化了
    procedure Tfrm_gc_jh.btn_addClick(Sender: TObject);
    begin
      qry_gc_jh.Append;
      假设就是一个字段,当然了事实上有好多;
      qry_gc_jh.FieldByName('DWDM').AsString:=gs_dwdm;
      qry_gc_jh.ApplyUpdates;
    end;procedure Tfrm_gc_jh.btn_deleteClick(Sender: TObject);
    begin
      if Application.messagebox('删除后将不能恢复,确定吗?','提示信息',mb_okcancel+mb_iconwarning)=id_ok  then
        begin
          qry_gc_jh.Delete;
          qry_gc_jh.ApplyUpdates;
        end;
    end;
      

  3.   

    搞不懂啊搞不懂,你直接删除不就行了?
    你在设计期将其ReQuestLive := True;//这就可以了嘛;你的DBGrid and DataSource and DataSet联系起来就自动的给你取嘛;
    ----------------------
    我想,问题关键是你不清楚ReQuestLive的用的地方吧;
    只要你SQL语句里没有特殊的条件、语句的话,那么ReQuestLive也是可以为True;否则则不行的;
    如:
    with Query do 
    begin
      Close;
      ReQuestLive := False;
      SQL.Clear;
      SQL.Add('select distinct a from TableName ')//这儿,ReQuestLive只能False;
      PrePare;
      Open;
     ReQuestLive := True;//现在你仍然可以修改了;
    end;
      

  4.   

    我是要改别人的程序:
    procedure Tfrm_gc_jh.btn_addClick(Sender: TObject);
    begin
      qry_gc_jh.Append;
      假设就是一个字段,当然了事实上有好多;
      qry_gc_jh.FieldByName('DWDM').AsString:=gs_dwdm;
      qry_gc_jh.ApplyUpdates;
    end;
    每添加一条记录,向数据库里ApplyUpdates一下,同时也往dbgrid里写一条在添加了几条后,现在要删除
    我用
    procedure Tfrm_gc_jh.btn_deleteClick(Sender: TObject);
    begin
      if Application.messagebox('删除后将不能恢复,确定吗?','提示信息',mb_okcancel+mb_iconwarning)=id_ok  then
        begin
          qry_gc_jh.Delete;
          qry_gc_jh.ApplyUpdates;
        end;
    end;
    它不可以,问为什么?
      

  5.   

    修改 ihihonline(小小->充电中……) 如下:
    可能也能解决!
    with Query1 do
    begin
     close;
     RequestLive:=false;
     SQL.clear;
     SQL.Add('delet  from TableName where name=:delStr);
     parambyname('delStr').asString:=Edit1.text;
     prepare;
     ExecSQL;
     RequestLive:=true;
    end;
      

  6.   

    如果requestLive=true,那sql语句中的表的名字的大小写必须和数据库的实际情况一样
      

  7.   

    还是没有明白我的意思我是指在dbgrid里有了几条数据后然后再删除如果按照 newnewworm(新新虫)的方法不行
      

  8.   

    我试了一下,用delete加applyupdate;
    但是那要在dbgrid刷新后才可以如果将数据一条一条插入到dbgrid后再删除就不可以了,没有反应
      

  9.   

    你的QUERY的CACHEDUPDATES是不是FALSE.试试不用ApplyUpdates增加: query.append ;
       ///
       query.post;删除: query.delete;