在一个paradox的数据库中,使用table1.locate会出现定位不准的情况么?
例如,我的数据库中有如下字段:
                F1       A    6
                F2       A    20 
                F3       A    18
            
                ……
        每次往该数据库中插入数据的时候都先检测F1与F3是否已经存在,如果存在,
则覆盖原来的记录,如果不存在,则添加新记录。
         检测时,用到table1.locate('F1',f1,[]);
                 和table1.locate('F2',f2,[]); 分别检查
     请问用locate是否会出现定位不准的情况?即:库中明明存在一样的值,却没有检测出来,使得locate返回false???
     
    注:数据库中没有定义主键。  

解决方案 »

  1.   

    ??????who can help me????? 在加上一百分。
      

  2.   

    你用的是delphi6.0还是5.0.
    5.0会有这种情况, 你装上d5,或d6的补丁就会解决这个问题.
      

  3.   

    我用的是Delphi6.0,
     语句没有写错阿,测试的时候也通过了,能够正常判断出来。
     但是现在客户正式用的时候才发现。:( 
     而且,我刚才又取出数据库中的字段值,赋给变量zjhm,然后再查,Locate仍然返回false! 
     If  tabledk.Locate(‘zjhm',zjhm,[LocaseInsensitive]) then  //如果找到
         begin
          tabledk.Edit;
          tabledk.Delete;
         end;
     
     但也不是没一条记录都这样,有时候能正确返回。
     怎么回事???
      

  4.   

    装上d6的sp1.我遇到过这种情况。
    或者
    我也曾经在Query 的onRecordfilter事件中调用Locate语句 
    字段值若为字符串则不能定位,查help 
    将字段值类型 改为variant即可 
      

  5.   

    谢谢My_first(小@_@小) 
     可是将字符串更改为Variant类型仍然不行。你所说的spl哪里有?
     我刚才打开数据库(paradox的)看了一下,好像记录显示不全。
     是不是因为paradox的容量限制?可是my god,现在才2000条记录啊。
      

  6.   

    spl在www.playicq.com有下。先注删。再找找。或者到
    www.google.com找,delphi6 补丁.