| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3340 人关注过本帖, 1 人收藏
标题:数组的问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这个要求哪有你开始说的那么容易

授人以渔,不授人以鱼。
2012-08-29 11:16
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
这是我写好的代码,
text to ggmc noshow
    select jgid,行政职务,姓名 from gz02 where LEN(jgid)=9 and RIGHT(jgid,3)='000'
    and (行政职务='理事长' or 行政职务='主任' or 行政职务='监事长' or 行政职务='副主任')
     order by jgid
ENDTEXT
select 0
    if use_("gz02",ggmc)>1
        wait_("0人员表打不开")
        return '0获取数据失败'
    ENDIF
copy TO temp_("Gz02tmp")
USE in Gz02
select 0
    if use_(temp_("Gz02tmp"))>1
        wait_("0人员行政表打不开")
        return '0获取数据失败'
    ENDIF   
select gz02tmp
       select JGID,;
       CASE WHEN 行政职务 = '理事长' Then 姓名   end as 理事长,;
        CASE WHEN 行政职务 = '监事长' then 姓名  end as 监事长,;
        CASE WHEN 行政职务 = '主任'   then 姓名   end  as 主任,;
       space(10) as 副主任,;
       space(10) as 副主任1,;
       space(10) as 副主任2,;
       space(10) as 副主任3,;
       space(10) as 副主任4 from gz02tmp  group by jgid into DBF temp_("TBJSZ")
select 0
    if use_(temp_("TBJSZ"))>1
        wait_("00人员行政表打不开")
        return '0获取数据失败'
    ENDIF      
CREATE CURSOR XZZW (JGID C(20),副主任 C(10),副主任1 C(10),副主任2 C(10),副主任3 C(10),副主任4 C(10))
select Gz02tmp
  select * from ALIAS() where 行政职务='副主任' into dbf temp_("FZR")
  select 0
    if use_(temp_("FZR"))>1
        wait_("0人员行政表打不开")
        return '0获取数据失败'
    ENDIF
select FZR   
  SELECT  JGID  FROM ALIAS() GROUP BY JGID INTO ARRAY AREC
 FOR I=1 TO ALEN(AREC,1)
     SELECT 姓名 FROM FZR  where jgid = AREC(i,1)  INTO ARRAY ASS
      SELECT("XZZW")
      append BLANK
      REPLACE JGID With AREC(I,1)   
      FOR I1=2 TO FCOUNT("XZZW")-(FCOUNT("XZZW")-ALEN(ASS,1))+1
          REPLACE RECORD RECCOUNT() (Field(I1)) With ASS(I1-1,1)
      ENDFOR
 ENDFOR
SELECT TBJSZ
APPEND FROM XZZW
BROW     
但是CASE WHEN 部分总报错,“Command contains unrecognized phrase/keyword.”命令无法识别!!!但是在PLSQL执行就可以!大家帮忙看看,这样写是否对?还有帮我解释下CSAE  WHEN 语句错在哪了,因为以前也这样写过,但没报错!



[ 本帖最后由 hyhosd 于 2012-8-29 11:26 编辑 ]
2012-08-29 11:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 45楼 hyhosd
万丈高楼平地起

坚守VFP最后的阵地
2012-08-29 11:18
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
回复 53楼 sdta
说的很对,一点一点积累,慢慢就好起来了,现在比刚开始学好多了!
2012-08-29 11:21
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用hyhosd在2012-8-29 10:53:18的发言:

那就我把详细情况说下吧!上传不了图片只好手工输入了!!!
数据表(部分数据)
 jgid          行政职务       姓名
140207000      理事长         姓名1
140207000      监事长         姓名2
140207000      主任           姓名3
140207000      副主任         姓名4
140207000      副主任         姓名5
140207000      副主任         姓名6
140207000      副主任         姓名7
140207000      副主任         姓名8
140406000      主任           姓名9
140406000      副主任         姓名10
140406000      副主任         姓名11
140701000      理事长         姓名12
140701000      副主任         姓名13
实现结果如下
jgid        职数  理事长    监事长     主任    副主任   副主任   副主任   副主任  副主任
140207000     8    姓名1     姓名2      姓名3   姓名4    姓名5    姓名6    姓名7   姓名8
140406000     3                         姓名9   姓名10   姓名11
140701000     2   姓名12                       姓名13
    合计      13   2            1       2        3         2        1       1       1
那大家帮我看看,我的思路是---理事长、监事长、主任列通过CASE WHEN 的办法进行行转列,通过JGID分组,后面的就按照这个帖子的办法进行行转列,然后将两个数据合并到一起,第一列和合计行不会做!大家有没有更好的办法呢?
红字处的结果,在表中是无法实现的(数据表字段名是不允许相同的),应该采取一种变通的方法,达到你的目的
可以参照:https://bbs.bccn.net/thread-376255-1-1.html
[attach]64470[/attach]

[ 本帖最后由 sdta 于 2012-8-29 17:42 编辑 ]

坚守VFP最后的阵地
2012-08-29 11:25
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
select JGID,;
        CASE WHEN 行政职务 = '理事长' Then 姓名   end as 理事长,;
         CASE WHEN 行政职务 = '监事长' then 姓名  end as 监事长,;
         CASE WHEN 行政职务 = '主任'   then 姓名   end  as 主任,;
        space(10) as 副主任,;
        space(10) as 副主任1,;
        space(10) as 副主任2,;
        space(10) as 副主任3,;
        space(10) as 副主任4 from gz02tmp  group by jgid into DBF temp_("TBJSZ")
用这个也实现不了吗(除了职数列)?其实我的代码里,已经把副主任命名不一样了,我现在生成的表最后是要往另一个报表中替的,另一个表中的格式是死的,我只要把我现在生成的列按顺序替进去就行了!

[ 本帖最后由 hyhosd 于 2012-8-29 11:50 编辑 ]
2012-08-29 11:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用hyhosd在2012-8-29 10:53:18的发言:

那就我把详细情况说下吧!上传不了图片只好手工输入了!!!
数据表(部分数据)
 jgid          行政职务       姓名
140207000      理事长         姓名1
140207000      监事长         姓名2
140207000      主任           姓名3
140207000      副主任         姓名4
140207000      副主任         姓名5
140207000      副主任         姓名6
140207000      副主任         姓名7
140207000      副主任         姓名8
140406000      主任           姓名9
140406000      副主任         姓名10
140406000      副主任         姓名11
140701000      理事长         姓名12
140701000      副主任         姓名13
实现结果如下
jgid        职数  理事长    监事长     主任    副主任   副主任   副主任   副主任  副主任
140207000     8    姓名1     姓名2      姓名3   姓名4    姓名5    姓名6    姓名7   姓名8
140406000     3                         姓名9   姓名10   姓名11
140701000     2   姓名12                       姓名13
    合计      13   2            1       2        3         2        1       1       1
那大家帮我看看,我的思路是---理事长、监事长、主任列通过CASE WHEN 的办法进行行转列,通过JGID分组,后面的就按照这个帖子的办法进行行转列,然后将两个数据合并到一起,第一列和合计行不会做!大家有没有更好的办法呢?

把你这个原始表用附件发上来

授人以渔,不授人以鱼。
2012-08-29 11:47
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
回复 57楼 TonyDeng
gz02.rar (692 Bytes)
这是原表
2012-08-29 12:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
好的,你是最多5个副主任是吧?

授人以渔,不授人以鱼。
2012-08-29 12:12
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
恩,最多就五个副主任,
2012-08-29 12:13
快速回复:数组的问题
数据加载中...
 
   



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

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