Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-58822
danatelo
2003-07-17 16:16
2003.09.18
Пересылка файлов через FTP


14-58848
Непомню
2003-08-31 04:57
2003.09.18
SynEdit


1-58676
Леша
2003-09-04 21:31
2003.09.18
Как сделать в гриде допустим чтоб если работаешь с записью


8-58785
Still Swamp
2003-05-15 14:46
2003.09.18
Как в трэде воспроизвести несколько MP3


1-58696
Pavel Oliynik
2003-09-08 11:29
2003.09.18
ассоциативные массивы в памяти есть в Дельфи или как .. ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский