Работа с ADO в Delphi. Часть 6. Вычисляемые поля

3 минуты на чтение

Всем привет, опять же, пишу статью про ADO, а также по просьбе читателя моего блога, который попросил рассказать, как в БД можно работать с вычисляемыми полями (чтобы значение вычисляемого поля сразу менялось, при вводе нового значения), на примере БД — MS Access. Я расскажу 2 способа работы с вычисляемые полями, а на примере покажу только один способ. Ну, первый способ состоит в том, что все поля, в том числе и вычисляемое, мы создаем сразу в БД - MS Access, причем тип данных, поля, в котором будет менять значение — указываем Вычисляемое поле.

Что касается второго способа, то вычисляемое поле, мы создадим в нашем проекте, через компоненты TAdoQuery или TAdoTable.

Ну и сразу скажу, что есть, не очень правильный 3 метод, при котором можно использовать TTimer.

Давайте начнем с нашей БД.

У меня в БД имеет следующую структуру:

Итак, БД в MS Access у нас создана, теперь переходим к самому проекту  в Delphi, на форме у меня следующие компоненты:

  • TDataSource
  • TDBGrid
  • TADOConnection
  • TADOQuery
  • TButton

Теперь, делаем подключение к нашей БД, как это делать, мы рассматривали в статье, так что заострять внимание на этом, я не буду. Далее, нам необходимо все наши компоненты связать между собой, ну вот и приступим. Выделяем компонент TADOQuery и в свойстве Connection указываем — TADOConenction. Далее, выделяем компонент TDataSource и в свойстве DataSet указываем TADOQuery. Затем, выделяем компонент TDBGrid и в свойстве DataSource указываем TDataSource.

Все, теперь добавим все наши поля. Для этого, нам необходимо активировать наш запрос и подключение. В свойстве компонента TADOConenctionConnected устанавливаем True, а в свойстве компонента TADOQuery - SQL, напишем следующий запрос

SELECT * FROM Test

Имя, нашей таблицы — Test. Ну и далее, активируем наш запрос, в свойстве Active, компонента TADOQuery устанавливаем в True.

Далее нажимаем, двойным щелчком мыши по компоненту TADOQuery и появляется окно:

В данном окне, нажимаем правой кнопкой мыши, и из контекстного меню, выбираем пункт Add all fields. В список добавиться все наши поля таблицы.

Ну, а теперь создадим наше Вычисляемое поле. Для этого, в данном окне, нажимаем правой кнопкой мыши и из контекстного меню выбираем пункт New Field, после чего появиться окно, где необходимо заполнить поля, как показано на рисунке:

Указываем имя нашего вычисляемого поля, устанавливаем указатель на Calculated и указываем тип данных — Integer, можно и с плавающей точкой, какой Вам удобно.

Ну, а дальше, выделяем компонент TADOQuery и на событие OnCalcFields напишем следующий код:

procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
   ADOQuery1Sum.AsInteger:=ADOQuery1Values.AsInteger*ADOQuery1Count.AsInteger;
end;

Не забываем, что свойство AutoCalcFields, компонента TADOQuery должно быть установлено в True

Как видите, ничего сложного нету. Как я говорил раньше, можно сразу же в БД создать вычисляемое поле, а можно в проекте. Теперь при изменении значения в любой из ячеек, значение нашего вычисляемого поля автоматические будет меняться.

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к фа...
Всем привет, и вот мой первый урок, думаю урок полезный, так как работа с базами данных в Delphi очень важно, а тем более Access на мой взгляд самая легкая база данных, с которой можно работать в Delphi. В этой статье я расскажу Вам как эту самую Базу данных A...
Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удален...