Я говорил удалить фразу "with", а Вы говорите про "while". Это разные вещи. Когда Вы пишете
Код:
1 2 | ADOQuery1 . Close;
ADOQuery1 . SQL . Clear;
|
Вы явно указываете конкретный элемент (ADOQuery1), поэтому дополнительно писать "with ADOQuery1 do ..." не имеет смысла. Просто лишняя писанина. Она не повредит, но правильнее без неё.
Да, и ещё. Закрывать датасет командой Close не нужно, т.к. команда Clear автоматически вызовет закрытие.
Теперь по сути вопроса. Вам нужно, имея на входе текст, соответствующий значению поля таблицы (например, "Машина"), находить запись, где этот текст прописан, и отображать другое поле из этой записи. Это можно сделать либо поиском, либо фильтрацией (через свойство Filter датасета, либо через текст запроса). Раз Вы делаете динамический запрос, тогда проще всего условие фильтрации прописать в тексте запроса, примерно так:
Код:
1 2 3 4 5 | ADOQuery1 . SQL . Clear;
ADOQuery1 . SQL . Add( 'SELECT scnazva, fraza FROM katalog' );
ADOQuery1 . SQL . Add( 'WHERE scnazva = "' + combobox1 . Text + '"' );
ADOQuery1 . SQL . Add( 'ORDER BY scnazva' );
ADOQuery1 . Open;
|
Вижу, что используете библиотек EhLib. Хорошая штука, с базами данных сильно облегчает жизнь!
Да, ещё не совсем понятно, зачем динамически создавать датасет. Не проще ли создать его статически и не тратить процессорное время на создание и уничтожение объектов?