回 帖 发 新 帖 刷新版面

主题:query表自动排序如何实现

如何让序号不要自己填自动排序,并且中途有被删除的序号,让Query自动调整,如:1,2,3,4,中途把2号给删了,query表能自己调整为1,2,3,接下来加个记录自动接序号4?请附源码详解,高分相送,以身相。。。。

回复列表 (共6个回复)

沙发

在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是表示当前记录的号码.

板凳


大哥,你就好人做到底了,我搞了一个晚上还是没搞出来。比如,现在一个表A,两个字段,序号和姓名,如何才能我在加入姓名的时候,序号自动按顺加入进去,而在删除某个记录的时候,序号自己调整顺序呢,你就把代码再写一次吧

3 楼

就是在你执行query.post或者是类似的代码后执行上面的代码

4 楼


试过了,行不通

5 楼

有一种方法,再那另一个表,定义一个字段专门用来记录删除的序号数.如你删除了1.2.3.4中的2,那么删除时你得把序号增加到表里去,然后在下次增加记录时取表里的第一个字段作为序号存入表.如表字段为空那么就说明没有被删除的.就直接找数据表里最序号最大的加1存入.

6 楼


同意楼上的, 用别的表记录序号,

如果你要动态调整序号,有,1...4你删了2
(只表达意思不能运行)
for i:=2 to query.recodecount do
  query.序号:=query.序号-1
你的记录是3条
现在的第二条记中的,序号是3
现在的第三条记中的,序号是4

我来回复

您尚未登录,请登录后再回复。点此登录或注册