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

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

как организовать сортировку в БД по полю


JEK2 ©   (2006-02-19 15:00:00) 

Подскажите как организовать сортировку в БД по полю TL
Тип поля TL -alpha, данные примерно такие
34567
24865
34568
53487
34569
Требуется например после ввода в Edit1.Text текста-"34 "получить результат
34567
34568
34569
Делаю так, но выдает не тот результат который хотелось бы увидеть :(

procedure TForm1.Edit1Change(Sender: TObject);
begin
 Query1.Close;
 Query1.SQL.Clear;
 Query1.SQL.Add('SELECT * FROM B_ALL.DB');
 Query1.SQL.Add('WHERE TL >= "'+Edit1.Text+'"');
 Query1.Open;
end;

Если сделать Тип поля TL -LongInteger тогда ваще не пойму как такую сортировку организовать :(


Desdechado   (2006-02-19 19:18:00) [1]

> WHERE UPPER(POLE) = 'ВодИтель'  но это не подходит
В примере я тебе показал использование LIKE.
Так в чем вопрос? Подумать сложно?


Desdechado   (2006-02-19 19:16:00) [2]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1140364604&n=18


Anatoly Podgoretsky   (2006-02-19 18:36:00) [3]

Во первых логическое противоречие
каждая запись поля начинается с заглавной буквы
не все данные полей начинаются с Заглавных букв

Во вторых какая разница, раз сделать регистронезависимую выборку.
В третьих от модератора, новая тема - новая ветка


JEK2   (2006-02-19 17:50:00) [4]

Большое спасибо.
Еще один глупый вопрос.
Другие поля БД типа VARCHAR и каждая запись поля начинается с заглавной буквы. Как сделать регистронезависимую выборку.
Например поле содержит слово "Водитель" ,в Edit1.Text вводим "водиТель" и выбираются записи "Водитель","водитель","водИтель"
Нашел только описание UPPER LOWER типа
WHERE UPPER(POLE) = 'ВодИтель'  но это не подходит, так как не все данные полей начинаются с Заглавных букв!


Desdechado   (2006-02-19 15:05:00) [5]

1. это не сортировка, это отбор данных
2. если поле текстовое, то используй LIKE
3. если поле числовое, то приводи его к текстовому, иначе "на подобие" не сравнить
4. используй параметры

например, для числового поля:
Query1.SQL.Add('SELECT * FROM B_ALL.DB');
Query1.SQL.Add('WHERE CAST(TL AS VARCHAR(20)) LIKE :P1');
Query1.Params[0].AsString:=Trim(Edit1.Text)+'%';


Наверх

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