Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Поиск в БД   Найти похожие ветки 

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

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


 
Ketmar ©   (2006-10-17 20:24) [1]

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


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

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


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


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

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


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

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


 
Loginov Dmitry ©   (2006-10-17 20:37) [4]

типа:

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


 
Chort ©   (2006-10-17 20:46) [5]

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


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


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

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


 
Desdechado ©   (2006-10-17 20:58) [7]

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


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


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

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


 
Chort ©   (2006-10-17 22:04) [9]


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

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


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


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

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

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

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


 
Chort ©   (2006-10-17 23:22) [11]


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

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

да вроде как все быстро решается. Фильтруем по условию(можно сразу два)
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;

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


 
MsGuns ©   (2006-10-18 10:27) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.072 c
15-1160580008
Ломброзо
2006-10-11 19:20
2006.11.05
Складской вопрос


2-1161063939
svt
2006-10-17 09:45
2006.11.05
Мастера, подскажите как сделать так, чтобы


2-1161165985
Samson
2006-10-18 14:06
2006.11.05
MDI приложение, выравнивание дочерних окон


2-1161494250
Любовь
2006-10-22 09:17
2006.11.05
delphi


4-1150724006
novill
2006-06-19 17:33
2006.11.05
Заняты ли "горячие клавиши"? Или получить список активных?