Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Вниз

Метод Locate - проблема с апострофом в строке поиска   Найти похожие ветки 

 
Чайник ©   (2009-01-11 18:07) [0]

Делаю локальную базу на основе TclientDataSet.
По ходу дела выполняю поиск:

IF not (DataBase.DataMedia.Locate("FileName", FileName, [loCaseInsensitive])) Then

Все хорошо до тех пор, пока в строке FileName не встретится апостроф (например: 02-Toto Cutugno - L"italiano.mp3).
Тут вылезает ошибка - "Filter expression incorrectly terminated"
Что делать?


 
Медвежонок Пятачок ©   (2009-01-11 18:18) [1]

маскировать выражение поиска


 
Чайник ©   (2009-01-11 18:20) [2]


> Медвежонок Пятачок ©   (11.01.09 18:18) [1]
> маскировать выражение поиска


А нельзя ли для чайника чуть подробнее?


 
Anatoly Podgoretsky ©   (2009-01-11 18:26) [3]

> Чайник  (11.01.2009 18:07:00)  [0]

Замени Locate элементарнейшем проходом по таблице (Next) и сравнение со значением (If)


 
Чайник ©   (2009-01-11 18:36) [4]


> Anatoly Podgoretsky ©   (11.01.09 18:26) [3]
> > Чайник  (11.01.2009 18:07:00)  [0]
>
> Замени Locate элементарнейшем проходом по таблице (Next)
> и сравнение со значением (If)


А что быстрее будет работать?
А если проиндексировать таблицe по FileName - скорость увеличится?

(В базе порядка 50000 записей)


 
asail   (2009-01-11 20:08) [5]

Попробуй сначала в строке поиска заменить одинарную кавычку на ДВЕ одинарные кавычки, а затем пихай в Locate. Думаю, проканает...


 
asail   (2009-01-11 20:11) [6]


> А если проиндексировать таблицe по FileName - скорость увеличится?

А сам как думаешь? Для Locate - да. Для "элементарного" прохода - нет... Но если "проходить" правильно - то да.


 
Anatoly Podgoretsky ©   (2009-01-11 20:12) [7]

> Чайник  (11.01.2009 18:36:04)  [4]

Быстрее будет, если проиндексировано по FileName, обычно не проиндексировано.


 
Anatoly Podgoretsky ©   (2009-01-11 20:16) [8]

> asail  (11.01.2009 20:11:06)  [6]

Что значит правильно, в TClientDataset ни одно поле не проиндексировано. А если поле не проиндексировано, то и скорость одинакова, поскольку используется простой проход по таблице. А скорость прохода просто большая, что бы беспокоиться. Да и не может у него быть много записей, максимум миллион.


 
Чайник ©   (2009-01-11 20:44) [9]

Вот интересно: проиндексировал по FileName и вместо Locate использовал FindKey - все заработало. Чем же они внутри себя так отличаются?


 
Anatoly Podgoretsky ©   (2009-01-11 21:18) [10]

> Чайник  (11.01.2009 20:44:09)  [9]

FindKey работает только текущему индексу, Locate как угодно.


 
Чайник ©   (2009-01-11 21:22) [11]


> Anatoly Podgoretsky ©   (11.01.09 21:18) [10]
> > Чайник  (11.01.2009 20:44:09)  [9]
>
> FindKey работает только текущему индексу, Locate как угодно.
>


Это понятно, я имел в виду исчезновение проблем с кавычками/апострофами в строке поиска


 
sniknik ©   (2009-01-11 22:51) [12]

> исчезновение проблем с кавычками/апострофами в строке поиска
из-за того, что наконец то начало получатся? теперь еще раз с 0 переделай с локейтом, и там тоже не будет... (у меня к примеру нет. проверил).


 
sniknik ©   (2009-01-11 22:52) [13]

а да, D7 со всеми апдейтами. на всякий случай.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-1231855810
Тень
2009-01-13 17:10
2009.12.20
Access и дата/время


15-1256327662
SkyN
2009-10-23 23:54
2009.12.20
компонент простейшего dns сервера


1-1229527638
Afonya
2008-12-17 18:27
2009.12.20
Работа с окном другого приложения


2-1256967606
Keba
2009-10-31 08:40
2009.12.20
Вопросы с перемещением объектов по форме


15-1256063303
TUser
2009-10-20 22:28
2009.12.20
Вклад метагеномики в микробиологию, экологию и медицину





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский