选择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怎么改是程序只操作相应的行。
...全文
388 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)
内容概要:本文系统研究了基于雅可比伪逆迭代的双臂协同轨迹规划与跟踪误差收敛性问题,结合机械臂正向与逆向运动学建模、蒙特卡洛法分析工作空间、笛卡尔空间内的圆弧轨迹生成等关键技术,利用Matlab实现了双臂系统的协同控制与轨迹跟踪仿真。重点探讨了雅可比矩阵伪逆法在解决冗余自由度机械臂逆运动学问题中的应用,深入分析了轨迹跟踪过程中误差的收敛特性,并通过仿真实验验证了该方法在复杂任务场景下的有效性、稳定性与鲁棒性,为多臂机器人在工业自动化、精密操作等领域的协同作业提供了理论依据与技术支持。; 适合人群:具备机器人学、自动控制理论基础及Matlab编程能力的科研人员与工程技术人员,特别适合从事机械臂控制、轨迹规划、多机器人协同等方向的硕士、博士研究生及相关领域研究人员。; 使用场景及目标:①掌握基于雅可比伪逆法的机械臂逆运动学求解原理与实现方法;②理解双臂系统在笛卡尔空间中协同轨迹规划的机制;③分析并优化轨迹跟踪过程中的误差收敛性能;④为多机器人系统在复杂动态环境下的高精度协同控制提供算法设计与仿真验证支持。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,按照文档目录循序渐进地学习,重点关注算法实现细节、仿真参数设置与结果分析部分,同时可进一步探索将智能优化算法或深度学习方法引入轨迹规划与误差补偿的研究方向。

2,508

社区成员

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

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