Access настройка

Источник: devdelph

Всем привет, опять же, пишу статью про 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.

Все, теперь добавим все наши поля. Для этого, нам необходимо активировать наш запрос и подключение. В свойстве компонента TADOConenction - Connectedустанавливаем 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

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

Исходник можно скачать тут


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=25805