| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3153 人关注过本帖
标题:表1转换成表2
只看楼主 加入收藏
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
结帖率:90.14%
收藏
已结贴  问题点数:20 回复次数:22 
表1转换成表2
各位好,有一张QQ原始表,经统计后变成 BM表 形式 如何实现? 谢谢谢!
tabl1_tabl2.rar (1.87 KB)
  
注:部门和工资二大类字段名,有时候有增减的情况发生。

[此贴子已经被作者于2017-4-20 21:03编辑过]

搜索更多相关主题的帖子: 如何 统计 
2017-04-20 20:53
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
楼主这是没事找事做,这样反复转换有什么意义

坚守VFP最后的阵地
2017-04-20 23:04
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
回复 2楼 sdta
谢谢SDTA,第二张表是一张定期要统计的报表,通过VFP程序来做可减少手工输入性错误,确保数据正确无误。
谢谢。
2017-04-21 06:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:8 
图片附件: 游客没有浏览图片的权限,请 登录注册

CLEAR
SET SAFETY OFF
USE qq ALIAS qq IN 0
USE bm ALIAS bm IN 0
SELECT bm
fieldlist = FIELD(2)
FOR i=3 TO FCOUNT()
    fieldlist = fieldlist + ","+FIELD(i)
ENDFOR
EXECSCRIPT("BLANK FIELDS " + fieldlist + " ALL")
INDEX on ALLTRIM(部门) TAG 部门
SELECT qq
SCAN
    bmn = ALLTRIM(qq.部门)
    IF SEEK("人数", "bm")
        EXECSCRIPT(_cmd(bmn,1))
    ENDIF
    FOR i=3 TO FCOUNT()
        fn = FIELD(i)
        IF SEEK(fn, "bm")
            EXECSCRIPT(_cmd(bmn, EVALUATE(fn)))
        ENDIF
    ENDFOR
ENDSCAN
SELECT bm
DELETE TAG ALL
fieldlist = FIELD(2)
FOR i=3 TO FCOUNT()-1
    fieldlist = fieldlist + "+" + FIELD(i)
ENDFOR
EXECSCRIPT([REPLACE 合计 WITH ] + fieldlist + [ ALL in "bm"])
BROWSE
CLOSE DATABASES ALL

FUNCTION _cmd(fn, val)
    RETURN [REPLACE ] + fn + [ WITH ] + fn + [+] + TRANSFORM(val) + [ in "bm"]
ENDFUNC
2017-04-21 07:40
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
回复 4楼 吹水佬
感谢 吹水佬 的付出,该程序运行至
EXECSCRIPT("BLANK FIELDS " + fieldlist + " ALL")
估计是我用VFP6.0原因。不能识别 EXECSCRIPT命令。
对不起吹先生,我没有说清楚。
麻烦能帮我改成VFP6.0的语句,行吗?
2017-04-21 18:53
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
改用VFP9

坚守VFP最后的阵地
2017-04-21 19:11
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
回复 6楼 sdta
VFP版本不重要,解决问题才是硬道理。
2017-04-21 19:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 5楼 tjdeming
试试用宏
BLANK FIELDS &fieldlist ALL
如果是表结构固定,直接写上字段名好了,运行效率也高。

[此贴子已经被作者于2017-4-21 19:52编辑过]

2017-04-21 19:50
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
回复 8楼 吹水佬
谢谢热心回复
第一处我改了,运行至第二个EXECSCRIPT,又卡了。
2017-04-21 20:12
xinjie
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:19
帖 子:274
专家分:520
注 册:2007-8-11
收藏
得分:8 
程序代码:
Use qq
Create Cursor temp(姓名 c(8), 部门 c(10), 项目 c(10), 金额 N(10,2))

Select qq
Scan
    For m.i = 3 To 10
        m.lcFiled = Field(m.i)
        m.lnFiled = Evaluate(m.lcFiled)
        Insert Into Temp(姓名, 部门, 项目, 金额) ;
            values(Qq.姓名, Qq.部门, m.lcFiled, m.lnFiled)
    Endfor
Endscan

Select Temp.项目, Temp.部门, Sum(Temp.金额);
    FROM TEMP;
    GROUP By Temp.项目, Temp.部门;
    ORDER By Temp.项目, Temp.部门;
    INTO Cursor temp2

Select temp2
Do (_Genxtab) With 'bm2.dbf',.T.,.T.,.T.,,,,.T.,0,.T.

Use In temp
Use In qq

Brow

剩下的应该很容易了。。。。。。
顺便说一下,你的 QQ 表结构非常的不合理。。。。。。
2017-04-21 20:46
快速回复:表1转换成表2
数据加载中...
 
   



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

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