注册 登录
编程论坛 VFP论坛

请教关于替换问题

反璞归真 发布于 2025-01-04 18:07, 232 次点击
只有本站会员才能查看附件,请 登录

我对vfp不熟悉请大师们指点:如何将kmdm字段中的01替换成思想政治,02替换成语文,03替换成数学,05替换成物理,11替换成外语(英语)。谢谢
3 回复
#2
sxcl78992025-01-04 18:40
虽然搞不清你想要做什么,个人感觉你应该先建立一个【课程代码表】供其他表使用,至少两个字段,一个是kmdm(课程代码),一个是kmmc(课程名称),把上面代码和课程输进去;然后再根据课程代码表来替换【座号贴】表。
把课程代码表建好后,针对你上面的【座号贴】表使用
UPDATE 座号贴 SET kmdm=(select kmmc from 课程代码表 WHERE kmdm=座号贴.kmdm)
来替换。
前提是你的【座号贴】表表里面的kmdm字段长度修改一下,改为8以上。

[此贴子已经被作者于2025-1-4 19:02编辑过]

#3
反璞归真2025-01-04 19:00
回复 2楼 sxcl7899
谢谢指导!十分感谢
#4
chychychy2025-01-06 14:03
程序代码:

*01替换成思想政治,02替换成语文,03替换成数学,05替换成物理,11替换成外语(英语)
*只有一个字符型字段,且字段宽带为2,无法在原表替换,而且用原表替换也不符合数据安全,结果写入临时表tmp,也可以改为dbf表
SELECT *,SPACE(12) kmmc FROM 座号贴 INTO CURSOR tmp READWRITE &&临时表tmp
SCAN
    DO CASE
    CASE kmdm='01'
        REPLACE kmmc WITH '思想政治'
    CASE kmdm='02'
        REPLACE kmmc WITH '语文'
    CASE kmdm='03'
        REPLACE kmmc WITH '数学'
    CASE kmdm='05'
        REPLACE kmmc WITH '物理'
    CASE kmdm='11'
        REPLACE kmmc WITH '外语(英语)'
    ENDCASE
ENDSCAN
GO TOP
BROWSE &&查看tmp临时表情况
SELECT kmdm,kmmc,COUNT(*) 计数 FROM tmp GROUP BY 1,2 &&查看计数情况

*或者用12月28日帖子中schtg回复的语句,他这个速度快
SELECT *,SPACE(12) kmmc FROM 座号贴 INTO CURSOR tmp READWRITE &&临时表tmp
BROWSE
UPDATE tmp SET kmmc = ICASE(ALLTRIM(kmdm)=="01","思想政治",;
                            ALLTRIM(kmdm)=="02","语文",;
                            ALLTRIM(kmdm)=="03","数学",;
                            ALLTRIM(kmdm)=="05","物理",;
                            ALLTRIM(kmdm)=="11","外语(英语)")
GO TOP
BROWSE &&查看tmp临时表情况
SELECT kmdm,kmmc,COUNT(*) 计数 FROM tmp GROUP BY 1,2 &&查看计数情况

只有本站会员才能查看附件,请 登录

涉及大量数据,比较好的方式是按二楼说的,提前建立维护好“课程代码表”,需要的时候
SELECT *,SPACE(12) kmmc FROM 座号贴 INTO CURSOR tmp READWRITE &&临时表tmp
UPDATE tmp from 课程代码表 as b SET kmmc=b.kmmc WHERE tmp.kmdm=b.kmdm




[此贴子已经被作者于2025-1-6 14:32编辑过]

1