Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.059 c
1-1159007734
Дмитрий В
2006-09-23 14:35
2006.11.05
Как записать байт в lpt порт


2-1161079352
Dmitry_177
2006-10-17 14:02
2006.11.05
Присвоение одному массиву другого


2-1161331308
+JOIN+
2006-10-20 12:01
2006.11.05
~OUTER ~ INNER JOIN


2-1160898769
Zhekson
2006-10-15 11:52
2006.11.05
как запрограммировать пульт ДУ?


15-1161146287
Layner
2006-10-18 08:38
2006.11.05
WindowsXP: один раз вошел в домен, теперь локально работаю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский