Cada instrucción locate busca 1 valor, por tanto, si en el if tienes 3 locates, se realizan 3 búsquedas distintas, es decir, el registro encontrado tendrá Fin_T01, pero no tiene que cumplir las otras 2 condiciones.
Necesitas hacer una búsqueda por los 3 parámetros juntos a la misma vez, mira la ayuda de TCustomADODataSet.Locate
Código Delphi
[-]
with ADOTable1 do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
Aqui si se busca 1 registro en el que coincide la compañia, el contacto y el número de telefono con los datos suministrados.
Por otra parte, en el else tienes un Edit, y justo despues un Append ¿?¿?¿
Un saludo