Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2007, 23:50   #1
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию Поиск в поле Memo

БД по носителям информации (Paradox)
В таблице есть поле «Kluch_slova» (тип Memo). Не у каждого носителя это поле может быть заполнено.
На форме есть компонент DBLookupComboBox, в котором выбирается ключевое слово. Как осуществить фильтрацию в базе по выбранному ключевому слово, т.е. чтобы в DBGrid отразился только список носителей, имеющих данное ключевое слово.
Не могу сообразить, как организовать фильтрацию именно в поле типа Memo
omi вне форума Ответить с цитированием
Старый 28.02.2007, 03:10   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Фильтр не накладывается, Locate не подходит и т.д.
Только SQL с использованием LIKE. Тем более, что мемо-поля не подлежат индексации.
mihali4 вне форума Ответить с цитированием
Старый 28.02.2007, 17:50   #3
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию

Спасибо за совет. Попробовала написать код

procedure TForm5.Button7Click(Sender: TObject);
begin
DataModule13.Query1.Close;
DataModule13.Query1.SQL.Clear;
DataModule13.Query1.SQL.Add('SELECT Vid_nositela.Vid_nositela, Janr.Janr, Kategorii.Kategoria, Nositeli1.Invent_n, Nositeli1.Kod_bbk, Nositeli1.Avtor, Nositeli1.Nazvanie,Nositeli1.V_sbor nike,Nositeli1.Nalichie,Nositeli1.K luch_slova,Nositeli1.Otmetka,Nosite li1.Data_postuplenia ');
DataModule13.Query1.SQL.Add('FROM "I:\курсовик\Nositeli1.DB" Nositeli1 where Kluch_slova like '''+ DBLookupComboBox2.Text + ''' INNER JOIN "I:\курсовик\Kategorii.db" Kategorii');
DataModule13.Query1.SQL.Add('ON (Kategorii.Kod_kategorii = Nositeli1.Kod_kategorii)');
DataModule13.Query1.SQL.Add('INNER JOIN "I:\курсовик\Vid_nositela.DB" Vid_nositela');
DataModule13.Query1.SQL.Add('ON (Vid_nositela.Kod_nositela = Nositeli1.Kod_nosit)');
DataModule13.Query1.SQL.Add('INNER JOIN "I:\курсовик\Janr.db" Janr');
DataModule13.Query1.SQL.Add('ON (Janr.Kod_janra = Nositeli1.Kod_janra)');
DataModule13.Query1.Open;
end;

по клику на кнопке ошибка
Project projct2.exe raised exception class EDBEngineError with message 'Invalid use of keyword. Token: Inner Line Number: 1'. Process stoped...

Что делать? Помогите, пожалуйста.

Последний раз редактировалось omi; 28.02.2007 в 19:46.
omi вне форума Ответить с цитированием
Старый 28.02.2007, 21:07   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Поскольку это CTRL+C, CTRL+V , то сходу, без анализа:
Цитата:
Nalichie,Nositeli1.Kluch_slova,Nosi teli1.Otmetka,N ositeli1.Data_postuplenia ');
Мне кажется, проще все же "не отходя от кассы" двадцать раз перепроверить себя, чем посылать текст для поиска ГРАММАТИЧЕСКИХ ошибок на форум...
mihali4 вне форума Ответить с цитированием
Старый 28.02.2007, 23:14   #5
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию

Я извиняюсь, но в коде программы этой ошибки нет (несколько раз проверила), пробел случайно затесался при переносе. Названия всех полей в точности соотвествуют полям таблицы (копировала из sql builder), их типы тоже.
omi вне форума Ответить с цитированием
Старый 01.03.2007, 00:34   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, не создавать же мне такую базу для отладки запроса...
Общий подход такой (по крайней мере, я в своей работе всегда его проповедовал) - постепенное усложнение запроса...
Тогда на определенном шаге ошибка и станет очевидной.
И можно будет с удовлетворением рвать на себе волосы, приговаривая: "Дурак я, дурак, как же я такую ерунду не заметил..."
mihali4 вне форума Ответить с цитированием
Старый 01.03.2007, 18:39   #7
omi
Пользователь
 
Аватар для omi
 
Регистрация: 22.02.2007
Сообщений: 14
По умолчанию

Спасибо за совет. Если честно, то надеялась, что там будет какая-то элементарная ошибка, которую я не заметила. Если соображу как сделать, то поделюсь, вдруг у кого-то возникнет такая же проблема
omi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FoxPro. Как записать в поле Memo большой текст? zag БД в Delphi 5 30.05.2008 06:10
Поиск по Memo photozaz Общие вопросы Delphi 5 25.05.2008 17:55
Проверка, является ли поле Memo пустым или нет. Ветас Помощь студентам 1 24.02.2008 12:47
Текст html-странички в поле Memo Delpinist Win Api 5 18.12.2006 14:57