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

Вниз

Метод 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1256156099
POOP
2009-10-22 00:14
2009.12.20
Плиз, помогите найти книгу:


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


3-1231735370
S_p_a_w_n
2009-01-12 07:42
2009.12.20
Ограничение даты


15-1256145675
palva
2009-10-21 21:21
2009.12.20
Неполадки в форуме?


1-1229515633
dima47
2008-12-17 15:07
2009.12.20
Защита дискет от копирования