Вообще в таких случаях следует пользоваться параметрами:
Код:
ADOQuery2.SQL.Text:='select fam from aaa where Code=:Code';
ADOQuery2.Parameters.ParamValues['Code'] := Edit3.Text;
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Text:='select * from aaa';
ADOQuery2.Active:=False;
ADOQuery2.Active:=True;
Строку запроса складывают по частям в иных случаях, например, когда в качестве параметра выступает таблица.
Только непонятно, что у вас тут просходит. Вы делаете выборку из таблицы 'aaa' в никуда, потом сразу меняете запрос и выбираете все данные из таблицы. Зачем тогда первый запрос?