首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

Winxp和Win7对查询会有不同的要求,该如何解决

2012-03-26 
Winxp和Win7对查询会有不同的要求姓名(c,8)SELECT * FROM 表1 WHERE 出生年月1990.01.01 INTO CURSOR

Winxp和Win7对查询会有不同的要求

姓名=(c,8)

SELECT * FROM 表1 WHERE 出生年月>'1990.01.01' INTO CURSOR 表2 READWRITE 

SELECT * FROM 表2 WHERE 姓名 not in ( SELECT 姓名 FROM 表1) INTO CURSOR tmp

查询表2姓名不在表1中,因为是同一个表导出来的,在Winxp查询中,无记录,是对的,同样姓名占6位,空格占2位,不管是精确查找还是模糊查询,表2的记录全在表1中,结果一样,但在Win7下就不对了,同样姓名占6位,空格占2位,表2记录全部不在表1中,当然办法是有的,写成下面语句:
SELECT * FROM 表2 WHERE ALLTRIM(姓名) not in ( SELECT ALLTRIM(姓名) FROM 表1) INTO CURSOR tmp
不知道是否还有其他语句不一样,也就是说在Win7下VFP传统语句可能要接受挑战了,一些老的运行程序在Win7下可能达不到需要的效果了,结论是:转换其他语言,现在该是VFP转换那种语言讨论的时候了,特别是老狐狸,及早动手,可能还会延长生命,同样本论坛及早讨论,也同样会延长生命!

[解决办法]
个人感觉不应该是系统的问题。
[解决办法]
我让Win7装不到一个月就让它下岗
不光是因为VFP在它上面运行不正常,另外原因是:
原来在winxp运行正常的其它软件在win7也同样运行不正常

这其它软件是指用ArcGIS9.2开发的第三方地理制图软件
它的说明软件运行环境也没有win7,最高只有winxp sp3
[解决办法]
建表是在VFP环境中还是ADO建立 的?

SELECT * FROM 表2 WHERE ALLT(姓名) not in ( SELECT ALLT(姓名) FROM 表1) INTO CURSOR tmp

SELECT * FROM 表2 A LEFT JOIN 表1 B ON A.姓名=B.姓名 WHERE B.姓名 IS NULL
能否成功
[解决办法]
表1的姓名字段有没有创建过索引?有先删掉看看结果是否不一样

有没有试过程序中加入
Set Optimize Off
-- or --
Set Collate To "MACHINE"

Win7/Vista 下这类问题,通常是它们与以前操作系统的本地化字符集排序规则不兼容导致。
可以这样在 Win7 下测试一下结果:
select * from 表1 into cursor t1 nofilter
select * from 表1 into cursor t2 where 出生年月>'1990.01.01' nofilter
ELECT * FROM t2 WHERE 姓名 not in ( SELECT 姓名 FROM t1) INTO CURSOR tmp

[解决办法]
应该是select 缺少 WITH (BUFFERING=.t.)的原因

热点排行