以下代码,运行结果,百思不得其解,请教高手、大虾!!!!(up有分)

lyq 2001-12-21 01:55:15
table2.first;
if table2.Locate('xmbh',xmbh.text,[]) then
begin
showmessage('找到了');
table1.edit;
table1.fieldbyname('xm').asstring:=table2.fieldbyname ('xm').asstring;
table1.post;
...
end
else
showmessage('未找到此编号');

假如库中有1,2,3,4,5几个编号。 用filter过滤掉3,4时,然后输入值运行程序,假如输入2时,提示‘找到了’,假如输入6时提示‘未找到’,假如输入3时吗都没有,却返加了5这条记录的值,太可恶了。
...全文
162 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyq 2001-12-21
  • 打赏
  • 举报
回复
只好改用adoquery,多谢大家帮忙,改locate的第三个参数为loCaseInsensitive,但没有解决,不知是什么原因。
S_caijing 2001-12-21
  • 打赏
  • 举报
回复
如果没有找到,当然就默认到了那一条了!你写的参数是什么?肯定是loPartialKey,改用loCaseInsensitive试试。
抱朴守拙 2001-12-21
  • 打赏
  • 举报
回复
upupupup
知足常乐 2001-12-21
  • 打赏
  • 举报
回复
upupupup
lyq 2001-12-21
  • 打赏
  • 举报
回复
但确实出现这样的问题,我想也应该是过滤掉后就不会再找到或出现意外的问题,但的确是输入3时返回了5记录所在的记录,不信大家试一试
jorgeww 2001-12-21
  • 打赏
  • 举报
回复
up好了
cobi 2001-12-21
  • 打赏
  • 举报
回复
他说的是返回了第5这条数据,按道理就是不属于过滤条件的记录。
如果你对过滤条件存在疑问的话,可以在过滤之后就查看数据表的返回内容
当执行你的代码的时候,再检查你的数据库游标所在
suny_2001 2001-12-21
  • 打赏
  • 举报
回复
同意zwhhwz(copy&paste)
只要过滤后,以后形成的都是过滤后的,除非你重新过滤
输进去5时,返回5条,肯能是重新把数据库过滤了一遍。选出全部的。
yopeng 2001-12-21
  • 打赏
  • 举报
回复
up!up!
962veiri 2001-12-21
  • 打赏
  • 举报
回复
?????
renren6250 2001-12-21
  • 打赏
  • 举报
回复
up一把
hnxyy 2001-12-21
  • 打赏
  • 举报
回复
up!up!
zwhhwz 2001-12-21
  • 打赏
  • 举报
回复
当然是过滤后形成的部分表
长弓落日 2001-12-21
  • 打赏
  • 举报
回复
up!
suny_2001 2001-12-21
  • 打赏
  • 举报
回复
很简单,找到了就写到TABLE1里去,然后提示。
找不到就提示。如果你TABLE2过滤掉了,当然就找不到。你3输进去也应该找不到。2输进去就应该定位于2这条记录,至于输进去5时,返回5条,肯能是重新把数据库刷新了一遍。
反正这么简单的代码,你自己看一下就好了。
lyq 2001-12-21
  • 打赏
  • 举报
回复
程序已经编好,不想再换控件,我就是想问过滤以后的表用locate操作的范围,是整个表,还是过滤后形成的部分表。
caoyq 2001-12-21
  • 打赏
  • 举报
回复
听不懂!
baddy 2001-12-21
  • 打赏
  • 举报
回复
不明白
刘志飞 2001-12-21
  • 打赏
  • 举报
回复
为什么一定要用TABLE呢,用QUERY不就没这问题了吗?
jimw 2001-12-21
  • 打赏
  • 举报
回复
up一把
加载更多回复(1)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧