抉择DbGrieh的CHeckBox的一行,多行被操作,跪求大神帮忙
选择DbGrieh的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;
我用下面的代码实现Fields[9].AsBoolean的初始值为False
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
with ClientDataSet1 do
begin
if Fields[9].Value = Null then Fields[9].AsBoolean := False;
end;
end;
使用循环while not ClientDataSet1.Eof do是为了选择所有记录中被标记的记录,现在的问题是只有我标记其中一个,其余的也是默认标记了,然后就执行 if ClientDataSet1.Fields[9].AsBoolean 后的语句了。就是 if ClientDataSet1.Fields[9].Value <> Null then怎么改是程序只操作相应的行。
------解决方案--------------------
if ClientDataSet1.Fields[9].Value <> Null then
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields[9].AsBoolean := True;
ClientDataSet1.Post;
end;
你在循环中赋值为true了,当然就选中了啊
------解决方案--------------------
把这段代码去掉
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;
我用下面的代码实现Fields[9].AsBoolean的初始值为False
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
with ClientDataSet1 do
begin
if Fields[9].Value = Null then Fields[9].AsBoolean := False;
end;
end;
使用循环while not ClientDataSet1.Eof do是为了选择所有记录中被标记的记录,现在的问题是只有我标记其中一个,其余的也是默认标记了,然后就执行 if ClientDataSet1.Fields[9].AsBoolean 后的语句了。就是 if ClientDataSet1.Fields[9].Value <> Null then怎么改是程序只操作相应的行。
------解决方案--------------------
if ClientDataSet1.Fields[9].Value <> Null then
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields[9].AsBoolean := True;
ClientDataSet1.Post;
end;
你在循环中赋值为true了,当然就选中了啊
------解决方案--------------------
把这段代码去掉
if ClientDataSet1.Fields[9].Value <> Null then
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields[9].AsBoolean := True;
ClientDataSet1.Post;
end;