02
2006
05

对比程序的最后测试

  前天我测试完成的程序,尤其是比对那部分,经比对基础数据库和目标数据库,轻松得到对比结果。   为了验证程序的严密性,我用目标数据库的一条记录手在基础数据库中查询,令人不解的是,所得记录竟然多于程序自动分析的结果!   程序中的命令是这样的:select * from a,b where AT(b.品名,a.品名)>0 and AT(b.产地,a.产地)>0。   而手工查询,我是这样做的:select * from a where AT([具体品名名称],品名)>0 and AT([具体产地名称],产地)>0。   仔细分析一下这两个代码,我也没发现差异之处,可是为什么运行的结果却又不一样呢?   百思不得其解之后,我求助于网络,在CSDN的VFP板块上发了一个询问帖。   郁闷的是,我都贴了N个小时,居然都没有人回应,难道今天高手都很忙?   在等待的同时,我不停百度相关资料,也试过用不同的语句,可结果都是程序分析所得远远少于人工查询所得……   一整天,我都在研究这个问题,可是一直得不到解决,而网上的提问又是一直没有人回应,郁闷啊!   快下班的时候,我在网上注意到一个问题:怎么删除字符串前后的空格?脑中灵光一闪:难道是空格问题?B表中部分记录字段值中可能存在空格,程序分析没作相应处理,而手工输入查询的时候,是不会存在空格的,是不是这样的差异导致最终查询结果的差异?   我打开VFP命令窗口,准备验证一下: *********   set defa to E:\对比目录   use b   stopm=品名   stocd=产地   pm2=alltrim(stopm)   cd2=alltrim(stocd)   use   select * from a where at(pm2,品名)>0 and at(cd2,产地)>0   *********   Good!这次运行结果和手工查询结果完全一致,果然是空格在干扰,这下就好办了,程序的语句稍微改一下就行了:select * from a,b where AT(alltrim(b.品名),a.品名)>0 and AT(alltrim(b.产地),a.产地)>0。再次运行,一切Ok了! 呵呵,这个小小的空格问题困扰了我一整天,让我上下求索不得解;再想想以前写HTML,也有类似的情况出现过。   看来,每一个细节往往都是很重要的,绝对不可忽视!
« 上一篇下一篇 »

相关文章:

多个DBF文件合并之蹊跷事件  (2009-5-7 23:48:23)

如何避免表单重复打开?  (2007-8-11 23:26:50)

药品数据分析系统截图  (2007-4-16 13:18:56)

一些很有用的VFP代码  (2007-2-11 10:48:51)

终于结束了,我的数据库!  (2006-4-27 23:39:33)

求助是一条捷径  (2006-4-12 12:44:0)

重拾遗忘的编程  (2006-4-2 22:22:30)

解决网站几个BUG  (2005-11-21 17:5:3)

郁闷的人到深夜  (2005-11-11 20:48:5)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。