Не думаю, что проблема в аксесе. Напиши меил - кину прогу.
Попробую еще раз объяснить что мне нужно. Видимо получилось непонятно.
1. До применения поиска все работает отлично. При нажатии на одну из квартир показываются только ее жильцы, при нажатии на какой-нибудь дом показываются только квартиры из этого дома. То есть со связью таблиц проблем нет.
2. Начинаю делать поиск по полям Dom.God, Dom.Comment, Zilci.FIOHost, Zilci.Pasport. В Квери, к которому подключены таблица Dom и первый ДБГрид, передаю запрос.
fDM.adoquery3.sql.add('Select Distinct D.*');
fDM.adoquery3.sql.add('From Zilci as z, Kvart as K, Dom AS D');
fDM.adoquery3.sql.add('where (Z.Flat=K.Flat) and (Z.Address=K.Address) and (K.Address=D.Address) and ((Z.FIOHost LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.GOD LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.Comment LIKE '+#39+'%'+edit1.text+'%'+#39') OR (Z.Pasport LIKE '+#39+'%'+edit1.text+'%'+#39'))');
В Таблице DOM ключевое поле Address
В Таблице Kvart ключевые поля Address и Flat
В Таблице Zilci ключевые поля Address, Flat, ID_Zilci
В итоге, ввожу я в Эдит1 фамилию жильца. Этот запрос, ясное дело, выводит мне в верхнем гриде дом, в котором живет этот жилец.
ПЕРВЫЙ ВОПРОС:
Как сделать так, чтоб в первом гриде выводился только тот дом, в котором живет жилец, во втором гриде только та квартира, в которой живет жилец, в третьем только нужный жилец.
ВТОРОЙ ВОПРОС:
насколько неадекватен мой способ решения проблемы.

Я в обработчике кнопки пишу следующий код:
fDM.adoquery3.active := False;
fDM.adoquery1.active := False;
fDM.adoquery2.active := False;
fDM.adoquery3.sql.clear;
fDM.adoquery1.sql.clear;
fDM.adoquery2.sql.clear;
fDM.adoquery3.sql.add('Select Distinct D.*');
fDM.adoquery3.sql.add('From Zilci as z, Kvart as K, Dom AS D');
fDM.adoquery3.sql.add('where (Z.Flat=K.Flat) and (Z.Address=K.Address) and (K.Address=D.Address) and ((Z.FIOHost LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.GOD LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.Comment LIKE '+#39+'%'+edit1.text+'%'+#39') OR (Z.Pasport LIKE '+#39+'%'+edit1.text+'%'+#39'))');
fDM.ADOQuery1.sql.Add('Select Distinct K.*');
fDM.adoquery1.sql.add('From Zilci as z, Kvart as K, Dom AS D');
fDM.adoquery1.sql.add('where (Z.Flat=K.Flat) and (Z.Address=K.Address) and (K.Address=D.Address) and ((Z.FIOHost LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.GOD LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.Comment LIKE '+#39+'%'+edit1.text+'%'+#39') OR (Z.Pasport LIKE '+#39+'%'+edit1.text+'%'+#39'))');
fDM.ADOQuery2.sql.Add('Select Distinct Z.*');
fDM.adoquery2.sql.add('From Zilci as z, Kvart as K, Dom AS D');
fDM.adoquery2.sql.add('where (Z.Flat=K.Flat) and (Z.Address=K.Address) and (K.Address=D.Address) and ((Z.FIOHost LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.GOD LIKE '+#39+'%'+edit1.text+'%'+#39') OR (D.Comment LIKE '+#39+'%'+edit1.text+'%'+#39') OR (Z.Pasport LIKE '+#39+'%'+edit1.text+'%'+#39'))');
fDM.adoquery2.active := true;
fDM.adoquery1.active := true;
fDM.adoquery3.active := true;