标题:联系吹水佬老师
只看楼主
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 30楼 吹水佬
感谢各位老师理解和帮助
2020-04-17 08:05
满江红2018
Rank: 1
等 级:新手上路
威 望:1
帖 子:4
专家分:0
注 册:2020-5-2
得分:0 
如果你只有11个字段的比对,则用SQL比较简单:
CLOSE ALL
CLEAR ALL
SET SAFETY OFF

USE 表8
IF RECCOUNT()=0
  RETURN
ENDIF  
GO BOTTOM
SCATTER FIELDS z59,z60,z61,z62,z63,z64,z65,z66,z67,z68,z69 TO Arr5969   
USE

SELECT H1,H2,H3,Z59,Z60,Z61,Z62,Z63,Z64,Z65,Z66,Z67,Z68,Z69 ;
  FROM 表9.dbf ;
  WHERE ASCAN(Arr5969,Z59)=0 AND ASCAN(Arr5969,Z60)=0 ;
    AND ASCAN(Arr5969,Z61)=0 AND ASCAN(Arr5969,Z62)=0 ;
    AND ASCAN(Arr5969,Z63)=0 AND ASCAN(Arr5969,Z64)=0 ;
    AND ASCAN(Arr5969,Z65)=0 AND ASCAN(Arr5969,Z66)=0 ;
    AND ASCAN(Arr5969,Z67)=0 AND ASCAN(Arr5969,Z68)=0 ;
    AND ASCAN(Arr5969,Z69)=0 ;
  INTO TABLE 表10.dbf     

USE 表10
BROWSE
 
我统计出来有418行,不知道是不是你要的答案。不过,你上面对问题的表述和你提供的程序代码的意思不是太吻合。我只是从你的代码中感觉到你需要的答案。

但如果你有102个字段,则最好用循环了。程序就要作如下修改:
CLOSE ALL
CLEAR ALL
SET SAFETY OFF

USE 表8
IF RECCOUNT()=0
  RETURN
ENDIF  
GO BOTTOM
SCATTER FIELDS z59,z60,z61,z62,z63,z64,z65,z66,z67,z68,z69 TO Arr5969   &&如果有102个字段,可以使用循环构造子句
USE

SELECT 0
USE 表9 ALIAS T9
SELECT 0
USE 表10 ALIAS T10
ZAP

SELECT T9
SCAN
  isExist = .F.
  FOR i=59 TO 69    &&如果有102个字段,此处换一下初始值和结束值就可以了
    cFieldName = 'Z' +LTRIM(STR(i))
    IF ASCAN(Arr5969,&cFieldName)<>0
      isExist = .T.
      EXIT
    ENDIF   
  NEXT
  IF !isExist
    SCATTER MEMVAR
    SELECT T10
    APPEND BLANK
    GATHER MEMVAR   
  ENDIF
  SELECT T9
ENDSCAN

SELECT T9
USE
SELECT T10
BROWSE

[此贴子已经被作者于2020-5-2 19:06编辑过]

2020-05-02 18:12



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




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

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