用ClientDataSet更新数据表,怎样自动生成行号?

时间:2020-12-20 10:36:04
请大侠帮忙!
用ClientDataSet更新数据表,删除某行之后就把所删除的记录之后的所有记录的行号都减一,怎样能实现呢?麻烦给个源码!
谢谢了!
在线等!

10 个解决方案

#1


Clientdataset改不了自增字段的值. 最好用SQL更新, 不过更新后.CLIENTDATESET不显示更新后的值.可能会造成关连错误.所以最好不要这样做.

#2


新版的ehlib支持自动编号

#3


楼主用SQL更新。

#4


用SQL触发器可以控制

#5


1、行号不能做关键字;
2、先排序
3、更新时,给行号字段重新编号;

ClientDataSet.First;
while not ClientDataSet.eof do
begin
  ClientDataSet.edit;
  ClientDataSet.FieldByName('行号字段').asInteger := ClientDataSet.RecNo;
  ClientDataSet.next;
end;

#6


我怎么就没看到过新帖子。。

#7


如果是自增字段的值,改变不了
如果不是就直接用Sql语法Update吧,然后ClientDataSet刷新一下
或者循环ClientDataSet一笔笔修改

#8


10年的帖子?

#9


引用 6 楼 brain1638 的回复:
我怎么就没看到过新帖子。。

真是服了你了,居然能将这陈年老帖给翻出来 用ClientDataSet更新数据表,怎样自动生成行号?

#10


select ROWID +....???

#1


Clientdataset改不了自增字段的值. 最好用SQL更新, 不过更新后.CLIENTDATESET不显示更新后的值.可能会造成关连错误.所以最好不要这样做.

#2


新版的ehlib支持自动编号

#3


楼主用SQL更新。

#4


用SQL触发器可以控制

#5


1、行号不能做关键字;
2、先排序
3、更新时,给行号字段重新编号;

ClientDataSet.First;
while not ClientDataSet.eof do
begin
  ClientDataSet.edit;
  ClientDataSet.FieldByName('行号字段').asInteger := ClientDataSet.RecNo;
  ClientDataSet.next;
end;

#6


我怎么就没看到过新帖子。。

#7


如果是自增字段的值,改变不了
如果不是就直接用Sql语法Update吧,然后ClientDataSet刷新一下
或者循环ClientDataSet一笔笔修改

#8


10年的帖子?

#9


引用 6 楼 brain1638 的回复:
我怎么就没看到过新帖子。。

真是服了你了,居然能将这陈年老帖给翻出来 用ClientDataSet更新数据表,怎样自动生成行号?

#10


select ROWID +....???