Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание столбцов, основанных на выражении




 

При создании базы данных не следует помещать в нее значения, которые могут быть получены из уже имеющихся данных. Ранее была создана база данных BDTur_firm.mdb, в которой есть таблица «Туры». В этой таблице имеется поле «цена», где указывается стоимость туров. На практике может понадобиться значение цены, выраженное в различных валютах, значение с учетом налогов, значение со скидкой и т. п. Для каждого конкретного случая можно получить дополнительное поле (вычисляемое), не вводя его в саму базу данных.

Технология ADO.NET позволяет создавать объекты DataColumn, основанные на выражении. Создадим новое Windows-приложение.

В коде формы, подключим пространство имен: using System.Data.OleDb;

В классе формы определяем строки CommandText и ConnectionString:

string commandText = "SELECT Информация, [Код тура], Название, Цена FROM Туры";
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@”D:\ВМИ\For ADO\BDTur_firm.mdb";

В конструкторе формы программно создаем все объекты для вывода таблицы «Туры» в элемент управления DataGridView:

public Form1() {
InitializeComponent();
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = conn;
myCommand.CommandText = commandText;
OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
dataAdapter. SelectCommand = myCommand;
DataSet dsTours = new DataSet();
DataTable dtTours = dsTours.Tables.Add("Туры");
DataColumn ddDtour = dtTours.Columns.Add("Код тура", typeof(Int32));
ddDtour.Unique = true;
DataColumn dcName = dtTours.Columns.Add("Название");
DataColumn dcPrice = dtTours.Columns.Add("Цена", typeof(Decimal));
DataColumn dcInformation = dtTours.Columns.Add("Информация");
conn.Open();
dataAdapter.Fill(dsTours.Tables["Туры"]);
conn.Close();
dataGridl.DataSource = dsTours.Tables["Туры"].DefaultView;
}

Запустим приложение (рис. 107).

Рис. 107. Вывод содержимого таблицы «Туры»

Теперь добавим два объекта DataColumn, в которых будет вычисляться налог и скидка, после добавления объекта dcPrice:

DataColumn dcPrice = dtTours.Columns.Add("Цена", typeof(Decimal));
DataColumn dcPriceNDS = dtTours.Columns.Add("Цена c НДС", typeof(Decimal));
dcPriceNDS.Expression = "Цена*0.15+Цена";
DataColumn dcPricewithDiscount = dtTours.Columns.Add("Цена го скидкой", typеof(Decimal));
dcPricewithDiscount.Expression = "Цена-Цена*0.10";
...

Свойство Expression созданного объекта DataColumn задает выражения для всех значений заданного поля (рис. 108).

Рис. 108. Программное формирование полей, основанных на значении

Свойство Expression поддерживает также агрегатные функции, объединение строк, ссылки на родительские и дочерние таблицы.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 437; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.