主题:query表自动排序如何实现
keyiwangyou
[专家分:80] 发布于 2006-04-19 17:18:00
如何让序号不要自己填自动排序,并且中途有被删除的序号,让Query自动调整,如:1,2,3,4,中途把2号给删了,query表能自己调整为1,2,3,接下来加个记录自动接序号4?请附源码详解,高分相送,以身相。。。。
回复列表 (共6个回复)
沙发
gongchengh [专家分:390] 发布于 2006-04-20 15:03:00
在QUERY中执行如下过程
在写query的sql中增加order by 字段名
while not QUERY.eof do
begin
if query.fieldByName('字段名').asinteger<>query.RecNo then
begin
query.edit;
query.fieldByName('字段名').asInteger:=query.RecNo
query.post;
end;
query.next;
end;
RecNo是表示当前记录的号码.
板凳
keyiwangyou [专家分:80] 发布于 2006-04-21 08:42:00
大哥,你就好人做到底了,我搞了一个晚上还是没搞出来。比如,现在一个表A,两个字段,序号和姓名,如何才能我在加入姓名的时候,序号自动按顺加入进去,而在删除某个记录的时候,序号自己调整顺序呢,你就把代码再写一次吧
3 楼
gongchengh [专家分:390] 发布于 2006-04-21 09:48:00
就是在你执行query.post或者是类似的代码后执行上面的代码
4 楼
keyiwangyou [专家分:80] 发布于 2006-04-21 11:20:00
试过了,行不通
5 楼
guo888go2005 [专家分:150] 发布于 2006-04-21 16:06:00
有一种方法,再那另一个表,定义一个字段专门用来记录删除的序号数.如你删除了1.2.3.4中的2,那么删除时你得把序号增加到表里去,然后在下次增加记录时取表里的第一个字段作为序号存入表.如表字段为空那么就说明没有被删除的.就直接找数据表里最序号最大的加1存入.
6 楼
booksword [专家分:210] 发布于 2006-04-24 16:33:00
同意楼上的, 用别的表记录序号,
如果你要动态调整序号,有,1...4你删了2
(只表达意思不能运行)
for i:=2 to query.recodecount do
query.序号:=query.序号-1
你的记录是3条
现在的第二条记中的,序号是3
现在的第三条记中的,序号是4
我来回复