| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1101 人关注过本帖
标题:下面一段代码迷糊,请行家指教
取消只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:8 
下面一段代码迷糊,请行家指教
SELE 3
USE BM3
ZAP
SELE 1
USE BM1
SELE 2
USE BM2
INDE ON ZKZH TO LS
SELE 1
SET RELA  TO ZKZH INTO B

SCAN
   IF A.ZKZH=B.ZKZH.AND.A.XM<>B.XM
      SELE 3
      APPE BLANK
      REPL ZKZH WITH B.ZKZH,XM WITH B.XM
   ENDIF
ENDSCAN
SELECT 3
BROWSE
请教:1.二表已关联二表指针跟着走,为何还要用scan循环?
      2.SELECT 3 替换后,为何在ENDSCAN 前不用SELE 1,
       不用返回1区吗?
2014-03-30 11:12
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
sdta:
我不懂你的意思?能详细一点?
2014-03-30 11:29
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
在1区查找,查找到的内容到3区替换,为什么SELECT 3替换后不要回到SELECT 1,1区吗,不同区间联访不是要回去吗?
2014-03-30 11:48
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
加与不加结果一样,但道理不懂。
我记得有人说过:
注意:SCAN 语句始终只判断当前工作区中的表文件记
录指针,如结构体中因需要切换了工作区,那么在ENDSCAN
语句前千万要记得再切回原来的工作区。
为什么在此代码中不要加select1
2014-03-30 12:12
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
sdta:
请教的代码,是你以前回答我的问题。当时也没有仔细看,今天认真学后感到为什么在3区替换后不用回到1区?是不是二表关联后可以不回去吗?
SELE 3
USE BM3
ZAP
SELE 1
USE BM1
SELE 2
USE BM2
INDE ON ZKZH TO LS
SELE 1
SET RELA  TO ZKZH INTO B

SCAN
   IF A.ZKZH=B.ZKZH.AND.A.XM<>B.XM
      SELE 3
      APPE BLANK
      REPL ZKZH WITH B.ZKZH,XM WITH B.XM
   ENDIF
ENDSCAN
SELECT 3
BROWSE
2014-03-30 12:51
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
你以前回答时有select 1见符件,
图片附件: 游客没有浏览图片的权限,请 登录注册
2014-03-30 13:02
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
2  T1   1 T

当然好理介,因CREATE CURSOR t1 (f2 c(1))此时的临时表时打开,SCAN ---ENDSCAN 当然是对搜索当前的表,当前表的别名是T1,当加了SELECT t
??SELECT(),ALIAS(),工作区变成T了。
我们二人的理介可能都陷入误区了。
关联时
select 1
SET RELA  TO ZKZH INTO B

SCAN
   IF A.ZKZH=B.ZKZH.AND.A.XM<>B.XM
      SELE 3
      APPE BLANK
      REPL ZKZH WITH B.ZKZH,XM WITH B.XM
   ENDIF
select 1 &&&此处可不加因本身在1区关联。

ENDSCAN
因15楼的图片中代码,它们之间没有关联,所以要加SELECT 1

2014-03-30 16:02
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
TonyDeng:
你的水平真高,关联主表与付表之间的变化,真妙。
我说的是(1)二表关联后使用SACN---DSACN结构体中因需要切换了工作区,联访后要不要返回?试了结果可加可不加,原因是什么?
         (2)二表不关联使用 SACN---DSACN结构体中因需要切换了工作区,联访后要不要返回?
《二表关联》:

SELE 3
USE BM3
ZAP
SELE 1
USE BM1
SELE 2
USE BM2
INDE ON ZKZH TO LS
SELE 1
SET RELA  TO ZKZH INTO B

SCAN
   IF A.ZKZH=B.ZKZH.AND.A.XM<>B.XM
      SELE 3
      APPE BLANK
      REPL ZKZH WITH B.ZKZH,XM WITH B.XM
   ENDIF
select 1  &&这里要不要返回到1区?
ENDSCAN
SELECT 3
BROWSE
[二表不关联:]
use bm3 alias bm3 in 0
zap
USE BM1 ALIAS BM1 IN 0
USE BM2 ALIAS BM2 IN 0
SELECT BM2
SCAN
   SELECT BM1
   SCAN
      IF BM1.ZKZH=BM2.ZKZH.AND.BM1.XM<>BM2.XM
      sele bm3
       appe blank
       repl zkzh with bm2.zkzh,xm with bm2.xm,xm1 with bm1.xm
     ENDIF
    SELECT BM1 &&&要不要回工作区BM1?

   ENDSCAN
  ENDSCAN
SELECT BM3
BROWSE
2014-04-01 17:59
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我理介了关联后为什么要用sacn--因进入了SELECT 1,在子表中作逐一搜索。谢谢各位了。
2014-04-02 10:42
快速回复:下面一段代码迷糊,请行家指教
数据加载中...
 
   



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

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