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

Вниз

Поиск   Найти похожие ветки 

 
Mox Fulder ©   (2003-12-04 17:29) [0]

Здраствуйте. Трабл с поиском: если юзер задаёт строку полностью, то можно использовать Table1.locate(). А как задать поиск по маске или же хотя бы по началу строки? Заранее благодарен.


 
Mox Fulder ©   (2003-12-04 17:31) [1]

Извините, забыл. Использую BDE DBASE, TTable и DBGrid.


 
NickBat ©   (2003-12-04 17:32) [2]

Table.Filter
SQL.Text="select * from table where field like "%vasya%""


 
Sandman25 ©   (2003-12-04 17:38) [3]

Для %слово% я написал свой Locate, в котором бегал по DataSet и проверял с помощью Pos.
А для Locate по началу строки (слово%) можно использовать стандартный Locate с ключом loPartialKey


 
Silver_ ©   (2003-12-04 19:42) [4]

DataSet.Filter := "MyField LIKE "*Slovo*""
DataSet.Filtered := True;


 
Sandman25 ©   (2003-12-05 10:42) [5]

[4] Silver_ © (04.12.03 19:42)

А если нужен именно Locate? Чтобы все остальные записи продолжали отображаться?


 
Shirson ©   (2003-12-05 11:47) [6]

У ADO Locate может так:
If Options contains the loPartialKey setting, then Locate allows partial-string matching on strings in KeyValues.

Посмотрел у DBE... Хм... Странно, но там он может точно так же :)


 
Nimnull   (2003-12-16 12:22) [7]

Это по введенному тексу, можно еще несколькими способами это реализовать, напрмер по первым букам и т.д.Если нужно напиши на мыло, пришлю...

Можно например так: (TempS, TempF - глобальные строковые)
1) сначало переводишь, что ищешь в UpCase

i: Integer;
TempStr: String;
begin
TempStr:= PartEdit.Text;
for i:=1 to Length(TempStr) do
if TempStr[i] in ["а".."я"] then
TempStr[i]:= chr(ord(TempStr[i])-32);
TempF:= TempStr;
ClientTable.Filtered:= True;
end;
2) А в свойстве OnFilterRecord таблицы пишешь следующее:
var
j: Integer;
begin
TempS:= DataSet.FieldByName("NameCl").AsString;
for j:= 1 to Length(TempS) do
if TempS[j] in ["а".."я"] then
TempS[j]:= chr(ord(TempS[j])-32);
Accept:= Pos(TempF, TempS)<>0;
end;


 
Bers ©   (2003-12-23 11:01) [8]

procedure TFrmGn.Edit1Change(Sender: TObject);
Begin
Table1.Locate("Field_Name", Edit1.text, [loPartialKey]);
End;

- при вводе каждого нового символа в Edit1 будет подбираться все ближе и ближе к искомой записи.

Если надо проигнорировать регистр вводимых символов - добавить
[loPartialKey]

Если я правильно понял вопрос Ж-)


 
Bers ©   (2003-12-23 11:12) [9]

Прошу прощения :

Если надо проигнорировать регистр вводимых символов - добавить
[loCaseInsensitive]



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
14-63384
Igorek
2003-12-26 15:18
2004.01.20
А где собственно Е-Мое-Имя?


3-62964
Элина
2003-12-23 17:29
2004.01.20
BDE программно


3-63010
Mox Fulder
2003-12-04 17:29
2004.01.20
Поиск


14-63398
_none_
2003-12-31 03:12
2004.01.20
товарищи! не верьте западной пропаганде!


14-63301
Stas
2003-12-27 12:39
2004.01.20
Power Builder