Или я чего-то не понимаю или лыжи не едут.
Зачем в вашем случае вообще искать что-то на форме? Вы же фактически работаете с текущим значением:
Код:
dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK']
Не проще написать сразу?
Код:
if dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK']='СПЕЦИАЛЬНОСТЬ') then