水流年 xujingyue.com

对比程序的最后测试

  前天我测试完成的程序,尤其是比对那部分,经比对基础数据库和目标数据库,轻松得到对比结果。   为了验证程序的严密性,我用目标数据库的一条记录手在基础数据库中查询,令人不解的是,所得记录竟然多于程序自动分析的结果!   程序中的命令是这样的: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,也有类似的情况出现过。   看来,每一个细节往往都是很重要的,绝对不可忽视!
2006年5月2日 | 发布:徐景岳 | 分类:景岳手记 | 评论:0

发表留言: