主题:请教有关数据存取的问题~~~~~(已解决)
coffeenight
[专家分:230] 发布于 2008-09-23 10:34:00
遇到一个问题,不知道解决方法,来向大家请教,谢谢您的帮助!
是这样,压缩包里有两个表aa,bb
aa 表字段有 导师姓名,科目名称等
例如: 导师姓名 科目名称
不区分导师组一 语文
不区分导师组一 数学
不区分导师组一 英语
不区分导师组二 化学
不区分导师组二 政治
bb 表有字段 导师姓名,备注
例如: 导师姓名 备注
不区分导师组一 包含以下导师:张三、李四、王五
不区分导师组二 包含以下导师:麻子、孙二
现在我需要将aa 表中的不区分导师组的全部代换成bb 表中的导师姓名,并把科目相应添加
就像下面这样的结果
导师姓名 科目名称
张三 语文
张三 数学
张三 英语
李四 语文
李四 数学
李四 英语
王五 语文
。。。。。。
。。。。。。
孙二 化学
孙二 政治
期待您的回复~~~
最后更新于:2008-09-26 08:50:00
回复列表 (共14个回复)
11 楼
cbl518 [专家分:57140] 发布于 2008-09-25 15:19:00
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 楼
cbl518 [专家分:57140] 发布于 2008-09-25 15:21:00
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 楼
coffeenight [专家分:230] 发布于 2008-09-25 16:33:00
非常感谢!
我还得好好琢磨 :)
ALINES(ADsName, bb.Bz,1+4,":","、","。")
呵,原来这个是 9.0下的语句,
1 (默认) 删除行的前后空格,或者删除 Varbinary 和 Blob 数值前后的 0 。
4 不包含数组中空的元素。
还有个小疑问,已经有 ‘1+4’了,为什么还需要一个非空判断才能得到正确结果呢?
14 楼
cbl518 [专家分:57140] 发布于 2008-09-25 16:43:00
[quote]
程序现在9.0运行正常,返回 2819条纪录,只是很奇怪,有25条纪录DSXM字段为空
6.0 正常运行,返回 3163条纪录,有369条纪录DSXM字段为空
[/quote]
我来回复