标题:为什么运行结果不一样.vfp6 与 vfp9
只看楼主
cy36245253
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-19
结帖率:100%
已结贴  问题点数:20 回复次数:12 
为什么运行结果不一样.vfp6 与 vfp9
sele * from jc where alltrim(byzx)+alltrim(bhxh) in (sele ALLTRIM(hc) from cx) 为什么同样的语句在vfp6与vfp9运行出来的结果不一样.vfp6正确.前提cx数据库中有空记录.请高手解答一下.谢 问题出在哪儿,同样的语句,vfp6与vfp9中运行结果竟然不
表.zip (5.29 KB)
一样.
搜索更多相关主题的帖子: 记录 where 数据库 
2014-05-06 11:13
cy36245253
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-19
得分:0 
附件中表xjc改为cx
2014-05-06 11:20
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:5 
你xjc中没hc列 你怎么运行你的语句?
2014-05-06 12:01
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
你xjc中只有一个记录
2014-05-06 12:02
cy36245253
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-19
得分:0 
不好意思.上传的数据库有点问题,现在重新上传数据库,请高手指点一下.研究vfp多年,这个问题真没找到答案.
表.rar (5.11 KB)
2014-05-06 14:32
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
得分:5 
sele * from jc where alltrim(byzx)+alltrim(bhxh) in (sele ALLTRIM(Hc) from cx where not  EMPTY(ALLTRIM(hc)))
vfp 9 中这样写吧
2014-05-06 17:03
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
sele * from jc where alltrim(byzx)+alltrim(bhxh) in (sele hc from cx)
2014-05-06 17:13
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:5 
    ewewewewewew

泉城飞狐
2014-05-06 20:42
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
改为:sele * from jc where alltrim(byzx)+alltrim(bhxh) in (sele hc from cx) 即可在 VFP 9 下正确执行。

该问题我已经在多个场合解释过,现在我再解释一遍。原代码是 sele * from jc where alltrim(byzx)+alltrim(bhxh) in (sele ALLTRIM(hc) from cx),其中有问题的部分是后面的 sele ALLTRIM(hc)

select 后面的字段是表达式时,一定要留足字段长度,因为返回结果的字段长度是以第一条返回记录的结果来定义的。cx.dbf 表共有 3 条记录,其中有 2 条是空记录,这样,返回查询结果时,若首条记录正好是空白记录,则因为 ALLTRIM(hc) 返回空字符串,则返回结果的字段长度被定义为 0。所以后续的“403318065”也无法存储。这也就不难理解在 VFP 9.0 下执行原代码返回的查询结果是 jc.dbf 表的所有记录。我一般使用 CAST()函数对表达式的数据类型进行二次定义来避免出现该问题,如:sele * from jc where alltrim(byzx)+alltrim(bhxh) in (select cast(ALLTRIM(hc) as C(9)) from cx)
收到的鲜花
  • tlliqi2014-05-07 07:29 送鲜花  10朵   附言:有道理

泉城飞狐
2014-05-06 21:22
cy36245253
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-19
得分:0 
再追问一下,我就知道到同样的语句,为什么vfp6与vfp9执行的查询结果不一样.是不是因为vfp6与vfp9工作机理不一致.纳闷在这儿.
2014-05-07 08:53



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




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

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