Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизПоиск Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c