Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизБыстрый поиск по базе Paradox Найти похожие ветки
← →
pvv (2003-08-26 13:21) [0]Есть база парадоксовская, в ней поле Brus.
В этом поле только русские названия. Пытаюсь организовать по этому полю быстрый поиск. Пользуюсь методом Locate. Работает на ура, но только в том случае если я соблюдаю регистр названия.
Например: в базе "Пример" = вводим "Пример", находит, а если введем "пример", то не находит. Подразумеваю, что косяк с преобразованием регистров. Делаю так:
T.Locate("Brus", Edit1.Text, [loCaseInsensitive, loPartialKey]);
Тот же косяк и с фильтром.
Не подскажут ли мастера, как решить такую задачку, или может я криво где написал.
За любые предложения спасибо.
← →
Lvitaliy (2003-08-26 13:37) [1]не помню кажется это то. нужно обязательно индекс поэтому полю Table1.FindKey
← →
SPIRIT (2003-08-26 14:50) [2]
T.Locate("Brus", Edit1.Text, [loPartialKey]);
T.Locate("Brus", Edit1.Text, [loCaseInsensitive]);
корректно писать вот так
← →
Dred2k (2003-08-26 15:04) [3]> SPIRIT © (26.08.03 14:50) [2]
Мда, это что-то новенькое. И вечный Locate, покой нам только снится...
> pvv © (26.08.03 13:21)
Тут дело в некорректности таблиц сортировки для кирилицы в BDE. Подробно я сам это не копал, пользуюсь подправленными модулями кодировок (сделаны для поддержки Paradox4 for DOS в BDE). Вот с ними ищет без особых проблем.
← →
pvv (2003-08-28 13:20) [4]Спасибо за советы.
Я розобрался.
В базе поставил Language=PDox ansi cirilic
И будто все так и было. Все ище, все работает.
← →
pvv (2003-08-28 13:24) [5]А вот по поводу фильтра никто не подскажет?
Есть способ сделать фильтр регистро низевисимым?
Тобишь по букве " к" выбрал бы " как" и " Кто".
← →
Sandman25 (2003-08-28 13:25) [6]... where upper(field) like "K%"
← →
Sandman25 (2003-08-28 13:26) [7]или ... like upper("к%")
← →
MsGuns (2003-08-28 13:32) [8]>pvv © (28.08.03 13:24) [5]
>А вот по поводу фильтра никто не подскажет?
Есть способ сделать фильтр регистро низевисимым?
Тобишь по букве "к" выбрал бы "как" и "Кто".
Переведите. В смысле регистро-независимый или по части текста ?
Или и то и другое ? Или дядька в Киеве ?
>Sandman25 © (28.08.03 13:25) [6]
>Sandman25 © (28.08.03 13:26) [7]
Так базар вроде идет о поиске, а не о выборке
← →
pvv (2003-08-28 13:35) [9]Если не затруднит.
Можно полностью код, при условии что текст вводится в FilterEd, а поле Brus. Не поимите меня неправильно, но почасти БД я пока еще не очень, я пробовал эксперементировать с фильтром, наткнулся тока на ошибки и зависания.
И еще, upper для руских буковок канает.
PS: Вводить буду не только один символ.
← →
pvv (2003-08-28 13:38) [10]
> Переведите. В смысле регистро-независимый или по части текста
> ?
> Или и то и другое ? Или дядька в Киеве ?
И регистро независимый фильтр и по части одновременно.
Если я поступаю неправильно перейдя на примерно похожую тему, то могу задать отдельный вопрос
← →
Sandman25 (2003-08-28 15:19) [11]
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
SearchFor, SearchIn: string;
Index, LengthFor: integer;
begin
SearchFor := AnsiUpperCase(FilterEd.Text);
LengthFor := Length(SearchFor);
SearchIn := AnsiUpperCase(DataSet.FieldByName("Brus").AsString);
Accept := False;
if Length(SearchIn) >= LengthFor then
begin
for Index := 1 to LengthFor do
if SearchIn[Index] <> SearchFor[Index] then
exit;
Accept := True;
end;
end;
← →
pvv (2003-08-28 16:59) [12]
> Sandman25 © (28.08.03 15:19) [11]
Спасибо за идею попробую так сделать.
← →
MsGuns (2003-08-28 17:24) [13]Ничего себе - идея ! Код готовый.
← →
Sandman25 (2003-08-28 18:06) [14][13] MsGuns © (28.08.03 17:24)
Может, он имел в виду, что там еще можно кое-какую оптимизацию произвести, например вынести SearchFor := AnsiUpperCase(FilterEd.Text); LengthFor := Length(SearchFor) из процедуры в какой-нибудь btSearchClick, чтобы не рассчитывать слишком часто.
А вообще согласен, код готовый :)
← →
pvv (2003-08-29 01:11) [15]
> MsGuns © (28.08.03 17:24) [13]
> Ничего себе - идея ! Код готовый
С при великими извенениями к
> Sandman25 © (28.08.03 15:19) [11]
Просто огромное спасибо!
Но еще не успел попробовать. У мени ночь только что закончилась :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.174 c