![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#8
|
|||
|
|||
|
Не думаю, что проблема в аксесе. Напиши меил - кину прогу.
Попробую еще раз объяснить что мне нужно. Видимо получилось непонятно. ![]() 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; |