Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_DB.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
295 Кб
Скачать
☆

KontrTableAdapter.FillByName(myDbDataSet.Kontr,textBox1.Text);

Далее вам необходимо спроектировать все формы, которые понадобятся для работы и разместить на них все визуальные компоненты работы с таблицами. После того, как вы это сделаете, можно переходить дальше.

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

Первое, что нам необходимо сделать, это определить перечисление для того, чтобы в основной программе определять тип обрабатываемого справочника. Пусть в нашей программе определено два справочника(контрагенты и сотрудники). Модифицируем наш управляющий класс, добавив в него это перечисление. Объявим его так:

Public enum Kontr{kontr,sotrudnik};

Теперь объявим у класса поле типа SqlConnecion, которое будет определять текущее подключение:

Public SqlConnection conn;

Теперь объявим метод установки подключения. Он нам понадобится, если в процессе работы программы будем менять подключение. В качестве параметров передадим ему путь к БД и формы, на которых размещены объекты подключения к БД. Пусть в наем примере эти объекты объявлены на Form1 и Form2. В методе будем создавать новое подключение и перенастраивать на него все компоненты работы с БД:

public void SetConnecton(string dbf,Form1 th, Form2 th2)

{

ConsStr = dbf;

conn = new SqlConnection(ConsStr);

th.kontrTableAdapter.Connection = conn;

th.sotrudnikiTableAdapter.Connection = conn;

th2.sotrudnikiTableAdapter.Connection = conn;

th2.kontrTableAdapter.Connection = conn;

th.kontrTableAdapter.Fill(th.myDBDataSet1.Kontr1);

th.sotrudnikiTableAdapter.Fill(th.myDBDataSet.Sotrudniki1);

th2.kontrTableAdapter.Fill(th.myDBDataSet.Kontr);

th2.sotrudnikiTableAdapter.Fill(th.myDBDataSet.Sotrudniki);

}

Теперь напишем метод, который будет сохранять измененные данные(например, после того как пользователь сохраняет данные после редактирования или добавления нового элемента). В метод будем передавать перечисление, определяющее тип справочника и форму, на которой расположены объекты подключения к БД. Этот метод будем вызывать при возврате к списку данных.

public void SaveData(Kontr h,Form1 th)

{

if (h == Kontr.kontr)

{

th.kontrBindingSource.EndEdit();

th.kontrTableAdapter.Update(th.myDBDataSet.Kontr);

th.kontrTableAdapter.Fill(th.myDBDataSet.Kontr);

}

}

По этому же принципу напишем метод удаления текущего элемента выбранного справочника:

public void removecur(Kontr h,Form1 th)

{

if (h == Kontr.sotrudnik)

{

th.sotrudnikiBindingSource.RemoveCurrent();

th.sotrudnikiBindingSource.EndEdit();

th.sotrudnikiTableAdapter.Update(th.myDBDataSet.Sotrudniki);

}

}

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

public void Edit_Add(bool add, Kontr h, Form1 th, Form f)

{

if (h == Kontr.sotrudnik)

{

Form2 f2 = null; //для редактирования данных о сотруднике //используется вторая форма, а для контрагентов, например, будет //третья.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]