如果用select..where那么会将不符合条件的记录过滤掉。那和模糊定位的概念不一样了。
用LOCATE方法,它只能从字段内容开始部分进行模糊定位,但当如果要定位的条件是中间或后面的部分,那如何实现?还请各位大侠指点,谢谢!  

解决方案 »

  1.   

    select ...where 字段 like '%...%'like 是用来模糊查询的  %是通用匹配符,具体看SQL帮助
      

  2.   

    模糊定位你应该说清楚具体定义.不要以为模糊就是没定义.
    我认为两步
    1.WHERE 条件语句联合你的模糊的定义的条件,比如满足条件的第三条.得到主键的值.
    select keyid
    from 
    (
    select keyid
    from table
    where cri..... 
    )
    where monotonic()=3;
    2.再以主键值进行定位.
    LOCATE语句我不熟,你自己写了.
      

  3.   

    晕!我是要模糊定位!不是模糊查询!
    /////////////////
    可以这样
    Filter:=false;
    Filter='字段 like ''%值%''';
    Filtered:=true;
      

  4.   

    我是想实现这个功能。
    例:在一个表格中有1000条记录,指定条件后,光标就跳到该记录上,而我不想过滤掉不符合条件的记录。用filter,select .. where ... like '%..%'都会将不符合条件的记录过滤掉。
    而locate就可以直接定位,但有一问题是,locate在模糊定位时,只能从内容的开始部分进行模糊,如'12345abcd',对该内容进行模糊定位的话,locate('123',...)可以定位到该条记录,但用locate('abc'...)就不能定位到该条记录了。
    我想要问的就是如何实现locate('abc'...)也可以定位到该条记录,而不是用filter,like等过滤方式。还请各位大侠指点!谢谢 !
      

  5.   

    用loacate不能實現,我跟你說,要實現你自己寫一個過程
      

  6.   

    举个例子:procedure LoacteRecord(aDataSet:TDataSet,Values);
    var
      tmpstr:string;
    begin
      with aDataSet do
      begin
        DisableControls;
        Filtered:=false;
        Filter:='字段1 like ''%'+'abc'+'%''';
        Filtered:=true;
        str:=FieldByName('字段1').AsString;
        Filtered:=false;
        Locate('字段1',str,[loCaseInsensitive]);
        EnableControls;
      end;
    end;
      

  7.   

    caike(ck) ( ) 信誉:92 
    ...........
    第一你该早点说清楚你的要求.不过要求还算写得清晰.
    第二,看看我的思路吧.只是要分两步走.
      

  8.   

    这好办哪, 例如你要定位到 "字段1" 中包含 "abc" 的记录上:with dataset do
    begin
      First;
      DisableControls;
      while not Eof do
      begin
        if pos('abc', FieldByName('字段1').AsString) <= 0 then
          Next
        else Break;
      end;
      EnableControls;
    end;大概是这个意思,我没调试这段代码。
    你调试一下,执行起来了就达到你的目的了。