我用table1.locate(...)查询一个表里的数据,如果表没有索引为什么就查不到呢???????
是不是一定要加索引……
我可不可以先执行一句:table1.indexfieldnames:='..'
然后再用table1.locate(...)查询一个没有索引字段的表呢???

解决方案 »

  1.   

    If ADOQuery1.Locate('Operator;Class',VarArrayOf([dm.Data.Operators.FieldByName('ID').AsString,Lev]),[loCaseInsensitive]) then
      ADOQuery1.Delete;
      

  2.   

    谢谢楼上,不过我用的是table,不是query……………………???
      

  3.   

    我试过了,如果加上table1.indexfieldnames:='userno';
    然后再执行 table1.locate('userno',edit1.text,[]) 可以查到,
    但是在执行表单的 close 方法时会提示错误 …………???
    俺初学delphi,望各位高手指点…………
      

  4.   

    我倒!!!
    indexfieldnames是主子表关联用的
      

  5.   

    用table 是一定要加索引的
    你可以试着用findkey的方法来查询。
    比如:
         with table1 do
         begin
         indexfieldnames:=' ';
         setkey;
         fieldbyname('字段名').asstring:='数值 ';
         if findkey then --------
         ---------
         end;
    你试看看吧,我也是初学者,希望以后能互相切磋:)
      

  6.   

    主子表关联好象是涉及mastersouce属性和masterfield属性的吧。如果使用的是dadaset,如adodataset,则是用datasource属性和masterfield属性。应该是这样的吧!!
      

  7.   

    谢谢 2266(疾风) ,findkey()可以,我用了。
    但为什么我用了indexfieldnames后,在执行表单的close时会出错呢??
    这个表单是主表单…………
      

  8.   

    我也没加主键,也没有索引,
    不过我试过,加了个索引就可以了,但把索引删掉,
    就要执行table1.indexfieldnames ,否则查询不干活…………
    但若执行了 table1.indexfieldnames ,在程序结束时的close时又报错……