Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #8  
Старый 02.11.2010, 12:18
gjtrd gjtrd вне форума
Прохожий
 
Регистрация: 29.10.2010
Сообщения: 14
Репутация: 10
По умолчанию

Не думаю, что проблема в аксесе. Напиши меил - кину прогу.

Попробую еще раз объяснить что мне нужно. Видимо получилось непонятно.

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;
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025