回 帖 发 新 帖 刷新版面

主题:请教有关数据存取的问题~~~~~(已解决)

遇到一个问题,不知道解决方法,来向大家请教,谢谢您的帮助!
是这样,压缩包里有两个表aa,bb

aa 表字段有 导师姓名,科目名称等
例如:  导师姓名                     科目名称
      不区分导师组一                 语文
      不区分导师组一                 数学
      不区分导师组一                 英语
      不区分导师组二                 化学
      不区分导师组二                 政治

bb 表有字段  导师姓名,备注
例如:   导师姓名                    备注
       不区分导师组一              包含以下导师:张三、李四、王五
       不区分导师组二              包含以下导师:麻子、孙二

现在我需要将aa 表中的不区分导师组的全部代换成bb 表中的导师姓名,并把科目相应添加
就像下面这样的结果

         导师姓名                    科目名称
         张三                         语文
         张三                         数学
         张三                         英语
         李四                         语文
         李四                         数学                  
         李四                         英语
         王五                         语文
         。。。。。。
         。。。。。。
         孙二                         化学
         孙二                         政治


期待您的回复~~~

回复列表 (共14个回复)

11 楼

CREATE CURSOR 新表(Dsxm C(8),Yjfxmc C(28),kmm C(20))
USE aa IN 0
USE bb IN 0
SELECT bb
SCAN
SELECT aa
SCAN FOR aa.Dsxm=bb.Dsxm
FOR i=2 TO ALINES(ADsName, bb.Bz,1+4,":","、","。")
if !empt(ADsName[i])
INSERT INTO 新表 VALUES (ADsName[i],aa.Yjfxmc,aa.Kskmmc)
endif
ENDFOR
ENDSCAN
SELECT bb
ENDSCAN
SELECT * FROM 新表 ORDER BY Dsxm INTO TABLE 结果表

12 楼

vfp 6


CREATE CURSOR 新表(Dsxm C(8),Yjfxmc C(28),kmm C(20))
USE aa IN 0
USE bb IN 0
SELECT bb
SCAN
SELECT aa
SCAN FOR aa.Dsxm=bb.Dsxm
FOR i=2 TO ALINES(ADsName, CHRTRANC(bb.Bz,":、。" ,chr(13)+chr(13)+chr(13)), .T.)
if !empt(ADsName[i])
INSERT INTO 新表 VALUES (ADsName[i],aa.Yjfxmc,aa.Kskmmc)
endif
ENDFOR
ENDSCAN
SELECT bb
ENDSCAN
SELECT * FROM 新表 ORDER BY Dsxm INTO TABLE 结果表

13 楼

非常感谢!
我还得好好琢磨 :)

ALINES(ADsName, bb.Bz,1+4,":","、","。")
呵,原来这个是 9.0下的语句,
1 (默认) 删除行的前后空格,或者删除 Varbinary 和 Blob 数值前后的 0 。
4 不包含数组中空的元素。
还有个小疑问,已经有 ‘1+4’了,为什么还需要一个非空判断才能得到正确结果呢?

14 楼

[quote]

程序现在9.0运行正常,返回 2819条纪录,只是很奇怪,有25条纪录DSXM字段为空

6.0 正常运行,返回  3163条纪录,有369条纪录DSXM字段为空

[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册