| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:请高手看看下面代码哪里有错?
只看楼主 加入收藏
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
结帖率:86.96%
收藏
已结贴  问题点数:10 回复次数:7 
请高手看看下面代码哪里有错?
a=
b=
c=thisform.text1.value
tj=alltri("loca for "+alltri(a)+alltri(b)+"'"+alltri(c)+"'")
&tj
conti
     if eof()
        messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
     else
        go recno()
     endif
thisform.grid1.setfocus
return
例如:
为 账号
为 =
thisform.text1.value 为 123243423
运行结果为:"数据库中不存在您所要查询的记录",其实数据库中有此记录。
如果换成
为 姓名
为 =
thisform.text1.value 为 陈量
运行结果正确。
不知为何?到底代码哪有问题?
搜索更多相关主题的帖子: 数据库 记录 
2012-06-02 21:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用smart921在2012-6-2 21:55:50的发言:

a=
b=
c=thisform.text1.value
tj=alltri("loca for "+alltri(a)+alltri(b)+"'"+alltri(c)+"'")
&tj
conti
     if eof()
        messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
     else
        go recno()
     endif
thisform.grid1.setfocus
return
例如:
为 账号
为 =
thisform.text1.value 为 123243423
运行结果为:"数据库中不存在您所要查询的记录",其实数据库中有此记录。
如果换成
为 姓名
为 =
thisform.text1.value 为 陈量
运行结果正确。
不知为何?到底代码哪有问题?
a= && 什么意思
b= && 什么意思
c=thisform.text1.value  && 什么意思
要学会写注释,如果不注明代码的意思,别人是帮不了你的。
alltri(a)+alltri(b)+"'"+alltri(c)+"'"
结果是什么?这个结果里有字段名吗?
从上面的代码中可以看出a、b、c应该都是字符型变量。
数据表的结构如何,现在也不知道。
你上面的代码写在何处?光看这段代码不一定能找出问题,最好上传与这段代码有关的表单文件及相关的数据表文件。


[ 本帖最后由 sdta 于 2012-6-2 22:55 编辑 ]

坚守VFP最后的阵地
2012-06-02 22:31
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
第一种
tj值是 loca for 账号='123243423'
第二种
tj值是 loca for 姓名='陈量'

看起来可能是账号的字符类型问题吧
2012-06-02 22:47
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
改成下列代码就可以了
a=
b=
c=thisform.text1.value
tj=alltri(alltri(a)+alltri(b)+"'"+alltri(c)+"'")
sele * from hd where &tj into curs asd
thisform.grid1.recordsource="asd"
thisform.grid1.setfocus
return
2012-06-02 23:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
以下是引用smart921在2012-6-2 23:28:10的发言:

改成下列代码就可以了
a=
b=
c=thisform.text1.value
tj=alltri(alltri(a)+alltri(b)+"'"+alltri(c)+"'")
sele * from hd where &tj into curs asd
thisform.grid1.recordsource="asd"
thisform.grid1.setfocus
return
COMBO1中保存的应该是数据表的字段,如果字段中有数值型/日期型/逻辑型,你上面的代码可能就不能正常运行了。
这时应该将非字符型字段的数据类型转换为字符型,才能保证上面的代码正确运行。

坚守VFP最后的阵地
2012-06-03 00:14
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
那是自然。
2012-06-03 00:17
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
非常感谢sdta,给了我不少帮助。
2012-06-03 00:18
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 6楼 smart921
因此应该将上面的代码改写成适应任何数据类型字段的通用代码。

坚守VFP最后的阵地
2012-06-03 00:20
快速回复:请高手看看下面代码哪里有错?
数据加载中...
 
   



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

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