选择DbGrieh的CHeckBox的一行,多行被操作,跪求大神帮忙。

zhongzhen2014 2014-09-04 11:07:31
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怎么改是程序只操作相应的行。
...全文
303 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
程晨c 2014-09-04
  • 打赏
  • 举报
回复
if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end; 你在循环中赋值为true了,当然就选中了啊
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
多谢程晨C的帮助,我的问题是下面的语句 ClientDataSet1.Close; StrSQL:='select * from Input'; ClientDataSet1.CommandText:=StrSQL; 把原来定义的ClientDataSet1的字段值给覆盖掉了,在这种情况下Field[9]的值不是Boolean型的,所以选中后没有任何反应, 把上面的语句删除后就可以实现相应的操作了。 再次感谢程晨C,现在去结贴了。
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 31 楼 zhongzhen2014 的回复:
[quote=引用 29 楼 zhongzhen2014 的回复:] [quote=引用 28 楼 seleron 的回复:] [quote=引用 25 楼 zhongzhen2014 的回复:] [quote=引用 24 楼 zhongzhen2014 的回复:] [quote=引用 23 楼 seleron 的回复:] 点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;[/quote] 这样运行会出现报错ClientDataSet1:dataset not in edit or insert mode的错误[/quote] 发个示例代码给你 [/quote]不胜感激[/quote]438361517@qq.com[/quote]谢谢您的发给的参考实例,可以正常的运行,我建立临时列是在窗口显示时建立的,能不能具体结合我的情况帮忙修改下。
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 29 楼 zhongzhen2014 的回复:
[quote=引用 28 楼 seleron 的回复:] [quote=引用 25 楼 zhongzhen2014 的回复:] [quote=引用 24 楼 zhongzhen2014 的回复:] [quote=引用 23 楼 seleron 的回复:] 点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;[/quote] 这样运行会出现报错ClientDataSet1:dataset not in edit or insert mode的错误[/quote] 发个示例代码给你 [/quote]不胜感激[/quote]438361517@qq.com
程晨c 2014-09-04
  • 打赏
  • 举报
回复
邮箱多少
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 28 楼 seleron 的回复:
[quote=引用 25 楼 zhongzhen2014 的回复:] [quote=引用 24 楼 zhongzhen2014 的回复:] [quote=引用 23 楼 seleron 的回复:] 点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;[/quote] 这样运行会出现报错ClientDataSet1:dataset not in edit or insert mode的错误[/quote] 发个示例代码给你 [/quote]不胜感激
程晨c 2014-09-04
  • 打赏
  • 举报
回复
引用 25 楼 zhongzhen2014 的回复:
[quote=引用 24 楼 zhongzhen2014 的回复:] [quote=引用 23 楼 seleron 的回复:] 点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;[/quote] 这样运行会出现报错ClientDataSet1:dataset not in edit or insert mode的错误[/quote] 发个示例代码给你
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 26 楼 ksrsoft 的回复:
ClientDataSet1.Filter过滤
具体怎么搞,能不能具体写下。
缘中人 2014-09-04
  • 打赏
  • 举报
回复
ClientDataSet1.Filter过滤
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 24 楼 zhongzhen2014 的回复:
[quote=引用 23 楼 seleron 的回复:] 点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;[/quote] 这样运行会出现报错ClientDataSet1:dataset not in edit or insert mode的错误
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 23 楼 seleron 的回复:
点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
是这样吗? while not ClientDataSet1.Eof do begin ClientDataSet1.Post; if ClientDataSet1.Fields[9].AsBoolean then begin ClientDataSet1.Edit; ClientDataSet1.FieldByName('运维班核对人').AsString:=loginForm.edit2.Text; ClientDataSet1.Post; end; ClientDataSet1.Next; end; ClientDataSet1.ApplyUpdates (-1); end;
程晨c 2014-09-04
  • 打赏
  • 举报
回复
点击运行 在这个操作之前,先执行一下 ClientDataSet1.Post;来提交勾选的操作给数据源
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 21 楼 seleron 的回复:
引用 20 楼 zhongzhen2014 的回复:
[quote=引用 19 楼 seleron 的回复:] [quote=引用 18 楼 zhongzhen2014 的回复:] [quote=引用 17 楼 zhongzhen2014 的回复:] [quote=引用 16 楼 zhongzhen2014 的回复:] [quote=引用 15 楼 seleron 的回复:] 数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。[/quote] 所以在刚开始的时候判断 if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end;[/quote] 正是这里出了问题[/quote] 但是把判断去掉后 ClientDataSet1.Fields[9].AsBoolean 的值就没有改变,结果就是不执行下个判断语句,我就不知道怎么修改了?[/quote] 点击了复选框,这个值就会随着改变,不需要代码来改变这个值[/quote]实际运行时,我先勾选,然后点击运行,返回结果是勾选号被取消了,相应的数据列也没修改。
程晨c 2014-09-04
  • 打赏
  • 举报
回复
引用 20 楼 zhongzhen2014 的回复:
引用 19 楼 seleron 的回复:
[quote=引用 18 楼 zhongzhen2014 的回复:] [quote=引用 17 楼 zhongzhen2014 的回复:] [quote=引用 16 楼 zhongzhen2014 的回复:] [quote=引用 15 楼 seleron 的回复:] 数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。[/quote] 所以在刚开始的时候判断 if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end;[/quote] 正是这里出了问题[/quote] 但是把判断去掉后 ClientDataSet1.Fields[9].AsBoolean 的值就没有改变,结果就是不执行下个判断语句,我就不知道怎么修改了?[/quote] 点击了复选框,这个值就会随着改变,不需要代码来改变这个值
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 19 楼 seleron 的回复:
引用 18 楼 zhongzhen2014 的回复:
[quote=引用 17 楼 zhongzhen2014 的回复:] [quote=引用 16 楼 zhongzhen2014 的回复:] [quote=引用 15 楼 seleron 的回复:] 数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。[/quote] 所以在刚开始的时候判断 if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end;[/quote] 正是这里出了问题[/quote] 但是把判断去掉后 ClientDataSet1.Fields[9].AsBoolean 的值就没有改变,结果就是不执行下个判断语句,我就不知道怎么修改了?
程晨c 2014-09-04
  • 打赏
  • 举报
回复
引用 18 楼 zhongzhen2014 的回复:
引用 17 楼 zhongzhen2014 的回复:
[quote=引用 16 楼 zhongzhen2014 的回复:] [quote=引用 15 楼 seleron 的回复:] 数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。[/quote] 所以在刚开始的时候判断 if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end;[/quote] 正是这里出了问题
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 17 楼 zhongzhen2014 的回复:
引用 16 楼 zhongzhen2014 的回复:
[quote=引用 15 楼 seleron 的回复:] 数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。[/quote] 所以在刚开始的时候判断 if ClientDataSet1.Fields[9].Value <> Null then begin ClientDataSet1.Edit; ClientDataSet1.Fields[9].AsBoolean := True; ClientDataSet1.Post; end;
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 16 楼 zhongzhen2014 的回复:
引用 15 楼 seleron 的回复:
数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
我感觉添加的CheckBox列缺少CheckBox组件的Checked属性。
zhongzhen2014 2014-09-04
  • 打赏
  • 举报
回复
引用 15 楼 seleron 的回复:
数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
有的,字段9就是
程晨c 2014-09-04
  • 打赏
  • 举报
回复
数据表没有CheckBox列,但是你的ClientDataSet1 中是不是有CheckBox列对应的字段?
加载更多回复(13)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧