以下是程序代码:
TblEmployee.Locate('Num',TblManagerPre.FieldByName('Num').AsString,[loPartialKey]);
        If TblEmployee.Found then
        Begin
          TblEmployee.Edit;
          TblEmployee.FieldByName('Times').AsInteger:=TblEmployee.FieldByName('Times').AsInteger + 1;
          TblEmployee.Post
        end
        else
        Begin
          TblEmployee.Append;
          TblEmployee.FieldByName('Num').AsString:=TblManagerPre.FieldByName('Num').AsString;
          TblEmployee.FieldByName('Times').AsInteger:=TblEmployee.FieldByName('Times').AsInteger + 1;
          TblEmployee.Post;
        end;TblEmployee表中明明有符合条件的记录,为何条件语句执行的却是else以后的语句?真不明白,特来请教。

解决方案 »

  1.   

    property Found: Boolean;DescriptionCheck the status of Found to determine if a call to FindFirst, FindLast, FindNext or, FindPrior succeeds. If Found is True, success is indicated. If False, the move to a different record failed.
    found 對locate 無效
      

  2.   

    那该如何判断是否Found了呢?
    使用Locate以后,如何判断是否找到符合条件的记录呢?
      

  3.   

    Locate returns True if it finds a matching record, and makes that record the current one. Otherwise Locate returns False.
    看幫助嘛
      

  4.   

    TblEmployee.Locate('Num',TblManagerPre.FieldByName('Num').AsString,[loPartialKey]);
            If TblEmployee.Found then直接改为
    ifTblEmployee.Locate('Num',TblManagerPre.FieldByName('Num').AsString,[loPartialKey ]) thenLocate不成功时本身会返回false成功则返回true
      

  5.   

    同意楼上的,找不到locate会是fasle
      

  6.   

    直接用Locate的返回只判断。
    在locate前面加一句:tblEmployee.first;
      

  7.   

    Locate不成功时本身会返回false成功则返回true