|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск по одному и нескольким значениям в БД MSSQL 2005
Продолжение темы http://www.delphisources.ru/forum/sh...ad.php?t=25828
Ребята ,помогите добить запрос. #22 сообщении запрос работает только при указании одного из столбцов. Как мне расширить поиск?. То есть ,сделать поиск более точным, указать и "street" и "kvart" Заранее благодарен!! |
#2
|
|||
|
|||
Код:
procedure form1.BitBtn1Click(Sender: TObject); begin adoquery1.SQL.Clear; adoquery1.SQL.Add('SELECT *'); adoquery1.SQL.Add('FROM ТАБЛИЦА'); if (Length(Edit1.Text) > 0) or (Length(Edit2.Text) > 0) then then begin adoquery1.SQL.Add('where street LIKE'''+Edit1.Text+'''AND'); adoquery1.SQL.Add('kvartl LIKE' + #39 + Edit2.Text + '%' + #39); adoquery1.Active:= true; end else begin adoquery1.Active:= True; adoquery1.First; end; end; Последний раз редактировалось Admin, 24.05.2015 в 13:34. |
#3
|
|||
|
|||
Спасибо.
К сожалению , не работает , даже не работает поиск по одному значению. Вот полный проект https://yadi.sk/d/Q7nkGR4dgqDKH Последний раз редактировалось starcon, 24.05.2015 в 12:53. |
#4
|
|||
|
|||
кинь исходник может помогу
|
#5
|
|||
|
|||
Ссылка в #3 сообщении
|
#6
|
|||
|
|||
Пробуй должно работать
|
Этот пользователь сказал Спасибо sailen за это полезное сообщение: | ||
starcon (24.05.2015)
|
#7
|
|||
|
|||
Спасибо.
В Вашем exe , так как и раньше было , поиск только по одному из полей. Мне нужно , что бы было два и более , ну для более точного поиска Когда я открываю проект у себя "Ругается на неправильный синтаксис около %". Кроме этого нашёл ошибку Код:
*.qusers.Active:= True; *.qusers.First; Последний раз редактировалось starcon, 24.05.2015 в 15:37. |
#8
|
|||
|
|||
пишы сюда помогу
https://vk.com/id9494837 |
#9
|
||||
|
||||
Цитата:
______________ — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#10
|
|||
|
|||
Вопрос открыт.
Пока не одолели моей проблемы. Последний раз редактировалось starcon, 25.05.2015 в 19:10. |
#11
|
|||
|
|||
Да нет тут проблемы, только чьи то кривые руки.
Даже твой исхожник лень смотреть. Ну сделай на OnFilterRecord прямо в динамике. Кладешь n Edit'ов (в данном примере - 4) на, например, ToolBar. Каждый Edit отвечает за фильтрацию по своему полю (если все фильрты по одному полю, то чуть-чуть по другому надо логику прописать, но принцип тот же самый). Далее в OnFilterRecord соотв. компонента делаем примерно так (OR): Код:
var Result : Boolean; begin Result := False; If Edit1.Text <> '' Then Result := Result Or query.FieldByName('Field1').AsString = Edit1.Text; // если надо полное совпадение If Edit2.Text <> '' Then Result := Result Or (AnsiCompareText(query.FieldByName('Field2').AsString,Edit2.Text)=0); // если надо совпадение без учета регистра If Edit3.Text <> '' Then Result := Result Or (Pos(Edit3.Text,query.FieldByName('Field3').AsString) > 0);// если надо точное наличие подстроки в любом месте If Edit4.Text <> '' Then Result := Result Or (Pos(Edit4.Text,query.FieldByName('Field4').AsString) = 1);// если надо что бы начиналось с подстроки |