Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск [D6, dBase, FoxPro]


Mox Fulder ©   (2003-12-04 17:29:00) 

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


Bers   (2003-12-23 11:12:00) [1]

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

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


Bers   (2003-12-23 11:01:00) [2]

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

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

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

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


Nimnull   (2003-12-16 12:22:00) [3]

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

Можно например так: (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;


Shirson   (2003-12-05 11:47:00) [4]

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

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


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

[4] Silver_ © (04.12.03 19:42)

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


Silver_   (2003-12-04 19:42:00) [6]

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


Sandman25   (2003-12-04 17:38:00) [7]

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


NickBat   (2003-12-04 17:32:00) [8]

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


Mox Fulder   (2003-12-04 17:31:00) [9]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо