Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.029 c
15-1158519090
ProgRAMmer Dimonych
2006-09-17 22:51
2006.10.08
Расскажите, как разместить свою веб-страницу в интернете, ...


10-1124092462
DimMih
2005-08-15 11:54
2006.10.08
Вставка изображения в AutoCad


6-1147323633
Ezorcist
2006-05-11 09:00
2006.10.08
TCP/IP по выделенной/модему


2-1158914441
kyn66
2006-09-22 12:40
2006.10.08
Как сослаться на компонент, зная его TAG ?


2-1158939869
RedLine
2006-09-22 19:44
2006.10.08
Автозапуск




   Наверх