起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: trickle

如何在数据网格中有规律的修改某一个字段的值,急!

[复制链接]
 楼主| 发表于 2008-6-17 11:40:12 | 显示全部楼层
???????????????????????????????????
卡死在这里~
呼唤啊呼唤~
啊喂~…………………………
听到了吗
回复 支持 反对

使用道具 举报

发表于 2008-6-17 12:00:07 | 显示全部楼层
在业务信息中写代码,参考一下:
procedure TDDXX.DataSetLXSJJBeforePost(DataSet: TDataSet);
begin
  //在提交之前,对原有字段进行加1
  DataSet.Connection.ExecuteSQL('update QYLXB set ZD=ZD + 1 where ZD > ' + DataSet.FieldByName('ZD').Text);
end;

procedure TDDXX.DataSetLXSJJAfterPost(DataSet: TDataSet);
begin
  //保存记录后,刷新
  DataSet.ApplyUpdates;
  DataSet.Refresh;
end;

procedure TDDXX.DataSetLXSJJBeforeDelete(DataSet: TDataSet);
begin
  //在删除之前,对原有字段进行减1
  DataSet.Connection.ExecuteSQL('update QYLXB set ZD=ZD - 1 where ZD > ' + DataSet.FieldByName('ZD').Text);
end;

procedure TDDXX.DataSetLXSJJAfterDelete(DataSet: TDataSet);
begin
  //删除记录后,刷新
  DataSet.ApplyUpdates;
  DataSet.Refresh;
end;

对了,还要对更新选项设置成主键更新
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 13:43:34 | 显示全部楼层
嗯,首先谢谢,不过还是感觉上面的代码有点问题
我是在插入记录后保存时才+1,这个地方是不是需要个控制,不然只要按保存按钮都会+1,删除亦然?
另外,这句sql里面的DataSet.FieldByName('ZD').Text); ,系统是如何识别它是我刚插入或者删除的记录的长度字段的?
DataSetQYLJSJJ2.Connection.ExecuteSQL('update QYLXB set ZD=ZD + 1 where ZD > ' + DataSet.FieldByName('ZD').Text);
这样的话,如果代码写在DataSetLXSJJBeforePost里,请问该如何控制?
谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 14:16:33 | 显示全部楼层
DataSetQYLJSJJ2.Connection.ExecuteSQL('update QYLJB set XH=XH + 1 where XH > ' + DataSetQYLJSJJ2.FieldByName('XH').Text+' AND QYLJB.XLID='+DataSetXZXLSJJ.FieldByName('XLID').AsString);  
这个是我改了以后的代码,执行时候报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 14:25:46 | 显示全部楼层
错误,按保存按钮时候触发的
其中的XL000000030正是DataSetXZXLSJJ.FieldByName('XLID').AsString的值,即主数据集对应的线路ID值,怎么会无效呢

1.jpg

30.17 KB, 下载次数: 193

回复 支持 反对

使用道具 举报

发表于 2008-6-17 14:32:41 | 显示全部楼层
没有这个字段吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 14:41:51 | 显示全部楼层
确定一定以及肯定,有XLID这个字段
QYLJB 以及DataSetXZXLSJJ都有这个字段
回复 支持 反对

使用道具 举报

发表于 2008-6-17 14:51:19 | 显示全部楼层
。。。
回复 支持 反对

使用道具 举报

发表于 2008-6-17 14:51:25 | 显示全部楼层
Sql语句是如何写的? 报错说的是没有XL000000030这个列

另外,楼主1楼的需求,最好将你的原始需求说一下,以避免我们在解决问题时走弯路
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 15:05:13 | 显示全部楼层
原始需求:
一条线路由很多的区域或者路径组成。相应的有两个表,线路定义表(XLDYB)和区域路径表(QYLJB)。对应的数据集分别是XZXLSJJ和QYLJSJJ2。
每条线路由很多的区域和路径组成。这些区域和路径在线路上有一个序号,是顺序排列的,即1 2 3 4 5……但是实际线路上可能会插入一些新的区域或者路径,插入完毕后还是要求序号顺序排列,这样就要求同一条线路上(具有同一XLID)的区域路径的序号都要从插入点处后移。
区域和路径的序号开始都是手工输入的,也允许修改。
这就是最原始的项目背景。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 05:42 , Processed in 0.042486 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表