注册 登录
编程论坛 VB.NET论坛

VB如何对ACCESS一个字段重新排序,其它内容保持不变

natesc 发布于 2019-12-24 22:51, 2274 次点击
现有表格如下,其中的TMNUM想每次按一个按钮,实现随机排列一次,要求不重复。
思路:按按钮时清除TMNUM内容,然后重新赋值给他,不知道代码如何写

每个ZJID 下面的TMNUM都是从1开始排列到最大值的

只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-12-24 22:53编辑过]

1 回复
#2
厨师王德榜2019-12-28 13:08
说一下算法,具体代码没有时间写,可以提供思路。
1、SELECT  zjid ,count(*) as 条数 FROM TMInfo group by  zjid   ;
先生成一个查询(暂时命名为查询1),从而获得所有的zjid 和他们各自的条数。
2、在这个查询1中循环,每循环一条,就取出 查询1.sjid (例如首次是1),拼凑成一个新的查询语句:
select  tmid ,TMInfo.ZJID,TMNUM  from TMInfo  where  TMInfo.zjid = 1
执行这个语句,得到临时表1
3、在临时表1 中打乱TmNum的排序(方法很多,这里不详细写了,有随机函数,也有总条数,应该对你不难)
4、打乱后,update临时表中的TmNum 到 TMInfo中去 (可以用临时表1的tmid为关联字段)
5、删除临时表,从查询1中取第二条记录,拼凑新的查询语句,
select  tmid ,TMInfo.ZJID,TMNUM  from TMInfo  where  TMInfo.zjid = 2  ’以后还有3、4、5.……
执行这个语句,并重新生成临时表1……重复第3、4、5步,继续循环,直到查询1被全部循环。
1