locate会定位到相似记录上?(20分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
query1.Locate('gcmc;gcxm;nf;yf',vararrayof([b1,b2,b3,b4]),[loCaseInsensitive]);
表中主键为: xh(序号),gcmc,gcxm,nf,yf.
外部关键字:gcmc,gcxm.
现有记录。 序号:4 gcmc:56 gcxm:67 nf:1998; yf:12.........
序号:5 gcmc:56 gcxm:67 nf:1999; yf:2
测试时,locate的参数依次为:gcmc:=56,gcxm:=67,nf:=2000,yf:=4
(表中没有nf=2000,yf=4的记录)
结果:序号:4 gcmc:56 gcxm:67 nf:1998; yf:12.........
本来该查无此项的。。。?why?
 
唉,以前出手太大方了,现在分少帮忙的也少了:(
 
试试

query1.Locate('gcmc;gcxm;nf;yf',vararrayof([b1,b2,b3,b4]),[]);
 
经过测试发现只是定位到符合gcmc,gcxm的第一条记录上去。改不改一样的结果。
 
要检查 Locate 返回 false说明查找失败,记录还在原来地方

要返回true才是找到
 
何不用SQL语句来定位
select * from filename
where ........ and ........ and .....and.........
 
同意沈前衛
query1.Locate('gcmc;gcxm;nf;yf',vararrayof([b1,b2,b3,b4]),[]);
這樣應該所有匹配才被列出
 
query1.Locate('gcmc;gcxm;nf;yf',vararrayof([b1,b2,b3,b4]),[]);
 
to cxl_chao;
因为想在query上同时实现向前后移动,所以不能用sql(where..and..)
to all:
如果四个条件都满足,是定位到匹配的记录上(符合要求)。
如果只有部分条件满足,则不知道定位到哪里去了。。。

 
主要还是没有检查 locate 的返回值,
千中元说每次都定位在第一个记录,其实不是定位在第一个记录。
而是 返回了 false (没有找到), 位置是不对的
 
如果不能locate,则指针还在上次的位置。。我以前用query太多了,副迁移:(
接受答案了。
 
结束。thanx
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
680
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
666
import
I
后退
顶部