我用 57 楼 的样本数据测试,代码是 50 楼 的 Sdta,算法没有变,只是把 表二的【对照】字段改成了【结果】,最后运算的结果表 Jgb 游标为空,不知道我错在哪里?
肯定有不包含的,比如:表一的 00000、00001 等不包含在表二中的。
* SDTA 50楼的代码:
Close Databases
Set Exclusive On
Set Talk Off
* 生成测试数据表
Create Cursor JGB (不包含 C(3)) && 保存不包含的数据
Use 表1 In 0
Select 表1
Index On 结果 Tag JGB
*BROWSE
* 生成120个不重复三位数据,由小到大排列
Use 表2 In 0
T1=Seconds()
Select 表2
*BROWSE
Scan
Select 表1
Scan
CSTR=结果
For I=1 To 3
NLEN=At(Substr(表2.结果,I,1),CSTR) && 查找替换位置
If NLEN>0
CSTR=Stuff(CSTR,NLEN,1,"")
Endif
Endfor
If Len(CSTR)=2
Exit
Endif
Endscan
If Len(CSTR)>2
Insert Into JGB Values (表2.结果)
Endif
Endscan
Messagebox("共用时:"+Transform(Seconds()-T1,"9999999.999")+" 秒")
* 浏览不包含的数据
Select JGB
Browse
肯定有不包含的,比如:表一的 00000、00001 等不包含在表二中的。
* SDTA 50楼的代码:
Close Databases
Set Exclusive On
Set Talk Off
* 生成测试数据表
Create Cursor JGB (不包含 C(3)) && 保存不包含的数据
Use 表1 In 0
Select 表1
Index On 结果 Tag JGB
*BROWSE
* 生成120个不重复三位数据,由小到大排列
Use 表2 In 0
T1=Seconds()
Select 表2
*BROWSE
Scan
Select 表1
Scan
CSTR=结果
For I=1 To 3
NLEN=At(Substr(表2.结果,I,1),CSTR) && 查找替换位置
If NLEN>0
CSTR=Stuff(CSTR,NLEN,1,"")
Endif
Endfor
If Len(CSTR)=2
Exit
Endif
Endscan
If Len(CSTR)>2
Insert Into JGB Values (表2.结果)
Endif
Endscan
Messagebox("共用时:"+Transform(Seconds()-T1,"9999999.999")+" 秒")
* 浏览不包含的数据
Select JGB
Browse
民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞