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

Query->0pen() ;

//—————————————————————————

void _fastcall TFormI::BWhereClick(TObject *Sender)

{

if (Regim == RFields)
ADDS(" FROM PERS");

ADDS(" WHERE") ;

Regim = RWhere;

)

//————————————————————————

void _fastcail TFormI::CBOpChange(TObject *Sender)
(

if ((Regim == REnd) || (MSQL->Lines->Count < 1))

ShowMessage("Начните новый запрос или вводите оператор вручную");

else ADDS(" "+CBOp->Text);

t

//—————————————————————————

void   fastcall TFormI::BOrderClick(TObject *Sender)
(

if (Regim == RFields)
ADDS(" FROM PERS");

ADDS(" ORDER BY");

Regim = ROrder;

)

//————————————————————————

void   fastcall TFormI::BGroupClick(TObject *Sender)
{

if (Regim == RFields)
I         ADDS(" FROM PERS") ;

ADDS(" GROUP BY") ;

Regim = ROrder;

)

Сделаем некоторые комментарии к этому тексту. В начале вводится перемен-
ная Regim перечислимого типа:

enum TRegim {RNone, RFields, RWhere, ROrder, REnd) Regim;

возможные значения которой определяют, в каком режиме в данный момент нахо-
дится приложение. В начале значение переменной Regim задается равным RNone.
Обработчики щелчков всех кнопок проверяют значение переменной Regim и в за-
висимости от результатов этой проверки производят те или иные операции. Кроме
того они изменяют значение этой переменной, сообщая приложению, какие опера-
ции выполняет пользователь. Например, обработчик щелчка кнопки Выполнить в
процедуре BexecClick проверяет Regim и, если значение этой переменной оказыва-
ется RNone, это означает, что пользователь, не нажав до этого ни одной кнопки,
сразу щелкнул на кнопке Выполнить. В этом случае пользователю выдается заме-
чание «Вы не ввели запрос» и обработка события прерывается. Соответствующие
проверки режима вы можете увидеть и в других обработчиках событий.

Далее в приложении вводится процедура ADDS, которая добавляет заданную
текстовую строку в конец текста, содержащегося в MSQL. Это сделано просто во
избежание повтора входящего в эту процедуру оператора во многих местах кода.
Конечно, при этом в заголовочном файле модуля добавляется в описание класса со-
ответствующее объявление этой процедуры:

void _fastcall ADDS(String s) ;

Процедура FormCreate является обработчиком события OnCreate формы. В
этой процедуре производится загрузка списка CBFields значениями имен полей в
таблице. Это очень легко делается методом GetFieldNames, который загружает
список имен полей в любую переменную типа TStrings, передаваемую в него в ка-
честве аргумента.