标题:有关set relation to的编程应用
取消只看楼主
于建伟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-8-10
结帖率:100%
已结贴  问题点数:20 回复次数:1 
有关set relation to的编程应用
set relation to  命令的功能:在两个打开的表之间建立关系。
是主表与子表之间建立临时关联,建立临时关联的含义是: 当主表指针移动时,子表指针会自动跟着移动到关键字值相同的记录上。从而实现由别名区表向当前表自动提供数据信息。
为什么要提到这个命令,实际上我们在这里是要讨论一下编程思路的问题。而且本人在实际工作中也的确遇到过这些问题,提出来和大家讨论一下。
例如:某地区的考生人员数据表,表main1包含该地区人员的理论成绩,表main2包含该地区人员的论文成绩,两个表都有相同的字段如:code等,如何将表main2中的论文成绩添加到表main1的lwcj字段中,通常的做法是从表main1中的第一个记录开始,在表main2中找到与表main1中相同的的记录,再将需要的信息读取,然后赋值到表main1中的相关字段中,之后指针移到下一条记录,重复上面的过程,直到最后一条记录。
sele 1
use  main1  &&理论成绩表
sele 2
use  main2  &&论文成绩表
sele 1
 do while .not.eof()
   code1变量=code
     sele 2
      loca for  code=code1变量  
       if .not.eof()
         lwcj2变量=lwcj   &&找到同一人并提取论文成绩
         sele 1
         repl  lwcj  with  lwcj2变量   &&将此人的论文成绩添加到表main1的lwcj字段中
       endif
     sele 1
      skip     &&移到下一条记录,重复查找赋值过程。
 enddo
这种做法思路清晰也很容易理解,但时间相对较长,当数据表足够大时,时间明显变慢。
让我们换个思路做一下:
sele 1
  use main1
sele 2
  use main2
inde  on  code  to  ls  &&按code字段建立索引
sele 1
  set relation to code into b additive
 repl  lwcj  with  b->lwcj  for  code=b->code
直接将表main2中的论文成绩添加到表main1的lwcj字段中。
为什么要用第二种方式呢,最大的好处就是快。如果在cup 是486、586的年代这两种方法在时间上的差距是惊人的,即使是在现在的电脑上运行两种程序,也会有明显的差距。
两种编程虽然都可以实现工作要求,但运行体验上给我的感觉是截然不同,本人现在使用的一套软件就存在很多诟病,用户体验感很差,浪费大量时间在等待程序作出响应。作为编程人员应多考虑用户在实际应用中的使用感受与体验,对程序进行优化。想想iPhone为何如此受欢迎,它的ios 系统是功不可没的。
搜索更多相关主题的帖子: 记录 论文 字段 code sele 
2017-08-10 10:52
于建伟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-8-10
得分:0 
回复 4楼 wangzhiyi
2017-08-11 08:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479886-1-1.html




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

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