Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснительная к курсачу.docx
Скачиваний:
67
Добавлен:
12.03.2015
Размер:
749.7 Кб
Скачать

Просмотр базы данных

В данном меню предоставляется возможность просматривать и редактировать все основные таблицы базы данных (кроме 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();

}

}

Каждая таблица представлена в приложении совокупностью компонентов. Это:

  1. DataTable, которая хранит непосредственно данные, загруженные из базы данных

  2. OleDbDataAdapter– объект, который производит загрузку данных вDataTableс помощью заданной нами командыOleDbCommand, содержащей SQL-запросselect.

  3. OleDbCommandBuilder– автоматический конструкторSQL-запросов. Он необходим для создания запросов на вставку, обновление и удаление строк из таблиц.

  4. 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);

}

На форме просмотра типов ремонта доступна функция создания отчета о типах выполняемых ремонтов.