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

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

Поговорим о поиске в БД! [D7, XP]


Страницы:   1 2

7D7 ©   (2006-08-03 06:33:00) 

Здравствуйте! Возникла у меня проблема с БД(содал при помощи Database Desktop,BDE Admin., DataSourse,Table и DBGrid на драйвере ПАРАДОКС). Мне нужно сделать поисковик! Допустим, когда я хочу найти в базе данных все крассные карандаши, то

procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.SetKey;
Table1.FieldByName('Color').AsString:=Edit1.Text;
Table1.GotoKey;
end;

программа наведет фокус на найденный карандаш, а мне надо что бы она выводила все найденные карандаши! Слышал,что это можно осуществить методом деления Отрезков пополам! Знающие люди помогите! Что это за метод и как он осуществляется в Делфи? Может кто знает другие пути для поиска?Буду рад всем советам!


Плохиш   (2006-08-16 11:04:00) [21]


> 7D7   (16.08.06 02:26) [11]

Забыть то, что написано в [3] и читать до полного просветления то, что написано в [4] и [5].

> Virgo_Style ©   (16.08.06 07:59) [12]
> текст запроса-результата какой?

Давай я тебе скажу :-)
1 строка: select...
2 строка: select...


Virgo_Style   (2006-08-16 08:56:00) [22]

Sergey13 ©   (16.08.06 8:20) [13]
действительно.

И еще, на будущее... есть у меня подозрение, что Button1 может быть Click много раз, а WHERE из запроса не вычищается... Если поля для поиска неизменны, то параметры тут действительно самое оно.


Sergey13   (2006-08-16 08:20:00) [23]

> query1.SQL.Add('WHERE predmet='+(edit1.text)+'color='(edit2.Text));
>
> query1.SQL.Add('WHERE predmet="карандаш" and color="red"');

Разница заметна?
И вообще, на будущее, в подобных запросах лучше работать через параметры.


Virgo_Style   (2006-08-16 07:59:00) [24]

текст запроса-результата какой?

p.s. для нового вопроса, вообще-то, следовало завести новую ветку.


7D7   (2006-08-16 02:26:00) [25]

Здравствуйте! У меня появился еще один вопрос. Создаю вот эту базу(которую описал выше), в свойстве query1.SQL пишу:

SELECT * From имя табл.

далее на форму вешаю  два Edit и button:

procedure TForm1.Button1Click(Sender: TObject);
begin
query1.SQL.Add('WHERE predmet='+(edit1.text)+'color='(edit2.Text));
query1.Open;
end;


но это неверно! Ругается "Missing operator or semicolon". Так вот, подскажите пожалуйста, как сделать чтобы при вводе в Edit1 и Edit2(эдиты являются условием поиска) по нажатию кнопки происходила выборка в базе. Делаю так все ок:

query1.SQL.Add('WHERE predmet="карандаш" and color="red"');

заранее благодарен!


Lexmark   (2006-08-06 06:51:00) [26]

Шутку понял)))))


Johnmen   (2006-08-04 09:17:00) [27]


> "дневник для 3 класса"


Есть. Полный двоек...


Sergey13   (2006-08-04 08:26:00) [28]

> [6] Desdechado ©   (03.08.06 11:19)

Я все таки надеюсь, что нет у автора сущностей типа "ластик", "обложка для тетрадки" или "дневник для 3 класса". 8-)


7D7   (2006-08-04 03:49:00) [29]

Опа! Скока советов))! Пасибки! Пойду пробовать!


Desdechado   (2006-08-03 11:19:00) [30]

Sergey13 ©   (03.08.06 11:07) [5]
Все зависит от предметной области. Может, карандаш - это отдельная сущность. Тогда мой вариант.
А может, просто один из множества видов товара. Тогда твой.


Sergey13   (2006-08-03 11:07:00) [31]

> [3] Кирей   (03.08.06 10:57)
> [4] Desdechado ©   (03.08.06 11:04)
Я все таки надеюсь, что
query.SQL.Text:='SELECT * FROM Table WHERE что='КАРАНДАШ' and цвет="красный"';


Desdechado   (2006-08-03 11:04:00) [32]

query.SQL.Text:='SELECT * FROM Карандаши WHERE цвет="красный"';
query.Open;


Кирей   (2006-08-03 10:57:00) [33]

1 вариант:
Table1.filter:='Color=красный'
Table1.Filtered:=true;

2 вариант:
query1.sql.add('Select * from "имя таблицы" where color="красный"');
query1.Open;


Сергей М.   (2006-08-03 08:37:00) [34]


> Слышал,что это можно осуществить методом деления Отрезков
> пополам


Это слегка из другой оперы)

Твоя же задача решается проще - установкой фильтра

см. свойства TTable.Filter , TTable.Filtered


ORMADA   (2006-08-03 07:34:00) [35]

товарисчЪ юзай Query пиши правильный скуль , смотри хелп и вперёд
забудь про Table!


Страницы:   1 2

Наверх

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