Dbgrideh中添加一列checkbox后,选中某一行后,运作一下代码,结果所有的行都被操作,求大神帮忙
Dbgrideh中添加一列checkbox后,选中某一行后,运行一下代码,结果所有的行都被操作,求大神帮忙。
procedure TForm1.Button10Click(Sender: TObject);
var
StrSQL:string;
begin
ClientDataSet1.Close;
StrSQL:='select * from Input';
ClientDataSet1.CommandText:=StrSQL;
ClientDataSet1.Open;
ClientDataSet1.First;
while not ClientDataSet1.Eof do
begin
if ClientDataSet1.Fields[9].Value <> Null then
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields[9].AsBoolean := True;
ClientDataSet1.Post;
end;
if ClientDataSet1.Fields[9].AsBoolean then
begin
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('****').AsString:=loginForm.edit2.Text;
end;
ClientDataSet1.Post;
ClientDataSet1.Next;
end;
ClientDataSet1.ApplyUpdates (-1);
end;
------解决方案--------------------
你的代码使用了循环while not ClientDataSet1.Eof do
所以每次单击后所有记录都被操作
procedure TForm1.Button10Click(Sender: TObject);
var
StrSQL:string;
begin
ClientDataSet1.Close;
StrSQL:='select * from Input';
ClientDataSet1.CommandText:=StrSQL;
ClientDataSet1.Open;
ClientDataSet1.First;
while not ClientDataSet1.Eof do
begin
if ClientDataSet1.Fields[9].Value <> Null then
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields[9].AsBoolean := True;
ClientDataSet1.Post;
end;
if ClientDataSet1.Fields[9].AsBoolean then
begin
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('****').AsString:=loginForm.edit2.Text;
end;
ClientDataSet1.Post;
ClientDataSet1.Next;
end;
ClientDataSet1.ApplyUpdates (-1);
end;
------解决方案--------------------
你的代码使用了循环while not ClientDataSet1.Eof do
所以每次单击后所有记录都被操作