Надо сделать отдельную таблицу и работать с ней через DBLookupComboBox. Прописываете для DBLookupComboBox параметры: ListSource (это таблица, откуда будут браться справочные данные, т.е. тот самый "резиновый" список), ListField (поле из справочной таблицы, которое должно отображаться в DBLookupComboBox), KeyField (ключевое поле - первичный ключ с автоинкрементом в справочной таблице), DataSource - источник данных для главной таблицы, и DataField (Integer-поле в главной таблице, в которое будет помещаться код ссылочной записи).
А по частностям... Конструкцию вида "Fields[4]" лучше не используйте, т.к. поле можно случайно перетащить, и функционал нарушится. Точнее и нагляднее будет использование "FieldByName", что-то вроде этого:
Код:
naimen_OLD := fq.FieldByName('Naimen').AsString;
Также Вы можете сократить имена (не использовать дефолтные) - вместо DataModule3 задать dm3, вместо DataSource1 - например, dsZakazy. Кажущаяся потеря времени на указание имён потом с лихвой окупится, т.к. писать код (и читать его!) будет проще.