Главная страница
    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.48 MB
Время: 0.005 c
15-1255897640
Leonid Troyanovsky
2009-10-19 00:27
2009.12.20
Лаки ПИТЕРСОН


1-1229676379
parasolka
2008-12-19 11:46
2009.12.20
Фокус в DBGrid


4-1225373404
Vayrus
2008-10-30 16:30
2009.12.20
Восстановление прав доступа


15-1255357265
Nic
2009-10-12 18:21
2009.12.20
Терминалка через web-интерфейс? Возможно ли?


4-1225346049
xCode
2008-10-30 08:54
2009.12.20
CreateUserProcess





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