起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 254|回复: 11

【结贴】请问如何有选择的把某个字段的某些记录的值都加1**

[复制链接]
发表于 2008-6-16 09:40:37 | 显示全部楼层 |阅读模式
在数据表里面有字段A,整型,由小到大递增排列
如果我想在里面插入一条记录后,插入点往后的记录的该字段的值都加1,请问在x3下该如何实现
回复

使用道具 举报

发表于 2008-6-16 09:51:37 | 显示全部楼层
记下当前记录号,插入记录,从记下的记录号开始对记录集循环,对字段值加1
回复 支持 反对

使用道具 举报

发表于 2008-6-16 09:54:52 | 显示全部楼层
如果需要联系,那么建议使用数据库的种子字段,如果不连续,那么可以使用自增参数来做,
种子字段参考http://bbs.justep.com/forum.php?mod=viewthread&tid=510
自增参数参考http://bbs.justep.com/forum.php?mod=viewthread&tid=14984  6楼
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 11:07:30 | 显示全部楼层
就是说,本来数据库里面的数据是顺序排列的,1 2 3 4 5 6……
现在我往里面插了一条记录,该字段值为3,那么原来的3 4 5 6要加1变成4 5 6 7
看了种子字段的介绍,太不详细了
这样的话是用种子字段呢还是自己写代码要好,写代码的话把代码加到什么地方去阿(我是打算用数据网格的)。是不是要重写导航栏保存按钮的方法?
回复 支持 反对

使用道具 举报

发表于 2008-6-16 11:22:06 | 显示全部楼层
楼主这个顺序字段是主键吗?
回复 支持 反对

使用道具 举报

发表于 2008-6-16 11:26:59 | 显示全部楼层
如果楼主的业务需求一定要实现“原来的3 4 5 6要加1变成4 5 6 7 ”,
可以在保存按钮提交前对数据表,用update语句对字段值是3以上的进行加1
procedure TMainForm.DataNavigatorBeforeAction(Sender: TObject;  var Accept: Boolean)  ;
begin
  if TBizDataSetAction(Sender).ID = BizActnConsts.ActionDataSetSave then
  begin
    //update更新代码,对字段进行加1
  end;
end;
之后也需要刷新一下
procedure TMainForm.DataNavigatorAfterAction(Sender: TObject);
begin
  if TBizDataSetAction(Sender).ID = BizActnConsts.ActionDataSetSave then
        dsTemp.DataSet. Refresh;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 11:39:05 | 显示全部楼层

回5楼

不是主键
主键是自增的
回复 支持 反对

使用道具 举报

发表于 2008-6-16 11:44:33 | 显示全部楼层
如果不是主键的话,可以按4楼方法试一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 11:46:13 | 显示全部楼层
好的,先试试
回复 支持 反对

使用道具 举报

发表于 2008-6-16 15:50:26 | 显示全部楼层
如果不是主键字段,不知道这个字段存储的意义在哪里?如果客户端不是全部取数据,那么这个排序仅仅是给操作给看,我觉得直接用DataGrid的行号或者增加一个字段来表示记录的顺序就可以了,就看你是否需要输出了,参考http://bbs.justep.com/forum.php?mod=viewthread&tid=2436
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-17 14:01 , Processed in 0.041101 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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