- •Пояснительная записка
- •Введение
- •Анализ предметной области
- •Структура базы данных
- •Клиент для работы с бд
- •Меню соединения с базой данных
- •Главное меню приложения
- •Просмотр базы данных
- •Регистрация ремонтов
- •План на текущий месяц
- •Просроченные ремонты
- •Анализ видов ремонта
- •По срокам
- •По дате окончания
- •По стоимости
- •Поиск ремонтов
- •По виду
- •По марке
- •За период
- •За все время
- •За месяц
- •Заключение
- •Источники
Просмотр базы данных
В данном меню предоставляется возможность просматривать и редактировать все основные таблицы базы данных (кроме MONTHS, поскольку это внутренняя «служебная» таблица).
Загрузка таблиц происходит во время инициализации приложения после соединения с базой данных. Как говорилось выше, окно соединения возвращает главному классу параметры для соединения с БД, после чего, если соединение успешно установлено, происходит извлечение из базы всех таблиц в соответствующие им компоненты.
/* инициализация приложения - загрузка основных компонентов */
private void Viewer_Load(object sender, EventArgs e) {
if (Login.Show(out path, out user, out password) == DialogResult.OK) {
try {
// созание соединения
con = new OleDbConnection("Provider=LCPI.IBProvider;" +
"data source=localhost:" + path + ";" +
"ctype=win1251;" + "user id=" + user +
";password=" + password);
con.Open();
isOpen = true;
// начало транзакции
trans = con.BeginTransaction();
// загрузка таблиц
// marks
LoadTable("mark", out adMark, out cbMark, out dtMark);
bsMarks.DataSource = dtMark;
// countries
LoadTable("country", out adCountry,
out cbCountry,
out dtCountry);
bsCountries.DataSource = dtCountry;
/*
... и т.д. для всех таблиц
*/
} catch (OleDbException myOLEDBException) {
/*
... обработка исключений
*/
} catch (Exception myException) {
// прочие исключения
Console.WriteLine("----------------------------------------");
Console.WriteLine(myException.Message);
MessageBox.Show(myException.Message, "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//загрузка формы регистрации ремонтов
registration_load();
/*
... загрузка прочих форм
*/
} else {
MessageBox.Show("Отмена соединения с БД.\nВыход из приложения",
"Выход");
this.Close();
}
}
Каждая таблица представлена в приложении совокупностью компонентов. Это:
DataTable, которая хранит непосредственно данные, загруженные из базы данных
OleDbDataAdapter– объект, который производит загрузку данных вDataTableс помощью заданной нами командыOleDbCommand, содержащей SQL-запросselect.
OleDbCommandBuilder– автоматический конструкторSQL-запросов. Он необходим для создания запросов на вставку, обновление и удаление строк из таблиц.
BindingSourceиBindingNavigator– компоненты, необходимые для «перемещения» по таблицеDataTableкурсора и записи изменений, которые пользователь делает в таблице.BindingNavigator – визуальный компонент, расположенный над таблицей в окне просмотра.
При загрузке БД происходит обращение к функции LoadTable. Данная функция загружает каждую указанную по имени таблицу в нужные нам компоненты:
/* инициализация приложения - загрузка таблицы
* table_name - имя таблицы из БД
* adapter - соответствующий таблице адаптер
* builder - соответствующий таблице конструктор команд
* table - соответствующая таблице DataTable */
private void LoadTable(string table_name,
out OleDbDataAdapter adapter,
out OleDbCommandBuilder builder,
out DataTable table) {
cmd = new OleDbCommand("select * from " + table_name, con, trans);
table = new DataTable(table_name);
adapter = new OleDbDataAdapter(cmd);
builder = new OleDbCommandBuilder(adapter);
adapter.SelectCommand = cmd;
adapter.InsertCommand = builder.GetInsertCommand();
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.Fill(table);
}
В таблицах, доступных из меню просмотра, можно добавлять, удалять и редактировать строки. Для записи изменений, сделанных с таблицами необходимо нажать кнопку «OK» на управляющей панели BindingNavigator. При этом происходит вызов метода:
/* сохранение результатов в текущей таблице */
private void tsView_Save_Click(object sender, EventArgs e) {
adCurrent.Update((DataTable)bsCurrent.DataSource);
((DataTable)bsCurrent.DataSource).Clear();
adCurrent.Fill((DataTable)bsCurrent.DataSource);
}
На форме просмотра типов ремонта доступна функция создания отчета о типах выполняемых ремонтов.