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;