Private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)




{

MyDBDataSet.SotrudnikiRow r = (MyDBDataSet.SotrudnikiRow)((DataRowView)sotrudnikiBindingSource.Current).Row;

dogovorBindingSource.Filter = "idsotr = " + r.id.ToString();

}

Если необходимо, чтоб при нажатии на какую-либо кнопку отображались договора всех сотрудников, не зависимо от выбранного, то в ее обработчике прописываем:

dogovorBindingSource.Filter =string.Empty;

Теперь о формировании отчетов. Пусть нам необходимо сформировать список контрагентов, чье наименование содержит введенное пользователем значение. Для начала идем в редактор dataset и у таблички KontrTableAdapter выбираем правой кнопкой Add query. Выбираем Use select statements, далее select with returns rows, далее дополняем имеющийся там запрос строчкой:

WHERE (Name like ’%@Name%’)

В поле MethodName раздела FillDataTable пишем FillByName, во втором разделе – GetDataByName.

С датами и числовыми значениями все согласно синтаксису SQL.

Соответственно, если нужно будет делать несколько разных отчетов, то будет несколько разных методов.

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

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

}

}

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: