|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.02.2007, 23:50 | #1 |
Пользователь
Регистрация: 22.02.2007
Сообщений: 14
|
Поиск в поле Memo
БД по носителям информации (Paradox)
В таблице есть поле «Kluch_slova» (тип Memo). Не у каждого носителя это поле может быть заполнено. На форме есть компонент DBLookupComboBox, в котором выбирается ключевое слово. Как осуществить фильтрацию в базе по выбранному ключевому слово, т.е. чтобы в DBGrid отразился только список носителей, имеющих данное ключевое слово. Не могу сообразить, как организовать фильтрацию именно в поле типа Memo |
28.02.2007, 03:10 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Фильтр не накладывается, Locate не подходит и т.д.
Только SQL с использованием LIKE. Тем более, что мемо-поля не подлежат индексации. |
28.02.2007, 17:50 | #3 |
Пользователь
Регистрация: 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. |
28.02.2007, 21:07 | #4 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Поскольку это CTRL+C, CTRL+V , то сходу, без анализа:
Цитата:
|
|
28.02.2007, 23:14 | #5 |
Пользователь
Регистрация: 22.02.2007
Сообщений: 14
|
Я извиняюсь, но в коде программы этой ошибки нет (несколько раз проверила), пробел случайно затесался при переносе. Названия всех полей в точности соотвествуют полям таблицы (копировала из sql builder), их типы тоже.
|
01.03.2007, 00:34 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Ну, не создавать же мне такую базу для отладки запроса...
Общий подход такой (по крайней мере, я в своей работе всегда его проповедовал) - постепенное усложнение запроса... Тогда на определенном шаге ошибка и станет очевидной. И можно будет с удовлетворением рвать на себе волосы, приговаривая: "Дурак я, дурак, как же я такую ерунду не заметил..." |
01.03.2007, 18:39 | #7 |
Пользователь
Регистрация: 22.02.2007
Сообщений: 14
|
Спасибо за совет. Если честно, то надеялась, что там будет какая-то элементарная ошибка, которую я не заметила. Если соображу как сделать, то поделюсь, вдруг у кого-то возникнет такая же проблема
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |