Record not found ???

This is REALLY weird to me.  Here is the situation:

ADODataConnection is to an Access97 database. I have a form with 3 DBGrids
on it.  Each DBGrid uses an ADOTable as its source.  Here are the table
keys:

ADOBuilding - Key on Project(string),Building(integer)
ADOContract - Key on Project(string), Building(integer), Contract(integer)
ADOTakeoff - Key on Project(string), Building(integer),TakeoffNbr(integer)

Both ADOContract and ADOTakeoff have ADOBuilding as their MasterSource with
Masterfields Project;Building.

Each Takeoff has a data field "Contract" and what I'd like to do is, as I'm
scrolling through the Takeoff grid, have the Contract grid move to the
appropriate Contract.
So I put the following code in the ADOTakeoffAfterScroll event:

var
 currentcontract : integer;
begin
  currentcontract := self.ADOTakeoffsContract.asinteger;

datamodule2.ADOContracts.Locate('Contract',currentcontract,[loCaseInsensitiv
e]);
end;

And it works!  Most of the time....
There is one record with a contract value of "4" that always generates a
"ADOContracts: Record Not Found" error.  I see contract "4" in my
ADOContract grid (sorted in the right order)!  ANY THOUGHTS???

For what it's worth:
This only is a problem with Contract 4 for one building, for other buildings
and other projects everything is fine... it appears to be just one record.
If I look at the table via Access it also appears sorted via the key and the
contract in question is visible.  BUT, when I look at the table in the
Database Desktop the record in question is NOT in the right place per the
table key.