Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Применение функции locate для поиска записей по полю memo [D6, Access]


Ann Boo ©   (2004-03-05 10:54:00) 

Уважаемые мастера, подскажите, пожалуйста, почему не работает функция Locate для полей Memo (поиск с частичным совпадением). Выдается ошибка о невозможности выполнения запроса. Использую БД Access, подключаюсь с помощью ADO.

ffield:='SecondNames';   //имя memo-поля
fvalue:=Form1.Edit1.Text;
opts:=[loCaseInsensitive,loPartialKey];
if not Form1.ADOTable1.Locate(ffield, fvalue, opts) then
 ShowMessage('запись не найдена');


sniknik   (2004-03-05 11:11:00) [1]

для Access легко можно сделать дополнительный запрос
'SELECT ID FROM Table WHERE SecondNames LIKE ''%'+Form1.Edit1.Text+'%''';
что даст ID (в данном случае идентификатор, ключь) всех совпадений, по нему локейт будет работать, и не нужно тянуть на локаль все мемо поля для обработки, а только совпадающие.

p.s. в очередной 101 раз ;о), не используйте ADOTable, для ADO в нем больше недостатков чем выигрыша от "привычности" использования.


Anatoly Podgoretsky   (2004-03-05 11:04:00) [2]

Locate только для поиска по полям с фиксировной длиной и простого типа.


Соловьев   (2004-03-05 11:00:00) [3]

а если написать нормально?
if not Form1.ADOTable1.Locate('SecondNames', Form1.Edit1.Text, [loCaseInsensitive,loPartialKey]) then
ShowMessage('запись не найдена')


Кщд   (2004-03-05 11:00:00) [4]

"почему не работает функция Locate для полей Memo "
по определению :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо