![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADODataSet.Filter:= (... LIKE ...) AND (... LIKE ...)
Silver_ © (2003-07-02 09:52:00)Как осуществить филтер по LIKE по более одного поля
типа:
ADODataSet.Filter:="(Fld1 LIKE *""ABC""*) AND(Fld2 LIKE *""def""*)";
Сразу опережу желателен ответ с использованием именно ADODataSet.Filter:= а не ADODataSet.OnFilterRecord :)
Silver_ (2003-07-02 12:59:00) [1]Все разобрался, все работает
Сначала не проверял
if NameEdit.Text <> "" then ...
if AbbrEdit.Text <> "" then ...
а потом не выключал фильтр до построения условия фильтра вобщем правильно должно быть так (если кто-нить сталкнется с этим чтоб не вешался :о)) )
ADODataSet.Filtered:=False;
if NameEdit.Text <> "" then
ADODataSet.Filter:="Name LIKE "#39"*"+DoubleQuotedString (NameEdit.Text,"""")+"*"#39;
if AbbrEdit.Text <> "" then
begin
if ADODataSet.Filter <> "" then
ADODataSet.Filter:=ADODataSet.Filter + " AND ";
ADODataSet.Filter:=ADODataSet.Filter
+ "Abbr LIKE "#39"*"+DoubleQuotedString(AbbrEdit.Text,"""")+"*"#39;
end;
ADODataSet.Filtered:=True;
ЗЫ Я частенько замечаю что на мои вопросы тока
> sniknik ©либо слишком ядрённые для других либо... :о)
отдельное Спосибо тебе sniknik ©за поддержку!!!
sniknik (2003-07-02 11:10:00) [2]попробуй еще раз.
попробуй заменить * на %.
попробуй без преобразований просто внеси строку "(Fld1 LIKE ""*ABC*"") AND (Fld2 LIKE ""*def*"")";
скажи в чем выражается отказ. (просто не находит? проверь условие)
у меня работает без вопросов.
Silver_ (2003-07-02 11:05:00) [3]
> кроме явной ошибки в приведенном фильтре
здесь ошибся, сам заметил :), но в проге все нормально:
ADODataSet.Filter:="(Name LIKE "#39"*"+DoubleQuotedString(NameEdit.Text,"""")+"*"#39
+") AND (Abbr LIKE "#39"*"+DoubleQuotedString(AbbrEdit.Text,"""")+"*"#39
+")";
где DoubleQuotedString удваивает " или " (по необходимости)
Верний код не проходит. А следующий на ура
ADODataSet.Filter:="(Name LIKE "#39"*"+DoubleQuotedString(NameEdit.Text,"""")+"*"#39
+")";
Silver_ (2003-07-02 10:53:00) [4]Во блин ошибся * не туды сунул вот так должно быть:
ADODataSet.Filter:="(Fld1 LIKE ""*ABC*"") AND(Fld2 LIKE ""*def*"")";
В догонку СУБД Access
Вобщем трабл в том что более 1-го LIKE в одном филтре не не хочет принять, а мне очень надо. Как быть???
sniknik (2003-07-02 10:50:00) [5]а в чем проблема то?
кроме явной ошибки в приведенном фильтре
ADODataSet.Filter:="(Fld1 LIKE ""*ABC*"") AND (Fld2 LIKE ""*def*"")";