
Методуказания II семестр
.pdflblStatus->ForeColor = Color::Blue; lblStatus->Text = "Файл успешно открыт"; mnuClear_Click(sender, e);
vivod();
}
else{
lblStatus->ForeColor = Color::Red; lblStatus->Text = "Файл открыть не удалось";
}
}
}
private: System::Void mnuDel_Click(System::Object^ sender, System::EventArgs^ e) { ListView::SelectedListViewItemCollection^ item = this->lvList->SelectedItems; System::Collections::IEnumerator^ myEnum = item->GetEnumerator();
while ( myEnum->MoveNext() ){ needSave = true;
ListViewItem^ item = safe_cast<ListViewItem^>(myEnum->Current); ph = ph->del(ph, Convert::ToInt32(item->SubItems[0]->Text)); mnuClear_Click(sender, e);
vivod();
}
}
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { static int times = 0;
if(lblStatus->Visible == true){ lblStatus->Visible = false; if(times == 3){
timer1->Enabled = false; times = 0;
}
}else{
lblStatus->Visible = true; times++;
}
}
private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
if(needSave){
if(MessageBox::Show(this, "Данные были изменены. Вы уверены что хотите закрыть приложение?","Получение информации", MessageBoxButtons::YesNo,MessageBoxIcon::Question) == ::DialogResult::No)
e->Cancel = true;
}
}
Elements.h
public: System::String^ getName(){ return txtName->Text;
}
public: System::String^ getDate(){ return mtxDate->Text;
}
public: System::Single getPrice(){
return Convert::ToSingle(txtPrice->Text);
}
private: System::Void btnOk_Click(System::Object^ sender, System::EventArgs^ e) { String^ msgText = "";
if(Equals(txtName->Text, "") == true){
msgText = "У товара должно быть название"; txtName->Focus();
}else if(Equals(mtxDate->Text, " . .") == true){ msgText = "У товара должна быть дата поступления"; mtxDate->Focus();
}else if(Equals(txtPrice->Text, "") == true){
41
msgText = "У товара должна быть цена"; txtPrice->Focus();
}
if(Equals(msgText,"") == false){ MessageBox::Show(this, msgText,"Сообщение",
MessageBoxButtons::OK,MessageBoxIcon::Error); return;
}
try{
Convert::ToDateTime(mtxDate->Text); }catch(...){
MessageBox::Show(this, "Введите дату поступления правильно!","Сообщение об ошибке", MessageBoxButtons::OK,MessageBoxIcon::Error);
mtxDate->Focus(); return;
}
try{
Convert::ToSingle(txtPrice->Text); }catch(...){
MessageBox::Show(this, "Введите число, например, 5,9!","Сообщение об ошибке", MessageBoxButtons::OK,MessageBoxIcon::Error);
txtPrice->Focus(); return;
}
this->DialogResult = ::DialogResult::OK; Close();
}
42

ЛАБОРАТОРНАЯ РАБОТА №12
Работа с базой данных
Цель работы: ознакомиться с принципами работы реляционных баз данных.
План работы: в течение одного занятия студент должен изучить материал текущей лабораторной работы и продемонстрировать свои навыки преподавателю. В результате чего студент получает две оценки: за приложение и за изученный материал.
Задание: создать приложение в для работы с базой данных.
Методические указания
1. Источники данных
Источниками данных для приложения могут служить: реляционные базы данных, вебсервисы, объекты и т.д. Когда вы проектируете приложение для работы с существующими источниками данных, вы должны связать ваше приложение данными. Для такой связи используются объекты классов, основными являются следующие: Data Source(System::Data),Database Tables (System::Data::DataTable), Table Columns (System::Data::DataColumn), Table Rows (System::Data::DataRow).
2. Доступ и отображение данных
Следующие три компонента используются вместе для доступа и отображения данных на форме приложения: DataGridView (таблица для работы с данными базы данных), BindingSource (средство связи с данными), BindingNavigator (панель инструментов для навигации и манипулированием (вставить/удалить запись) данными).
Ход работы
Создайте файл базы данных в Microsoft Access и сохраните его под именем, например, db1.
База данных содержит Таблицы, Запросы, Отчеты, Формы. Для создания таблиц в списке
Объекты, выбираем и
.
В режиме конструктора ввести названия полей, тип поля выбирать из списка
При закрытии введите название таблицы, например, product. На вопрос о ключевом поле ответьте «Да».
43

Нажмите на таблицу product 2 раза и заполните несколько записей значениями
Создайте проект для проектирования приложения с графическим интерфейсом
6.Поместите на форму объект OleDbDataAdapter. Перед Вами откроется следующее окно
7.Нажмите «New Connection»
8.В появившемся окне:
в качестве источника данных (Data source) должно быть выбрано Microsoft Access Database File (OLE DB);
нажмите на кнопку «Browse» и укажите путь к файлу вашей базы данных;
нажмите на кнопку «Test Connection», для того чтобы проверить установилось ли соединение с базой данных.
44

9. Нажмите «Ok», чтобы вернуться в окно «Data Adapter Configuration Wizard». Нажмите на кнопку «Next», потом снова на кнопку «Next», затем в появившемся окне запишите запрос «Select * from product»
10.Нажмите на кнопку «Next», перед вами появится следующее окно
11.Нажмите на кнопку «Finish».
12.В области невизуальных объектов у вас появились следующие объекты
13.Далее в свойствах объекта oleDbDataAdapter1 выберите GenerateDataSet…
45

14.Перед вами откроется следующее окно
15.Нажмите «Ok». В области невизуальных объектов у вас появится объект dataSet11
16.Поместите на форму визуальный объект dataGridView1 класса DataGridView и в разделе ChooseDataSource выберите таблицу product, после чего у вас появится невизуальный объект productBindingSource
17.Отредактируйте колонки таблицы dataGridView1, для этого в свойстве Edit Columns удалите колонку «Код», а в свойстве HeaderText каждой колонки запишите русское название столбца.
18.Поместите на форму объект bindingNavigator1 класса BindingNavigator, в таблице свойств объекта установите свойство BindingSource значение productBindingSource.
19.Окно дизайнера форм примет следующий вид
20.В обработчик события загрузки формы поместите следующий код:
46

oleDbDataAdapter1->Fill(dataSet11);
21.Запустите проект на выполнение
22.В объекте bindingNavigator1 добавьте разделитель и кнопку
23.Для кнопки установите следующие свойства
Name |
tsbUpdate |
Image |
Добавьте картинку |
ImageTransparentColor |
Установите цвет фона, что бы он был |
|
прозрачным |
ToolTipText |
Обновить |
24. В обработчик события кнопки поместите следующий код, для того что бы все изменения можно было сохранить в базу данных:
oleDbDataAdapter1->Update(dataSet11);
25.Для каждой кнопки объекта bindingNavigator1 в свойстве ToolTipText напишите русский вариант всплывающего ярлыка.
26.Запустите проект добавьте новую запись, нажмите на кнопку «Обновить». Теперь информация будет сохранена в базу данных.
47