回 帖 发 新 帖 刷新版面

主题:求高人解答vfp数据表处理问题

我有一数据表 字段有 姓名 学号 考生号 学院 ,现在需要将所有考生号第五位数字是3的学院改为法学院,还要在学号中1和9之间插入一个数字0。例如:如果学号为20081945 则改为 200810945

回复列表 (共10个回复)

沙发

use XXX &&你的数据表
GO BOTTOM
EN=RECNO()
A=1
locate for SUB(学号,5,1)=3
DO WHILE .T.
IF EOF()=.T.
EXIT
ENDIF
A=RECNO()
K1=SUBS(学号,1,5)
K2=SUBS(学号,6,3)
K=K1+"0"+K2
KK=STR(K,1,9)
REPLACE 学号 WITH KK FOR RECNO()=A
A=A+1
IF A>=EN
EXIT
ENDIF
CONTINUE
ENDDO
这程序差不多了,不行时稍修改就行了。

板凳


可不可以 稍微的对命令解释一下。非常感谢!

3 楼

有几个问题没有说清楚:
1.学号、考生号都是字符型字段吗?
2.只将“法学院”学号中1和9之间插入一个数字0?

4 楼


不好意思没表达清楚,首先第一个问题和第二个问题没有关系。
其次他们都是字符型的。
那我再说具体点:第一个问题---我的数据表是一个学生信息数据表,由于学校的调整,要将原来的政法学院改为法学院和马克思主义学院两个学院,那这两个学院的区别就是考生号的第五位,所以要以考生号的第五位为唯一判断标准将以前的政法学院改为法学院。也或者把这些人挑出来。
第二个问题---有一部分人的学号比其他人少人了一位,而他们共同之处都是在1和9之间少了一个0,所以要把它们改过来。

5 楼

REPLACE 学院 WITH "法学院" FOR SUBSTR(ALLTRIM(考生号),5,1)=="3"
REPLACE ALL 学号 WITH STRTRAN(学号,"19","109") &将学号中找到的所有“19”换成“109”

6 楼


真是太谢谢你了,我试了一下 ,我的问题解决了。非常感谢。

7 楼


可不可以在问一个问题呀?如果一个数据表有重复的记录,也有没有重复的记录,怎么把没有重复的记录选择出来?

8 楼

a=[20081945]
?STUFF(a,6,0,[0])
结果:
200810945

9 楼

REPLACE 学号 WITH STUFF(学号,6,0,[0]) FOR SUBSTR(ALLTRIM(学号),5,2)==[19]

10 楼

REPLACE 学院 WITH 法学院 FOR SUBSTR(ALLTRIM(学号),5,1)==[3]

我来回复

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