![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Пытаюсь отфильтровать по двум значениям в разный столбцах. Собственно вот код:
Код:
ADOCardClient.Filtered:=false; ADOCardClient.Filter:= 'Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND №_Накладной >= '+DBEditEh1.Text+ ' OR Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Сумма >= '+DBEditEh1.Text+ ' OR Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Должен >= '+DBEditEh1.Text+ ' OR Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Оплатил >= '+DBEditEh1.Text; ADOCardClient.Filtered:=true; КК и №_Накладной или КК и Сумма или КК и Должен или КК и Оплатил Дело в том что по отдельности эти связки работаю а вместе не хотят. Даже 2 подряд. Не могу сообразить в чем дело ![]() Проверка на число ли введено имеется. Может оператор OR? Или может есть способ проще реализовать это? Спасибо за внимание |
#2
|
||||
|
||||
![]() Я вот не уверен, но связи у тебя такие:
Код:
а and b or a and c or ... Код:
(a and b) or (a and c) or ... Код:
a and (b or c or d or ...) И ещё мне не нравится что имена полей без обратных кавычек, т.е. так: Код:
ADOCardClient.Filter:= '`Код_клиента` LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND `№_Накладной` >= '+DBEditEh1.Text+ |
Этот пользователь сказал Спасибо Uniq! за это полезное сообщение: | ||
listerine (29.03.2013)
|
#3
|
||||
|
||||
![]() и like нафиг тут
скобки поставь (а=б) or (a=c) Я за здоровый экстрим! Спасибо за "спасибо") Последний раз редактировалось Mrak, 29.03.2013 в 12:52. |
Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
listerine (29.03.2013)
|
#4
|
|||
|
|||
![]() Судя по логике, OR можно вынести за скобки (т.е. не использовать) и написать для начала:
(код LIKE a) AND nomer >= b AND summa >= c... |
Этот пользователь сказал Спасибо AlexSku за это полезное сообщение: | ||
listerine (29.03.2013)
|
#5
|
||||
|
||||
![]() Код:
ADOCardClient.Filtered:=false; ADOCardClient.Filter:= '(Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND №_Накладной >= '+DBEditEh1.Text+ ') OR (Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Сумма >= '+DBEditEh1.Text+ ') OR (Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Должен >= '+DBEditEh1.Text+ ') OR (Код_клиента LIKE '+inttostr(ADOClient.FieldValues['Код_клиента'])+' AND Оплатил >= '+DBEditEh1.Text + ')'; ADOCardClient.Filtered:=true; Я за здоровый экстрим! Спасибо за "спасибо") |
Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
listerine (29.03.2013)
|
#6
|
|||
|
|||
![]() Посмотрев ваши примеры и немного подраскинув мозгами написал вот такой код в событии onFilterRecord компонента ADOTable:
Код:
Accept:= (DataSet['Сумма'] or DataSet['Оплатил'] or DataSet['Должен'] >= strtofloat(DBEditEh1.Text)); Есть еще вопрос! Допустим я использую код для фильтрации: Код:
Filter:='Имя_столбца LIKE '+#39+'%'+Edit.text+'%'+#39; Как его(найденное сочетание символов) можно подсветить или может как то выделить? В инете чет ничего не нашел. Тыкните может в какую статью! я б почитал! Очень хочу реализовать! Спасибо еще раз за помощь! |
#7
|
||||
|
||||
![]() Код:
procedure TForm14.DBGrid16DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin // Красим нечетные строки IF TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1 Then TDBGrid(Sender).Canvas.Brush.Color:=RGB(220,220,220); // Восстанавливаем выделение текущей позиции курсора IF gdSelected IN State Then Begin TDBGrid(Sender).Canvas.Brush.Color:= clHighLight; TDBGrid(Sender).Canvas.Font.Color := clHighLightText; End; // Просим GRID перерисоваться самому TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State); end; з.ы. LIKE '%МОСКВА%' отфильтрует такие, например, значения: "1москва", "там москва", "здесь москва1" , "[пробел]москва2" но не найдет: "москва" Я за здоровый экстрим! Спасибо за "спасибо") |
#8
|
|||
|
|||
![]() Цитата:
Как красить строки в DBgrid я знаю. Но ума не приложу как подсветить найденное слово там или набор букв. Хотя бы узнать как просто допустим несколько символов в ячейке подсветить. Дальше думаю разберемся. |