Главная страница
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.027 c
1-63157
афвуд
2004-01-06 18:51
2004.01.20
TNotifyEvent


8-63262
WondeRu
2003-09-15 10:08
2004.01.20
Как отключить OpenGL ускорение видеокарты?


6-63274
Конан
2003-11-18 13:57
2004.01.20
ClientSocket и ServerSocket


1-63104
}|{yk
2004-01-08 13:17
2004.01.20
Сохранение настроек фрейма (ini или registry)


3-62978
GIL
2003-12-24 11:09
2004.01.20
Значения по умолчанию