Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Фильтровать базу данных по куску слова   Найти похожие ветки 

 
Juri   (2006-09-16 02:37) [0]

Доброго времени суток ув. мастера!
пробую профильтровать свою базу данных по куску фамилии напрмер пишу в едите "ов" надо чтоб все фамилии были в которых есть эти две буквы ппричём не важно где они находятся в конуе или в начале!
я делаю так

s:=Edit1.Text;
Table1.Filter:="WANN="+edit2.Text+s+"*"+Edit2.Text;

Edit1 поле для ввода символов по которым нужно провести фильтрацию
Edit2 содержит символ "  так как програмно добавить я его как то не могу делфи его в коде сами знаете принимает за начало или конец типа String
вобщем когда я делаю так естественно работает всё НО фильтр показывает мне только то что начинается на "ов"
делаю следующее

s:=Edit1.Text;
Table1.Filter:="WANN="+edit2.Text+"*"+s+"*"+Edit2.Text;

так фильтр вообще не паказывает ничего...
как сделать чтоб поиск производился именно по куску слова, который может находится в любом месте всего слова?


 
Virgo_Style ©   (2006-09-16 09:37) [1]

- сделать фильтрацию в OnFilterRecord (напр. с использованием MatchesMask)
- использовать Like (не знаю, работает ли он в Filter, думаю, что нет)

p.s. О символе " :

Label1.Caption:="""В кавычках"""+" Тут-> ""  одна кавычка, тут "+#39+" еще одна" ;


 
Chort ©   (2006-09-16 12:20) [2]

Пробуй так(фильтр в двух вариантах)
function TForm1.GetFilterString: string;
begin
 result:="";
 if DiscsTable.FieldByName("id").AsInteger<>ALL_DISCS_ID then begin
   result:="Dcs="+ DiscsTable.FieldByName("id").AsString
 end;

 if (FilterEd.Text<>"") and (ActFilterOn.Checked) then begin
   if result<>"" then result:=result+" AND ";
   result:=result+"Name" + QuotedStr("%"+FilterEd.Text+"%");
 end;
end;

Так было у меня, а у себя уж сам переделай поля.
для вызова
ADOTable.Filter:=GetFilterString;


 
Juri   (2006-09-16 18:56) [3]


> p.s. О символе " :
>
> Label1.Caption:="""В кавычках"""+" Тут-> ""  одна кавычка,
>  тут "+#39+" еще одна" ;

огромное спасибо за совет


> сделать фильтрацию в OnFilterRecord (напр. с использованием
> MatchesMask)

можно пример и возможно ли это использовать если фильтр не только по одному полю а к примеру и ещё и по полю с датой о рождении


 
Juri   (2006-09-16 19:30) [4]


> Пробуй так(фильтр в двух вариантах)
> function TForm1.GetFilterString: string;
> begin
>  result:="";
>  if DiscsTable.FieldByName("id").AsInteger<>ALL_DISCS_ID
> then begin
>    result:="Dcs="+ DiscsTable.FieldByName("id").AsString
>  end;
>
>  if (FilterEd.Text<>"") and (ActFilterOn.Checked) then begin
>    if result<>"" then result:=result+" AND ";
>    result:=result+"Name" + QuotedStr("%"+FilterEd.Text+"%");
>
>  end;
> end;
> Так было у меня, а у себя уж сам переделай поля.
> для вызова
> ADOTable.Filter:=GetFilterString;

я так понял что это работает по той же системе как и я делал просто вместо * используется % НО в DBF базе данных этот символ не проходит...


 
Virgo_Style ©   (2006-09-16 19:32) [5]


uses Masks;

procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
 var Accept: Boolean);
begin

 Accept := MatchesMask( DataSet.FieldByName("Имя").AsString , "*Пупкин" )
          and DataSet.FieldByName("Тот_самый").AsBoolean;

end;


Фильтр пропустит всех, у кого имя соответствует "...Пупкин", для которых установлен флаг "Тот_самый". Подробности масок - в хелпе.


 
Juri   (2006-09-16 22:31) [6]


procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
 var Accept: Boolean);
begin
Accept := MatchesMask( DataSet.FieldByName("NAME").AsString , "*"+s+"*" );
end;

ну вот так я сделал тока опять не работает...

PS: у меня работа с DBF а не ADO


 
Virgo_Style ©   (2006-09-16 22:39) [7]

*мечтательно* ...а как чудесно было бы не допускать отправления ответа вида "выкидывает ошибку" и "не работает", пока не будет описана проблема... Эх, где ты, ИИ...


 
Juri   (2006-09-16 22:43) [8]

ну не работает в том смысле что вообще не фильтрует никак
тока фильтрует если точно слово всё написать тогда находит а по кусочку нет


 
Juri   (2006-09-17 00:09) [9]

я помойму уж подробно описал что мне нужно и что не работает да и объяснять то нечего просто не фильтрует по кучочку из слова!


 
Virgo_Style ©   (2006-09-17 00:27) [10]

Значит, ИИ все же существует, ибо очевидно, что для не наделенного ИИ компьютера кусочек слова и слово целиком не отличаются абсолютно ничем при поиске таковых в строке.

Отладчик в помощь, что тут еще можно сказать.



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
2-1158580517
Id
2006-09-18 15:55
2006.10.08
Картинка в BLOB-e


2-1158729756
o_serg
2006-09-20 09:22
2006.10.08
Не загружается Delphi 2005


2-1158411255
greengeneral
2006-09-16 16:54
2006.10.08
Как ограничть вводимые цифры в Edit1


2-1158882264
Руслан12345
2006-09-22 03:44
2006.10.08
Типы данных


2-1158653226
pathfinder
2006-09-19 12:07
2006.10.08
Вопрос по интернет-компонентам.