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

Вниз

Быстрый поиск по базе 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-58621
freeek
2003-09-05 09:05
2003.09.18
icons


1-58685
leonid-asup
2003-09-04 18:00
2003.09.18
Как сделать ввод символов в Edit отображаемых звездочками


14-58870
napil
2003-08-29 09:46
2003.09.18
mail


8-58789
Still Swamp
2003-05-20 15:00
2003.09.18
mciSendCommand в в трэде косячит.


14-58858
SaT
2003-08-30 18:17
2003.09.18
ПОМОГИТЕ С ТЕКСТОВУХОЙ