![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в БД [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, например.