Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#_Часть1.doc
Скачиваний:
138
Добавлен:
19.08.2019
Размер:
2.54 Mб
Скачать
    1. Вычисляемые поля

Таблица данных в наборе данных может содержать столбцы, значения которых вычисляются, а не считываются из базы данных. Например, в записи, содержащей подробные сведения о сотрудниках, часто имеет смысл определять зарплату с надбавками путем умножения исходной зарплату на некоторый коэффициент. Определять вычисляемые столбцы можно с помощью выражений.

Синтаксис выражения состоит из стандартных операторов. К значениям данных можно обращаться по имени соответствующего столбца (как это делается в инструкциях SQL), а также включать в выражения функции агрегирования, такие как count, avg, sum и др.

Например, выражение для столбца salary, который отображает значение зарплаты, умноженное на коэффициент k, может быть следующим:

salary*k

Для обращения к столбцам дочерних таблиц можно использовать зарезервированное слово Child, после которого указывается имя столбца. Например, следующее выражение возвращает среднее значение столбца salary во всех связанных дочерних записях:

Avg(Child.salary)

Для создания выражений для столбцов в Конструкторе наборов данных:

  1. Откройте таблицу в Конструкторе наборов данных.

  2. В требуемой таблице данных выберите столбец, в который требуется добавить выражение, или добавьте к таблице новый столбец.

  3. В окне Свойства введите выражение в свойстве Expression.

Для создания выражений для столбцов в компоненте DataGridView:

  1. Создайте в DataGridView новый столбец. Для этого в окне Задачи для объекта DataGridView выберите команду Добавить столбец.

  1. В появившемся окне Добавить столбец введите Имя столбца и Текст заголовка. Нажмите кнопку Добавить, а затем Закрыь.

Результат:

  1. Настройте свойства нового поля. Для этого в окне Задачи для объекта DataGridView выберите команду Правка столбцов.

  2. В появившемся окне Правка столбцов установите свойство: DataPtopertyName = (нет) – новый столбец не должен быть привязан ни к какому полю

  1. Установите другие необходимые свойства, например, ширину столбца и т.д. и нажмите ОК.

  2. В функции обработки события создания вычисляемого поля пропишите код, аналогичный следующему:

private void button1_Click(object sender, EventArgs e)

{

//Создание нового столбца с указанием названия и типа данных

DataColumn col = new DataColumn("имя",typeof(тип));

// Добавление столбца в существующую таблицу

Имя_БД.имя_таблицы.Columns.Add(col);

// заполнение столбца значениями

for (int i = 0; i < Имя_БД.имя_таблицы.Count; i++) {

Convert.ToInt16(Имя_БД.имя_таблицы.[i]["имя"])= значениеж

}

//Отображение столбца в DataGridView

DataGridView.Columns[№1].DataPropertyName = bDDataSet.DataTable1.Columns[№2].ToString(); }

где №1 – номер вычисляемого поля в таблице на форме; №2 – номер нового поля в таблице БД. Пример.

private void Form4_Shown(object sender, EventArgs e)

{

//Создание нового столбца с указанием названия и типа данных

DataColumn col = new DataColumn("Calc", typeof(double));

// Добавление столбца в существующую таблицу

sotrudnicDataSet1.All.Columns.Add(col);

// Заполнение столбца значениями

for (int i = 0; i < sotrudnicDataSet1.All.Count; i++)

{if (Convert.ToInt16(sotrudnicDataSet1.All[i]["salary"]) < 2000)

{

sotrudnicDataSet1.All[i]["Calc"] =

(Convert.ToDouble(sotrudnicDataSet1.All[i]["salary"]) * 1.2);

}

else

{

sotrudnicDataSet1.All[i]["Calc"] =

Convert.ToDouble(sotrudnicDataSet1.All[i]["salary"]);

}

}

//Отображение столбца в DataTableGridView

allDataGridView.Columns[6].DataPropertyName =

sotrudnicDataSet1.All.Columns[6].ToString();

}

Результат: