DataSetBroker2.DataSet.First;
   while not  DataSetBroker2.DataSet.Eof do
   begin
      if DataSetBroker2.DataSet.FieldByName('YHZGX').AsString = '户主' then
      begin
        //...
      end;
      DataSetBroker2.DataSet.Next;
   end;
------------------------
   if DataSetBroker2.DataSet.Locate('YHZGX','户主',[]) then
   begin
     //...
   end;
在上面两个方法中,请问哪个速度会比较快?Locate第三个参数 [] 代表什么意思? 第三个参数loCaseInsensitive怎么写,老是编译不过? 随便在帮解释下面的例子tmp:=LineSeries1.XValues.Locate(EncodeDate(1996,1,1));
if tmp<>-1 then
ShowMessage(FloatToStr(LineSeries1.YValues.Valuetmp));

解决方案 »

  1.   

    FieldByName速度快
    locate 方法之所以效率不高,是因为它需要把所有记录都下载到本地后再进行查找
      

  2.   

    要是算速度,估计是差不多,毕竟运算都是一个数量级的。
    第三个参数你应该去查一下帮助,那是是否区分大小写。
    if DataSetBroker2.DataSet.Locate('YHZGX','户主',[loCaseInsensitive]) then看看locate的方法,最后一个参数应该是一个数组
      

  3.   

    if DataSetBroker2.DataSet.Locate('YHZGX','户主',[loPartialKey]) then
       begin
         //...
       end;
      

  4.   

    刚在做东西,现在转回来看fangsp loPartialKey要引用哪些单元拨?
    [错误]Biz:\SQWSFWGLXT_X_\ZJM\JTJKDAZJM.FUNC.DIR\MainForm.Form.pas(174, 53): Undeclared identifier "loPartialKey"Locate第三个参数中的 [] 代表什么意思?
      

  5.   

    uses ADODB ;if Options contains the loPartialKey setting, then Locate allows partial-string matching on strings in KeyValues
      

  6.   

    Locate貌似是用查找树,性能比价稳定吧。
    []表示集合,[loCaseInsensitive]表示忽略大小写,而[loCaseInsensitive, loPartialKey]表示忽略大小写的模糊定位。
      

  7.   

    尽量不要用LOCATE,效率差而且本身还是有BUG的。