| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:请教:recall的问题
只看楼主 加入收藏
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
结帖率:94.59%
收藏
已结贴  问题点数:20 回复次数:6 
请教:recall的问题
有表A,对某些记录加了删除标记。现在要恢复某些记录,但不成功。想要的结果是:BZ字段中含“化学”或“物理学”或“信息工程”的,恢复。以化学为例,BZ字段中既会有“化学”,也会有“化学工程与工艺”、“材料化学”等。如果一条记录的BZ中既有“化学”也有“材料化学”等,就恢复;有“材料化学”等而没有“化学”的,保持删除。因而必须准确界定专业名称。可以用“含化学、”、“、化学、”等形式的字符串来界定一个专业。
下面的代码运行后,recall不成功:

sele * from qbzy into array asrmc
FOR i=1 TO ALEN(asrmc)  
  zz="asrmc"+"("+ALLTRIM(STR(i))+")"  
  tj=CHRTRANC(&zz,chr(41377)+chr(32),"")  
        se1="含"+tj+"、"
        se2="、"+tj+"、"
        se3="、"+tj+"类、"
        se4="、"+tj+"专业"
        se5="含"+tj+"专业"
        se6="、"+tj+"("
        se7="含"+tj+"("
   RECALL ALL FOR se1$bz OR se2$bz OR se3$bz OR se4$bz OR;
         se5$bz OR se6$bz OR se7$bz
ENDFOR
请各位指教!
测试数据.rar (28.32 KB)
搜索更多相关主题的帖子: 工程 恢复 字段 记录 专业 
2023-05-12 16:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
这些 se1 之类头尾加了字符,增加的字符在BZ存在吗?不存在的话 se1$bz 就不确定。
2023-05-12 18:13
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:709
专家分:2848
注 册:2018-3-13
收藏
得分:20 
这些是不是要恢复的 ?
程序代码:
Close Databases
Set Deleted Off

Use a In 0 Alias recall
Select Recno() as recno, Left(bz,200) as bz from recall where Deleted() and Is包含专业('化学', bz)

Function Is包含专业(c专业名, c数据)
    Local array aWords[1]
    ALines(aWords, m.c数据, '','','',',','(','','','专业')
    Return Ascan(aWords, c专业名, 1, -1, 1, 1+2+4) > 0
EndFunc


刚忘加上被删除限制了

[此贴子已经被作者于2023-5-12 18:29编辑过]


这家伙很懒,啥也没留下
2023-05-12 18:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
不要对基础表进行任何操作,这些操作可以放在临时表中进行。

坚守VFP最后的阵地
2023-05-12 18:22
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
谢谢三大版主!
吹版:专业前后的字符是存在的,这些字符如果不是“、”或“(”之类 的就是另外的专业,需要删除的。
sdta版主:我用的A表是中间表,没有临时表,因为程序结束后我要对A表进行检查,看看该删的有没删掉,该保留的有没保留。等确定程序没有问题时,可以改用临时表。
csyx版主:我得好好消化一下您的代码,代入程序中看看结果
非常感谢!
2023-05-12 21:18
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:709
专家分:2848
注 册:2018-3-13
收藏
得分:0 
这段代码并不是用来给你 recall 用的,仅用于检测取出的记录是否真的是要 recall 的记录,也就是 Is包含专业() 这个函数是否符合要求
如果是,用 recall all for Is包含专业('专业名称', bz) 即可,外面再套一个 for 循环,处理不同的专业

这家伙很懒,啥也没留下
2023-05-12 22:32
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
谢谢csyx!ALINES函数给了我很大启发,现已调试成功,非常感谢!!
2023-05-16 09:12
快速回复:请教:recall的问题
数据加载中...
 
   



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

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