Форум: "Начинающим";
Текущий архив: 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