| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:求助:一行如何结构不变情况拆分多行?
只看楼主 加入收藏
dhy793202
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2013-3-17
结帖率:75%
收藏
已结贴  问题点数:25 回复次数:8 
求助:一行如何结构不变情况拆分多行?
表的情况是
文件名       列1         列2
1          A1;A2        B1;B2
2           A3           B3
3         A4;A5;A6     D4;D5;D6
4           A7            D7
......


列1和列2的带分号数是一样的
现在要拆成
文件名       列1         列2
1           A1          B1
1           A2          B2
2           A3          B3
3           A4          D4
3           A5          D5
3           A6          D6
4           A7          D7


可以通过SCAN原始表的每一条记录,然后一条条添加到新表么?刚接触循环语句不太熟悉,请大家多多指教
搜索更多相关主题的帖子: 记录 如何 
2013-06-05 13:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
是的,你尝试自己做一下,这是基本功,别人不应该替你做。最好也不要幻想有什麽现成语句能够实现,总那样想的话,你永远也学不会编程。

授人以渔,不授人以鱼。
2013-06-05 13:55
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:3 
用 ALINES(),结合循环,每条记录处理。
2013-06-05 14:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27145
注 册:2012-2-5
收藏
得分:0 
VFP版本?

坚守VFP最后的阵地
2013-06-05 15:55
dhy793202
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2013-3-17
收藏
得分:0 
回复 4楼 sdta
6.0,所以ALLINS这个函数是不是用不了
我自己写了一段,较笨的法子,通用性不好,请提出一些修改思路
原文JC,生成文件JC-CF(结构同JC)
scan
 DO CASE occurs(';',列1)<>occurs(';',列2)
      INSERT INTO JC-CF VALUES(JC.文件名,JC.列1,JC.列2)
    CASE occurs(';',列1)=0
      INSERT INTO JC-CF VALUES(JC.文件名,JC.列1,JC.列2)
    CASE occurs(';',列1)=1
      INSERT INTO JC-CF VALUES(JC.文件名,JC.列1,SUBSTR(ALLTRIM(JC.列1),1,AT(';',ALLTRIM(JC.列1),1)-1),SUBSTR(ALLTRIM(JC.列2),1,AT(';',ALLTRIM(JC.列2),1)-1))
      INSERT INTO JC-CF VALUES(JC.文件名,JC.列1,SUBSTR(ALLTRIM(JC.列1),AT(';',ALLTRIM(JC.列1),1)+1),SUBSTR(ALLTRIM(JC.列2),AT(';',ALLTRIM(JC.列2),1)+1))
    CASE occurs(';',列1)=2
     。。。。。。
    CASE occurs(';',列1)=3
     。。。。。。
    CASE occurs(';',列1)=4
     。。。。。。
  ENDCASE   
 SELECT JC
endscan



提高通用性的问题
理想的是只变动前面的变量就能达到
1.是不是所有的字段都得设置成变量,换一个数据库后,字段数可能有变化,DO CASE下的还得改~
2.要是有好多个“;”得编好多层CASE,这块如何能有较好的循环
2013-06-05 18:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27145
注 册:2012-2-5
收藏
得分:0 
VFP6.0代码
A=[A,B,C]
?LINES(AA,CHRTRAN(A,[,],CHR(13)))
LIST MEMORY LIKE AA

坚守VFP最后的阵地
2013-06-05 18:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27145
注 册:2012-2-5
收藏
得分:20 
程序代码:
CREATE CURSOR S (文件名 N(2),列1 C(20),列2 C(20))
CREATE CURSOR T (文件名 N(2),列1 C(20),列2 C(20))
INSERT INTO T VALUES (1,[A1;A2],[B1;B2])
INSERT INTO T VALUES (2,[A3],[B3])
INSERT INTO T VALUES (3,[A4;A5;A6],[B4;B5;B6])
INSERT INTO T VALUES (4,[A7],[B7])
SCAN
   ALINES(BB,CHRTRAN(T.列2,[;],CHR(13)))
   FOR I=1 TO ALINES(AA,CHRTRAN(T.列1,[;],CHR(13)))
       INSERT INTO S VALUES(T.文件名,AA(I),BB(I))
   ENDFOR
ENDSCAN
SELECT S
BROWSE
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-06-05 19:00
dhy793202
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2013-3-17
收藏
得分:0 
多谢楼上
好多还没看懂,回头翻书再仔细琢磨琢磨
2013-06-05 20:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
7楼的代码有点冒险

授人以渔,不授人以鱼。
2013-06-06 11:47
快速回复:求助:一行如何结构不变情况拆分多行?
数据加载中...
 
   



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

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