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