Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в БД [D7]


Golik ©   (2006-10-17 20:11:00) 

Вечер Добрый !
только не пинайте меня за такой вопрос !
есть БД Access, с которой форма связанна через ADO,база содержит список квартир, поля в ней такие:
-Этаж,
-Кол-во комнат,
-Общая площадь,
-Жил.Площадь,
-Кухня,
-Район города,
-Состояние
-планировка.
---------------------------------------------------------------------------------------
есть форма "поиска" на которой расположенны CheckBox(ы):
1 комнатная,2-х комнатная,и т.д.
и еще Edit(ы):  Общ.пл ("от" и "до"),Жил.Пл ("от" и "до"),Кухня ("от" и "до"),Этаж("от" и "до").
Например: Звонит мне клиент который хочет купить квартиру и мне по телефону диктует нужные ему параметры квартиры [B]Общ.пл ("от" и "до"),Жил.Пл ("от" и "до"),Кухня ("от" и "до"),Этаж("от" и "до")[/B], я все это ввожу в поля ввода,указываю какие мне надо CheckBox(ы): 1,2,3 комнатную или же неважно(выбираю все).
как организовать поиск немогу сообразить с чего начать ?
SQL - запрос с параметрами так ?
ну а как определить какие параметры я указал а какие не надо учитывать ?
может кто-нибудь стоящее подсказать ?


MsGuns   (2006-10-18 10:27:00) [1]

1. Приложение сделать как MDI-интерфейс. Для того, чтобы параллельно можно было смотреть результаты сколь угодно многих запросов. Сделать таблицу заявок, куда из отображаемых датасетов помещать выбранные варианты по заявке. Заявки просмотаривать в отдельной форме.
2. Никаких фильтров. Все делается исключительно запросами - из БД выбираются записи по динамически(парметрический или нет - роли особой в данном случае не играет) составленному запросу, затем в датасете сервис поиска и сортировки.
3. Добавить в БД сущности "реэлторы", "заказчики", "клиенты", "расчеты", "обязательства", которые увязать друг с другом, заявками и имеющимся в БД фондом недвижимости.
4. Дополнить это приложение или написать новое для работы с электронной почтой (рассылка, входной контроль и т.д.)


Chort   (2006-10-17 23:22:00) [2]


> Может мы про разные фильтры говорим/думаем ... ?

возможно.
> Про то что быстее написать - так мне кажеться - одинаково
> быстро (медленно).

да вроде как все быстро решается. Фильтруем по условию(можно сразу два)
function TForm1.GetFilterString: string;
begin
 result:='';
 if DiscsTable.FieldByName('id').AsInteger<>ALL_DISCS_ID then begin
   result:='Discs='+ DiscsTable.FieldByName('id').AsString
 end;

 if (FilterEd.Text<>'') and (ActFilterOn.Checked) then begin
   if result<>'' then result:=result+' AND ';
   result:=result+'ProductName like ' + QuotedStr('%'+FilterEd.Text+'%');
 end;
end;

Это так, пример(с моей проги).
Хотя может я и не прав.


saxon   (2006-10-17 22:17:00) [3]


> Chort ©   (17.10.06 22:04) [9]

Что Вы понимаете под "убрать ненужную инфу с таблицы", ну и почему это - "Только вот Фильтр быстрее будет написать"?
Может мы про разные фильтры говорим/думаем ... ?

Если имееться ввиду тот фильтр - который на клиенте (я как раз про него), то подумайте, зачем тащить из базы надцать миллионов записей, если ни одна не удовлетворяет условиям клиента (в смысле потенциального покупателя/нанимателя - в рамках описанной задачи)? Иначе поясните.

Про то что быстее написать - так мне кажеться - одинаково быстро (медленно).


Chort   (2006-10-17 22:04:00) [4]


> Чем же фильтр лучьше?

чтоб убрать ненужную инфу с таблицы. Воспользоваться несколькими фильтрами. хотя и поиск будет нормальный(если его сделать). Только вот Фильтр быстрее будет написать.


saxon   (2006-10-17 21:05:00) [5]


> Desdechado ©   (17.10.06 20:58) [7]

можно и не налету, - вызывать запрос из Access. > С параметрами, естественно.


Desdechado   (2006-10-17 20:58:00) [6]

Фокус в формировании текста запроса "налету". С параметрами, естественно.


saxon   (2006-10-17 20:55:00) [7]


> Chort ©   (17.10.06 20:46) [5]

Чем же фильтр лучьше?


Chort   (2006-10-17 20:46:00) [8]

сделай лучше фильтр.


Loginov Dmitry   (2006-10-17 20:37:00) [9]

типа:

with TAdoQuery.Create(nil) do
try
 ....

 SQL.Text :=
   'SELECT * FROM Table T'#13#10+
   'WHERE T.RoomCnt = :RoomCnt AND'#13#10+
   '      T.CommonArea BETWEEN :LoArea AND :HiArea';

 ParamByName('RoomCnt').AsInteger := RoomCnt;
 ParamByName('LoArea').AsFloat := LoArea;
 ParamByName('HiArea').AsFloat := HiArea;

 Open;

 ....

finally
 Free;
end;


это если такое прокатывает в ADO


Palladin   (2006-10-17 20:32:00) [10]


> как параметры туда

можно конкатенацией строк, можно используя синтаксис параметров ADO


> какие передать

ну как какие - правильные, нужные - какие они еще там бывают...


Golik   (2006-10-17 20:27:00) [11]

это понятно что надо импользовать SQL запрос ! а вот как параметры туда и какие передать ?


Ketmar   (2006-10-17 20:24:00) [12]

начать с изучения SQL, например.


Наверх

Титульная страница Поиск, карта сайта Написать письмо