Locate 就是返回一条纪录的拉!

解决方案 »

  1.   

    locate在table中用法和findkey一样,就是更强大一些,它可以不需要根据索引来查询.
    它只是移动油标到你想要的纪录上.
    if table1.locate('FieldName1;FieldName2',[val1,val2],[]) then
    Table1.Delete;
      

  2.   

    不是delphi问题,帮助里说的对,是你的用法有错误,我曾经回答过这个问题,具体怎么用我忘了,你把 VarArrayOf([Value1],[Value2]),[]) 变成VarArrayOf([Value1],[Value2]),[search]) 试试。肯定可以查两个字段的,如果没有查到会返回false。
      

  3.   

    补充我的回答
    if Locate('field1;field2;field3', VarArrayOf([val1,val2, val3]), [loPartialKey]) then
    Table1.Delete;
    在loPartialKey的位置有两个参数可选,
    TLocateOption = (loCaseInsensitive, loPartialKey);loCaseInsensitive不在乎大小写
    loPartialKey部分匹配条件
      

  4.   

    xiaonanw(小南)  TLocateOptions中没有search,编译出错。麻烦你在想想。
    ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子:
    with CustTable do
      Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]);
    我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
     
      

  5.   

    xiaonanw(小南)  TLocateOptions中没有search,编译出错。麻烦你在想想。
    ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子:
    with CustTable do
      Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]);
    我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
      

  6.   

    if DataModule1.FSJHTable.Locate('ZYDH;SFDM;KLDM',VarArrayOf([Copy(ComboBox1.Text,1,2),DataModule1.TJSTable['SFDM'],DataModule1.TJSTable['KLDM']]),[]) then
        begin
          if DataModule1.FSJHTable['SYRS']=0 then
            begin
              ShowMessage('该专业已录满!');
              Abort;
            end;
         end
       else
        begin
          ShowMessage('无此专业!');
          Abort;
        end;
      

  7.   

    locate一旦查到符合条件的纪录,便自动指向改纪录、不会继续查找
      

  8.   

    换Query是可以的,但我想搞清楚是怎么回事。
      

  9.   

    locate EXP
    do while not EOF begin
      ..........
      locatenext
    end;
      

  10.   

    while locate(...) do delete
      

  11.   

    locate就是这样。
    还是用TQUERY吧,
      

  12.   

    LOCATE一定是移动记录指针到符合检索条件的第一个数剧列,如果你使用TABLE你可以使用
    FILTER 或 RANGE
      

  13.   

    还是用query吧,如果数据库大了你会受不了的
      

  14.   

    用sql语句查其是否存在
    然后用sql语句删除
    再刷新一下就可以了
    select count(*) cccount from ....where ....