Форум: "Базы";
Текущий архив: 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