Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
15-1158246367
Pazitron_Brain
2006-09-14 19:06
2006.10.08
Можно ли?


6-1146497136
Pazitron_Brain
2006-05-01 19:25
2006.10.08
TIDIRC


2-1159123064
vain
2006-09-24 22:37
2006.10.08
запуск прграммы


15-1158296765
wwwrr
2006-09-15 09:06
2006.10.08
44.5


15-1157967030
ANB
2006-09-11 13:30
2006.10.08
Нефть падает в цене.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский