delphi 循环删除数据集

procedure TFrmSendSMS.bsSkinXFormButton10Click(Sender: TObject);
var
  delstr:string;
begin
  if Application.MessageBox('您确认删除选中的信息吗?', '提示', MB_ICONINFORMATION + MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
  begin
    delstr:='';
     {方法一,直接用数据集删除}
      ADOsmstemp.Last;
     ADOsmstemp.First;
     while not ADOsmstemp.eof do
     begin
       if ADOsmstemp.fieldbyname('ifsend').AsBoolean=true then
       begin
         ADOsmstemp.Edit;
         ADOsmstemp.Delete;//当删除行的时候不进行下一行的动作,防止行索引变化,可以正确循环完所有数据行;如果是编辑数据,下一行的动作不用判断,必须加上
       end
       else
       begin
         ADOsmstemp.Next;
       end;
     end;
     {方法2,循环数据集,达到要删除的所有数据行id,最后执行sql语句进行删除}
//      ADOsmstemp.Last;
//     ADOsmstemp.First;
//     while not ADOsmstemp.eof do
//     begin
//       if ADOsmstemp.fieldbyname('ifsend').AsBoolean=true then
//       begin
//         delstr:=delstr+ ADOsmstemp.fieldbyname('id').AsString+',';
//       end;
//       ADOsmstemp.Next;
//     end;
     if delstr='' then
     begin
       ShowMessage('请选择要删除的数据!');
     end
     else
     begin
//       DataModule5.SQLNoResult('delete from sms_temp where id in('+delstr+')');//sql语句进行删除
       MessageBox(0,'删除成功!', '提示', MB_ICONASTERISK and MB_ICONINFORMATION);
       DataModule5.SQLResult('select *  from sms_temp',ADOsmstemp);//重新绑定数据,用第二种方法时删除后需要重新绑定数据
     end;
  end
  else
    exit;
end;

选择全部数据行(需要设置属性,options-dgmutilselect='true'):

procedure TFrmSendSMS.btn2Click(Sender: TObject);
begin
with DBGridEh2.Datasource.Dataset do
begin
  if not Active then Abort;
  DisableControls;
  try
    First;
    while not EOF do 
    begin
      DBGridEh2.SelectedRows.CurrentRowSelected:=True;
      Next;
    end;
    finally
      EnableControls;
    end;
  end;
end;
循环所有选中的行,进行编辑:

procedure TFrmSendSMS.btn3Click(Sender: TObject);
var
  temp:TBookmarkstr;
  i:Integer;
begin
  for i:=0 to DBGridEh2.SelectedRows.Count-1 do
  begin
    temp:=DBGridEh2.SelectedRows.Items[i];
    DBGridEh2.DataSource.DataSet.GotoBookmark(pointer(temp));
    with ADOsmstemp do
      begin
      Append;
      FieldByName('hyphone').AsString:=trim(DBGridEh2.FieldColumns['yddh'].DisplayText);// 取值 并编辑另外一个数据集
      Post;
      end;
//    DBGridEh2.DataSource.DataSet.FreeBookmark(pointer(temp));// 加上这句后有错误,不明原因
  end;
end;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值