注册 登录
编程论坛 VFP论坛

请教高手如何用最简便的代码实现分库并转换成EXCEL文件?

smart921 发布于 2010-08-08 20:35, 652 次点击
如一个数据表
xh dwmc a1 b1
1 A单位 12 23
2 B单位 65 54
3 C单位 65 87



将这个表按单位分成不同的数据表,如A单位.XLS,B单位.XLS,C单位.XLS
5 回复
#2
tlliqi2010-08-08 21:49
sele * from 数据表 where dwmc="A单位"
sele * from 数据表 where dwmc="B单位"
sele * from 数据表 where dwmc="C单位"
#3
qingfameng2010-08-09 00:55
如果原表的 dwmc 记录很多,并且记录是不按顺序排列的,可试试:(不一定最简,但容易理解吧)
select dwmc from 原表名 into cursor bbb group by dwmc order by dwmc
do while.not.eof()
   cb=alltrim(dwmc)
   sele 原表名
   copy to &cb type xls for alltrim(dwmc)==cb
   sele bbb
   skip
 enddo


[ 本帖最后由 qingfameng 于 2010-8-9 00:57 编辑 ]
#4
茵梦湖2010-08-09 17:05

3楼正解~

如果用 "dist ... into 数组" + "for/endfor" , 5句代码即可, 速度也更快~
 
#5
qingfameng2010-08-09 18:35
版主的改进可取,谢谢
#6
chychychy前天 09:11
回复 4楼 茵梦湖
配合dist用scan 也可以
程序代码:

SELECT DISTINCT ALLTRIM(dwmc) AS dwmc,COUNT(*) AS rs GROUP BY 1FROM yssj WHERE NOT EMPTY(dwmc) INTO CURSOR tmp

SCAN
    lcdwmc = ALLTRIM(tmp.dwmc)
    lcTableName = "导出_" +lcdwmc+"_"+TRANSFORM(rs) +"条记录"  && 替换空格为下划线
    *导出dbf表
    SELECT * FROM yssj WHERE ALLTRIM(dwmc) == m.lcdwmc  INTO TABLE (m.lcTableName)
    *导出Excel表
    COPY TO  (lcTableName) TYPE XL5 FOR ALLTRIM(dwmc) == m.lcdwmc
ENDSCAN
1