| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1883 人关注过本帖
标题:请帮我处理一下这个表
只看楼主 加入收藏
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
结帖率:89.29%
收藏
已结贴  问题点数:20 回复次数:11 
请帮我处理一下这个表
我是想把表中同一单位名称记录总数大于300的分成几个新的单位名称,其它小于300的不变,更新后总记录数不变,请帮忙解决,先谢谢了
bm.rar (753 Bytes)


[此贴子已经被作者于2017-3-19 20:25编辑过]

搜索更多相关主题的帖子: 记录 
2017-03-18 10:55
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
收藏
得分:7 
首先在BM.dbf 表中加一个字段sl,这样统计人数
select 0
use bm
index on A
total to 程序路径+表名(例如:d:\bm1) on A fields sl
use d:\bm1
if sl>300
  分成两个新的单位名称
 else
    return
endif
2017-03-18 11:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9809
专家分:26987
注 册:2012-2-5
收藏
得分:7 
这是什么需求,不明白

坚守VFP最后的阵地
2017-03-18 11:51
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
回复sdta,主要是想把300人以上的单位分成两个独立的新单位,以便按晌单独安排活动时间。

[此贴子已经被作者于2017-3-18 12:13编辑过]


shenkj001@
2017-03-18 12:06
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
我用以下代码不行:提示找不到别名zxlb

CLOSE ALL
USE bm
SELECT DISTINCT zxmc FROM bm INTO cursor zxlb
sele zxlb
sss=reccount()
GO top
i=1
DO WHILE i<sss AND NOT EOF()
lcdqzx=ALLTRIM(zxlb.zxmc )
SELECT bm
COUNT FOR ALLTRIM(bm.zxmc)==lcdqzx TO zxrs
IF zxrs>300
SELECT *  FROM bm WHERE  ALLTRIM(bm.zxmc)==lcdqzx INTO TABLE dbmk
USE dbmk
LOCATE FOR recno()=300
SELECT dbmk.* FROM dbmk WHERE recno()<=300 INTO TABLE  bmksy1
SELECT dbmk.* FROM dbmk WHERE recno()>300  INTO TABLE bmksy2
CLOSE DATABASES
USE bmksy1  
REPLACE ALL bmksy1.zxmc WITH ALLTRIM(lcdqzx+'(一)')
USE bmksy2
REPLACE ALL bmksy2.zxmc WITH ALLTRIM(lcdqzx+'(二)')
CLOSE DATABASES
USE dbmk
DELETE ALL
PACK
APPEND FROM bmksy1
APPEND FROM bmksy2
SELECT * FROM dbmk ORDER by zxmc INTO TABLE bmsj
ENDIF
sele zxlb  &&这里提示找不到别名zxlb
SKIP
i=i+1
ENDDO
CLOSE DATABASES

= Messagebox('已完成初始数据!' ,48,"提示")




[此贴子已经被作者于2017-3-18 12:25编辑过]


shenkj001@
2017-03-18 12:07
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9809
专家分:26987
注 册:2012-2-5
收藏
得分:0 
回复 4楼 shenkj001
分配规则是什么?如果一个单位有601人,这种情况是分成两个新单位,还是三个新单位。每个新单位要分配多少人啊
SELECT 单位名称,COUNT(*) 人数 FROM AA GROUP BY 1
从上面的查询代码中就可以看出那些单位人数超过300

坚守VFP最后的阵地
2017-03-18 12:39
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
只要不超过300人就行,如1201人,可分5个。我是想把大于300人的单位,分成几个不超过300人的新单位,再同其它少于300人的单位合在一起,保留原表的记录总数和其它字段信息。


[此贴子已经被作者于2017-3-18 12:52编辑过]


shenkj001@
2017-03-18 12:45
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:7 
CLOSE DATABASES
USE bm EXCLUSIVE IN 0
SELECT *,0000000000 xh FROM bm INTO CURSOR bm1 ORDER BY a  READWRITE
REPLACE ALL xh WITH RECNO() IN bm1
UPDATE bm1 SET a=ALLTRIM(b.a)+TRANSFORM(CEILING((RECNO('bm1')-b.xh+1)/300)) from (select a,min(xh) xh from bm1 group by a HAVING COUNT(*)>300) b WHERE bm1.a=b.a
ZAP IN bm
SELECT bm
APPEND FROM (DBF('bm1'))
CLOSE DATABASES


[此贴子已经被作者于2017-3-18 12:51编辑过]

2017-03-18 12:48
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
谢谢kiff!可以了

shenkj001@
2017-03-18 13:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9809
专家分:26987
注 册:2012-2-5
收藏
得分:0 
回复 9楼 shenkj001
提问题时,要把问题说清楚,这样即可以节省大家的时间,也可以节省你的时间。如果没有我前面的一问,你的问题能及时解决吗?

坚守VFP最后的阵地
2017-03-18 13:41
快速回复:请帮我处理一下这个表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040862 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved