Создание приложений для работы с базами данных в сети____________575

стей, заложенных в приложении, мы сознательно отказались. Если вы сравните
скорость работы приложения в прежнем и новом варианте, то можно на глаз заме-
тить, что операции с Query выполняются медленнее, чем с Table. Тогда зачем вооб-
ще пытаться заменить Table на Query?

Это в ряде случаев может иметь смысл, поскольку Query, благодаря универса-
льности языка SQL, способствует большей масштабируемости вашего приложе-
ния, т.е. способности его работать с различными видами баз данных. Если вы раз-
рабатываете приложение для локальной базы данных, но в дальнейшем окажется,
что база данных переведена в другую систему и используется, например, на плат-
форме клиент/сервер, то при применении Query вам, возможно, придется сделать
в своей программе меньше изменений. Во всяком случае примерно так звучат ре-
комендации разработчиков C++Builder. Впрочем, чаще всего и применение Table
при переходе с одного типа базы данных на другой особых сложностей не вызыва-
ет.

10.1.7.2 Пример формирования произвольных запросов SQL

Вероятно, в приложениях рассмотренного выше типа замену Table на Query
без особой нужды делать не стоит. Но есть приложения, в которых пользователю
разрешается формировать любые запросы к базе данных. В таких приложениях
без языка SQL и, соответственно, без компонентов Query не обойтись. Рассмотрим
на чисто демонстрационном примере, как строить подобные приложения.

Общий вид приложения, которое мы с вами попробуем построить, приведен на
рис. 10.7. Вы можете найти его на приложенном к книге диске.

Рис. 10.7

Пример приложения, позволяющего
пользователю формировать
произвольные запросы к базе данных

Приложение позволяет пользователю сформировать различные запросы Se-
lect к таблице Pers. Выпадающий список Поле (типа TComboBox, в программе на-
зван CBFilds) заполнен именами полей, которые пользователь может выбирать из
него при формировании запроса. Выпадающий список Операции, знаки (типа
TComboBox, в программе назван СВОр) заполнен символами допустимых опера-
ций, функций и знаков, которые пользователь также может выбирать при форми-
ровании запроса. Окно, расположенное ниже кнопок, является компонентом типа
TMemo (в программе названо MSQL). Это окно служит для отображения формиру-
емого запроса SQL. Ниже расположена таблица DBGridI типа TDBGrid, которая
через компонент DataSource связана с компонентом Query типа TQuery. Этот ком-
понент и выполняет сформированные пользователем запросы.