delphi 循环删除数据集

来源:互联网 发布:互联网套餐对比 知乎 编辑:程序博客网 时间:2024/06/07 04:55
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);beginwith DBGridEh2.Datasource.Dataset dobegin  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;



原创粉丝点击