一个窗体,根据一些条件进行数据的查询,查询出的结果显示在DBGrid1中,我想增加一个删除按钮,点删除按钮,就删除当前DBGrid1中显示的所有数据。这个删除该怎么搞呢?

解决方案 »

  1.   

    是不显示数据还是要从数据库中删掉?
    如果是前者,关闭DataSet或断开DBGrid和DataSource的关联
    如果是后者,先提交delete语句删除数据库中数据,再刷新DBGrid
      

  2.   

    如果你用的是adoquery1的话。。在删除键OnClick事件里写adoquery1.delete;
      

  3.   

    貌似我看错了。。是删除所有数据呀我一般都这样删除的。。with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add(asql);
        open;                 //搜索条件有的话可以不用加
        while not eof do     //用while not eof do 循环执行删除
          begin
            delete
          end;
      end; 
      

  4.   

    DBGrid1.DataSource.DataSet.delete;
    post;
      

  5.   

    參考著以下的語句加上一個循環(while not eof do 或for to do)即可:
    procedure TRes_HrCq_YD_F.btnSB_DelClick(Sender: TObject);
    begin
      inherited;
      if MessageDlg('操作提示(“刪除提示”):你確定要刪除所選中數據嗎?',mtWarning,[mbYes,mbNo],0)=idyes then
      begin
        if not qry_ydcx.IsEmpty then
        begin
          try
            qry_BaseTemp.Close;
            qry_BaseTemp.SQL.Clear;
            qry_BaseTemp.SQL.Add( ' insert into RES_HR_RSYD_Log (TypeID,ACCOUNT_ID,FULL_NAME,YCB,YBM,YBMID,YKB,YZXB,YBC,YJZ,YZJQF,YCBZX,YGW,YZW,XCB,XBM,XKB,XZXB,XBMID,XBC,XJZ,XZJQF,XCBZX,XGW,XZW,JN,FLAG,USERID,USERNAME,SXRQ) values (''刪除'', ');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('ACCOUNT_ID').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FULL_NAME').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBM').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBMID').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YKB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZXB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YBC').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YJZ').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZJQF').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YCBZX').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YGW').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('YZW').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBM').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XKB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZXB').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBMID').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XBC').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XJZ').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZJQF').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XCBZX').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XGW').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('XZW').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('JN').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(qry_ydcx.fieldbyname('FLAG').AsString)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(_UserNo)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(_UserName)+',');
            qry_BaseTemp.SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd',qry_ydcx.fieldbyname('SXRQ').AsDateTime))+')');
            qry_BaseTemp.ExecSQL;
          finally
            qry_ydcx.Delete;
          end;
        end;
        ChangeStatus(sBrowse);
      end else
      Abort;
    end;
      

  6.   

    DBGrid1连接的数据源未讲清楚。
    1、如果是DBE连接数据库,使用Table:
       Table.delete;
       Table.post;2、如果是ADO连接数据库,使用ADOTable:
       ADOTable.delete;
       ADOTable.post;3、如果是ADO连接数据库,使用ADOQuery:
       ADOQuery.delete;
       ADQuery.post;4、如果是服务器中的数据库,情况就复杂。一方面DBGrid1.delete外,还要上传至服务器,进行删除。......
      

  7.   

    AdoConnection.Excute('Delete From ...');
    DBGrid1.DataSource.DataSet.Active:=False;
    DBGrid1.DataSource.DataSet.Active:=True;