| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1564 人关注过本帖
标题:报表新问题,急
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 24楼 wjp456789
相互学习
2012-10-19 09:44
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
这是他提供的示例
程序代码:
CREATE CURSOR 表A (联系人 C(6))
XM="柳银霞郑文秀徐冬瑾李胜韬张林杰刘焕丽孙静媛吴春海刘学佳门彦先甄志爽门月红"
FOR I=1 TO LENC(XM)/3
    INSERT INTO 表A VALUES (SUBSTRC(XM,(I-1)*6+1,3))
ENDFOR
CREATE CURSOR 表B (联系人 C(6),地区 C(40))
XMDQ="门彦先,天津;吴春海,北京;吴春海,天津;张林杰,秦皇岛;郑文秀,唐山;郑文秀,秦皇岛;郑文秀,天津"
FOR I=1 TO GETWORDCOUNT(XMDQ,";")
    XMDQ1=GETWORDNUM(XMDQ,I,";")
    INSERT INTO 表B VALUES (GETWORDNUM(XMDQ1,1,","),GETWORDNUM(XMDQ1,2,","))
ENDFOR
SYS(3099,70)
SELECT A.联系人,NVL(B.地区,"") AS 地区,COUNT(地区) AS 地区数 FROM 表A A FULL JOIN 表B B ON A.联系人==B.联系人 GROUP BY 1 INTO CURSOR TEMP1
SELECT 联系人,CAST(FUN(联系人) AS C(20)) AS 地区 FROM 表B GROUP BY 1 INTO CURSOR TEMP2
SELECT A.联系人,NVL(B.地区,"") AS 地区,A.地区数 FROM TEMP1 A FULL JOIN TEMP2 B ON A.联系人==B.联系人 GROUP BY 1 INTO CURSOR TEMP READWRITE
BLANK ALL FIELDS 地区数 FOR 地区数=0
BROWSE
*--------- 自定义函数 ---------*
FUNCTION FUN
PARAMETER CNAME
CSTR=""
SELECT 表B
SCAN FOR ALLTRIM(联系人)==ALLTRIM(CNAME)
   CSTR=CSTR+ALLTRIM(地区)+"-"
ENDSCAN
RETURN LEFT(CSTR,LEN(CSTR)-1)
ENDFUNC
对我来说
对nvl和cast的用法还需要加深了解
另外在fun程序里
对CNAME参数的理解还要消化一下。

最后问一下这个程序如何实现移植。。如果每遇到具体问题再修改程序 。效率也不提不上来。

我是来向高手学习的!
2012-10-19 09:59
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
我想请问一下。针对我的表格。如何写程序。提取出专业。我想用其他办法。结果行不通。
由于工作太忙,研究时间有限,还是没怎么研究透彻。。。

我是来向高手学习的!
2012-10-19 18:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
上传数据表

坚守VFP最后的阵地
2012-10-20 01:51
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
2012ks.rar (10.68 KB)

我是来向高手学习的!
2012-10-20 09:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 35楼 wjp456789
考号怎么没有

坚守VFP最后的阵地
2012-10-20 13:14
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
KSH就是考号哈。

我是来向高手学习的!
2012-10-20 14:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
*--- 提取考号
SELECT KCH,MIN(KSH) KH1,MAX(KSH) KH2,IIF([三十七]$KCH,37,IIF([三十八]$KCH,38,CEILING(VAL(RIGHT(MAX(KSH),4))/30))) KCH1 FROM KS GROUP BY 1 INTO CURSOR KC
*--- 提取专业
SELECT KCH,ZY FROM KS GROUP BY 1,2 INTO CURSOR ZY
SELECT KCH,CAST(ZYTQ(KCH) AS C(40)) AS ZY FROM ZY GROUP BY 1 INTO CURSOR ZY1
*--- 生成临时表
SELECT A.*,B.ZY FROM KC A,ZY1 B WHERE ALLTRIM(A.KCH)==ALLTRIM(B.KCH) ORDER BY KCH1 INTO CURSOR KCZY

*--- 自定义函数
FUNCTION ZYTQ
PARAMETERS CKCH
SELECT ZY
CSTR=[]
SCAN FOR ALLTRIM(KCH)==ALLTRIM(CKCH)
     CSTR=CSTR+ALLTRIM(ZY)+[-]
ENDSCAN
RETURN LEFT(CSTR,LEN(CSTR)-1)
结果图
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 sdta 于 2012-10-20 18:26 编辑 ]

坚守VFP最后的阵地
2012-10-20 17:05
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
18和31考场。
有多少专业。就生成了多少行相同的数据。。。呵呵。需要再修改一下程序。

我是来向高手学习的!
2012-10-20 18:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用wjp456789在2012-10-20 18:04:22的发言:

18和31考场。
有多少专业。就生成了多少行相同的数据。。。呵呵。需要再修改一下程序。
忘了分组

[ 本帖最后由 sdta 于 2012-10-20 18:27 编辑 ]

坚守VFP最后的阵地
2012-10-20 18:11
快速回复:报表新问题,急
数据加载中...
 
   



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

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