Проектирование и создание базы данных предметной области

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Факультет информационных технологий

Кафедра программного обеспечения вычислительной

техники и автоматизированных систем

КУРСОВАЯ РАБОТА

по дисциплине «Базы данных»

Проектирование и создание базы данных предметной области

ОГУ 2 301 000. 62. 5413. 125 ПЗ

Руководитель

_____________ Щелоков С. А.

Исполнитель

студент гр. 11 Пинж (б)РПиС

___________ Емельянов А. В. «____"_______________2013г.

Оренбург 2013

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Факультет информационных технологий

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

Задание на курсовую работу

«Проектирование и создание базы данных предметной области»

Списание основных средств

Исходные данные: Вариант № 6

Разработать: Информационно-логическую модель предметной области по нотациям Ричарда Баркера;

Даталогическую модель реляционной БД, нормализованную до НФБК в СУБД SQL Server 2005 в виде диаграммы схемы отношений;

Запросы к БД на уровне представлений в СУБД SQL Server 2005;

Мероприятия по защите и обеспечению целостности базы данных;

Приложение интерфейса для SQL-сервера базы данных на языке программирования С# в программной среде Visual Studio 2005;

Инструкцию по администрированию и пользованию БД.

Дата выдачи задания «» 2013 г.

Руководитель Щелоков С. А.

Исполнитель студент группы 11 Пинж (б)

Емельянов А.В.

____________

Срок защиты работы «27 «12 2013г.

Аннотация

Пояснительная записка содержит 23 страницы, включает 11 рисунков, 1 таблицу, 4 источника, 1 приложение. Практическая часть выполнена в среде разработки MS Visual Studio 2010 и представляет проект формата *. sln. База данных спроектирована в MS SQL Server Express 2008 R2.

В данной работе спроектировано приложение, позволяющее автоматизировать документооборот предприятия по списанию основных средств.

Содержание

Введение

1. Проектирование базы данных

1.1 Описание предметной области

1.2 Анализ предметной области

1.3 Информационно-логическая модель

1.4 Даталогическая модель

1.5 Физическое проектирование

1.6 Мероприятия по защите и обеспечению целостности базы данных

2. Разработка клиентского приложения

2.1 Запросы к базе данных

2.2 Руководство пользователя

2.2.1 Системные требования

2.2.2 Работа с приложением

Заключение

Список использованной литературы

Приложение А

Введение

С ростом количества информации, необходимой для жизнедеятельности человека, возникает острая потребность в автоматизации ее обработки и решения вопроса об организации хранения необходимых данных. За все время существования данной проблемы было предложено множество различных решений. Одним из современных и наиболее востребованным способом является использование баз данных (БД). Современные системы управления базами данных (СУБД) предоставляют обширный перечень возможностей, как разработчикам, так и рядовым пользователя.

В курсовой работе ставиться задача — разработать проект базы данных для автоматизации документооборота в сфере обслуживания клиентов. В качестве основного инструмента должно быть представлено клиентское приложение, выполняющее всю основную бизнес-логику предметной области.

В качестве средств разработки будут использоваться СУБД Microsoft SQL Server 2008 R2, а также интегрированная среда разработки Microsoft Visual Studio 2010. За основы выбран язык программирования C# 3.0.

1. Проектирование базы данных

1.1 Описание предметной области

Основные средства — это имущество организации, предприятия со сроком полезного использования. На предприятии (Код, Название, Краткое название) имеется перечень основных средств разного типа (мебель, вычислительная техника, оборудование, инструменты и т. п.), закрепленных за подразделениями предприятия. Закрепление осуществляется на основании определенного документа, имеющего номер, дату, в нем указан срок закрепления средства за подразделением. При списании имущества предприятия создается комиссия, в которую входят руководитель предприятия, главный бухгалтер, главный инженер, главный энергетик, главный механик, руководитель подразделения, где находится средство, материально ответственный в подразделении. При списании средства формируется документ, имеющий номер, название, дату и подписи членов комиссии. В каждом документе может быть указано сразу несколько списываемых средств, для каждого указывается:

— инвентарный номер;

— название;

— принадлежностью к типу;

— дата постановки на учет в подразделении;

— плановый срок эксплуатации (год, месяц);

— балансовая стоимость (в рублях), определяемая при постановке средства на учет.

Для каждого средства также указывается дефект, ставший причиной списания (Код, Название) — износ, поломка, не имеющая восстановления, утрата и др.

1.2 Анализ предметной области

Для определения всех необходимых требований к разрабатываемой БД достаточно обратиться к описанию предметной области. Первым шагом станет выявления информационных потоков (рисунок 1). Затем выясним набор действий, выполняемых гипотетической фирмой, используя функциональную модель, построенной по технологии САПР IDEF, созданную с помощью CASE-средства Bpwin (рисунок 2), а более подробно описание работ или действий, проводимых на предприятие, показано в функциональной модели по методологии IDEF0 (рисунок 3).

база данные запрос пользователь

/

Рисунок 1 — Схема информационных потоков

Рисунок 2 — Модель IDEF0

Рисунок 3 — Детальная модель IDEF0

В дополнение к приведенным диаграммам можно добавить модель процессов на предприятии (рисунок 4), а так же модель документооборота (рисунок 5).

Рисунок 4 — Модель IDEF3

Рисунок 5 — Детальная модель DFD

1.3 Информационно-логическая модель

На начальном этапе проектирования, необходимо абстрагировать от конкретных СУБД и аппаратных средств. Для этого существует множество подходов, но в данной работе для отражения основного представления БД использовалась ER-диаграмма по нотации Ричарда Бракера (рисунок 6). Она достаточно точно позволяет отразить все сущности, выделенные при анализе предметной области.

/

Рисунок 6 — ER — диаграмма

1.4 Даталогическая модель

Даталогическая модель является моделью логического уровня и представляет собой отображение логических связей между элементами данных. Эта модель строится в терминах информационных единиц, допустимых в конкретной СУБД. На данную модель влияют конкретные факторы произошедшие на этапе разработки, как клиентского приложения, так и самой БД. Сущности, созданные непосредственно в MS SQL Server представлены на рисунке 7.

Рисунок 7 — Даталогическая модель базы данных

1.5 Физическое проектирование

Каждое поле таблицы в MS SQL Server имеют определенный формат (тип данных) при правильном подборе которых можно значительно сократить объем занимаемого дискового пространства файлам базы данных. Тип определяется особенностями реального представления хранящейся в поле информации. Так количество символов в строке должно быть соразмерно потребностям. Описание типов данных использованных в таблицах, а также назначение поля представлены в таблице 1.

Таблица 1 — Типы данных, использованные в таблицах

Таблица

Поле

Ключ

Тип

Описание

Предприятие

Код_предприятия

PK

int

Идентификатор строки

Название

varchar (MAX)

Полное название предприятия

Направление_деятельности

varchar (MAX)

Отрасль деятельности

Отдел

Код_отдела

PK

int

Идентификатор строки

Код_предприятия

FK

varchar (MAX)

Идентификатор предприятия

Название

varchar (MAX)

Полное название службы

Основные средства

Инвентарный_номер

PK

int

Идентификатор строки

Код_отдела

FK

int

Идентификатор отдела

Код_типа

FK

int

Идентификатор типа

Наименование

varchar (MAX)

Наименование средства

Номер_документа_з

FK

int

Номер документа о закреплении

Списание_до

datetime

Плановый срок эксплуатации

Стоимость

int

Балансовая стоимость

Номер_документа_с

FK

int

Номер документа о списании

Код_причины

FK

int

Код причины списания

Код комиссии

FK

int

Код комиссии по списанию

Сотрудники

Код_сотрудника

PK

int

Идентификатор строки

ФИО

varchar (MAX)

ФИО сотрудники

Код_отдела

FK

int

Код отдела

Код_должности

FK

int

Код должности

Должности

Код_должности

PK

int

Идентификатор строки

Название

varchar (MAX)

Название должности

Обязанности

varchar (MAX)

Обязанности

Комиссиия

Код_комиссии

PK

int

Идентификатор строки

Номер_документа_с

FK

int

Номер документа о списании

Код_сотрудника

varchar (MAX)

Код сотрудника

Типы средств

Код_типа

PK

int

Идентификатор строки

Название

varchar (MAX)

Предприятия

Причины списания

Код_причины

PK

int

Идентификатор строки

Формулировка

varchar (MAX)

Формулировка причины списания

Документы о закреплении

Номер_документа_з

PK

int

Идентификатор строки

Дата

datetime

Дата закрепления средства

Документы о списании

Номер_документа_с

PK

int

Идентификатор строки

Дата

datetime

Дата списания средства

1.6 Мероприятия по защите и обеспечению целостности базы данных

Основные задачи по обеспечению целостности и адекватности базы данных возложены на клиентское приложение. Проверка вводимых значений осуществляется по типу данных, в таблице с датами вида «период с __ до __» невозможно поставить вторую дату меньше первой. Всем датам принудительно присваивается текущее системное время. Доступ к базе данных осуществляется на уровне идентификации Windows, таким образом, каждый пользователь, обладающей учетной записью на текущем компьютере, обладает правом на работу с базой данной.

2. Разработка клиентского приложения

2.1 Запросы к базе данных

Разработанное приложение выполняет множество запросов к БД. Среди них и вставка, и удаление, и извлечение данных. Также некоторые запросы выполняют соединение таблиц.

Запрос на заполнение таблицы «Основные средства»:

SELECT[Основные средства]. Инвентарный_номер, [Основные средства]. Код_отдела, [Основные средства]. Код_типа, [Основные средства]. Наименование, [Основные средства]. Номер_документа_з, [Основные средства]. Списание_до, [Основные средства]. Стоимость, [Основные средства]. Номер_документа_с, [Основные средства]. Код_причины, [Основные средства]. Код_комиссии, Отдел. Название, Предприятие. Название AS Expr1, [Типы средств]. Название AS Expr2, [Документы о закреплении]. Дата, [Документы о списании]. Дата AS Expr3, [Причины списания]. Формулировка

FROM [Основные средства]

INNER JOIN Отдел

ON [Основные средства]. Код_отдела = Отдел. Код_отдела

INNER JOIN Предприятие

ON Отдел. Код_предприятия = Предприятие. Код_предприятия

INNER JOIN [Типы средств]

ON [Основные средства]. Код_типа = [Типы средств]. Код_типа

INNER JOIN [Документы о закреплении]

ON [Основные средства]. Номер_документа_з = [Документы о закреплении]. Номер_документа_з

LEFT OUTER JOIN [Причины списания]

ON [Основные средства]. Код_причины = [Причины списания]. Код_причины OR [Основные средства]. Код_причины = NULL

LEFT OUTER JOIN [Документы о списании]

ON [Основные средства]. Номер_документа_с = [Документы о списании]. Номер_документа_с OR [Основные средства]. Номер_документа_с = NULL

Запрос на подсчёт количества одноимённых средств, списанных в течении заданного периода:

SELECT COUNT (Наименование) AS 'Количество'

FROM [Основные средства]

INNER JOIN [Документы о списании]

ON [Основные средства]. Номер_документа_с = [Документы о списании]. Номер_документа_с

WHERE [Наименование] = @name AND [Документы о списании]. Дата > @date1 AND [Документы о списании]. Дата < @date2

Запрос на выборку списка участников комиссии, по дате проведения комиссии:

SELECT [Комиссия]. Номер_документа_с], [Сотрудники]. ФИО], [Должности]. Название], [Предприятие]. Название], [Отдел]. Название]

FROM [Комиссия]

INNER JOIN [Документы о списании]

ON [Комиссия]. Номер_документа_с] = [Документы о списании]. Номер_документа_с] INNER JOIN [Сотрудники]

ON [Комиссия]. Код_сотрудника] = [Сотрудники]. Код_сотрудника]

INNER JOIN [Должности]

ON [Сотрудники]. Код_должности] = [Должности]. Код_должности]

INNER JOIN [Отдел]

ON [Сотрудники]. Код_отдела] = [Отдел]. Код_отдела]

INNER JOIN [Предприятие]

ON [Отдел]. Код_предприятия] = [Предприятие]. Код_предприятия]

WHERE ([Документы о списании]. Дата] = @date)

Запрос на выборку списка основных средств, числящихся в указанном отделе, в указанную дату:

SELECT [Инвентарный_номер], [Наименование], [Типы средств]. Название], [Списание_до], [Стоимость]

FROM [Основные средства]

INNER JOIN [Типы средств]

ON [Основные средства]. Код_типа] = [Типы средств]. Код_типа]

INNER JOIN [Документы о закреплении]

ON [Основные средства]. Номер_документа_з] = [Документы о закреплении]. Номер_документа_з]

LEFT JOIN [Документы о списании]

ON (([Основные средства]. Номер_документа_с] = [Документы о списании]. Номер_документа_с]) AND ([Документы о списании]. Дата] > @date)) WHERE ([Код_отдела] = @id) AND ([Документы о закреплении]. Дата] < @date)

2.2 Руководство пользователя

2.2.1 Системные требования

Разработанная программа относительно нетребовательна к аппаратным ресурсам компьютера. У пользователя должны быть установлен MS. Net Framework версии 3.5 и выше. Также желательно использовать операционную систему Windows XP SP3 и выше.

2.2.2 Работа с приложением

При запуске программы появляется главное окно, на котором размещены управляющие кнопки. Для большего удобства кнопки разделены по категориям (рисунок 8).

Рисунок 8 — Главная форма

Кнопки в поле «Редактирование базы данных» отвечают за вывод на экран таблицы с возможностью редактирования данных. Для удобства пользования поля, соответствующие аналогичным полям в таблицах, связанных по ключу, редактируются кликом мыши и непосредственным выбором необходимого значения из появившейся формы (рисунок 9)

Рисунок 9 — Редактирование данных

Кнопки в поле «Выборка данных» открывают формы с независимыми таблицами и средствами выбора входных параметров для запроса. Отображение запрошенной информации осуществляется по нажатию кнопки.

Рисунок 10 — Список средств на заданную дату для заданного отдела

Рисунок 11 — Количество одноимённых средств, списанных за заданный промежуток времени

Рисунок 12 — Состав комиссии на заданную дату

Заключение

В ходе работы удалось убедиться в богатых возможностях MS SQL Server 2008 и удобства его использования в разных сферах, в частности для автоматизации документооборота предприятия какой-либо предметной области.

Все цели и задачи, поставленные перед работой, были выполнены практически в полной мере. Разработанная база данных полностью отражает предметную область, а клиентское приложение обладает достаточным минимумом функций по работе с подключенной базой и удобным пользовательским интерфейсом.

Список использованной литературы

1 Пирогов, В.Ю. MS SQL Server 2005. Программирование клиент-серверных приложений. — СПб.: БХВ-Петербург, 2006. — 336 с.: ил.

2 Клайн, Кевин. Справочник по SQL. — М.: КУДИЦ-Образ, 2006 — 832с.

3 Эндрю, Троелсен. Язык программирования C# 2010 и платформа. NET 4. 0, 5-е изд.: Пер. с англ. — М.: ООО «И.Д. Вильямс», 2011. — 1392с.

4 Пушников А. Ю. Введение в системы управления базами данных. Часть 1. Реляционная модель данных: Учебное пособие/Изд-е Башкирского ун-та. — Уфа, 1999. — 108 с. — ISBN 5−7477−0350−1.

Приложение А

Листинг кода программ

//Наиболее сложная форма — Основные средства

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

namespace SpisanieSredstv

{

public partial class FormOSr: Form

{

public bool select;

public FormOSr ()

{

InitializeComponent ();

}

private void основные_средстваBindingNavigatorSaveItem_Click (object sender, EventArgs e)

{

this. Validate ();

this. основные_средстваBindingSource. EndEdit ();

this. tableAdapterManager. UpdateAll (this. автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet);

}

private void FormOSr_Load (object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу «автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet. Основные_средства». При необходимости она может быть перемещена или удалена.

this. основные_средстваTableAdapter. Fill (this. автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet. Основные_средства);

}

private void основные_средстваDataGridView_CellDoubleClick (object sender, DataGridViewCellEventArgs e)

{

if (e. ColumnIndex == 2)

{

FormOtdel fp = new FormOtdel (true);

fp. Owner = this;

if (fp. ShowDialog () == System. Windows. Forms. DialogResult. OK)

{

string[] buf = ((string)this. Tag). Split ('+');

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["dataGridViewTextBoxColumn2"]. Value = Convert. ToInt32(buf[0]);

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Название"]. Value = buf[1];

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Expr1"]. Value = buf[2];

}

}

if (e. ColumnIndex == 5)

{

FormTip fp = new FormTip (true);

fp. Owner = this;

if (fp. ShowDialog () == System. Windows. Forms. DialogResult. OK)

{

string[] buf = ((string)this. Tag). Split ('+');

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["dataGridViewTextBoxColumn3"]. Value = Convert. ToInt32(buf[0]);

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Название_типа"]. Value = buf[1];

}

}

if (e. ColumnIndex == 7)

{

FormDocZ fp = new FormDocZ (true);

fp. Owner = this;

if (fp. ShowDialog () == System. Windows. Forms. DialogResult. OK)

{

string[] buf = ((string)this. Tag). Split ('+');

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["dataGridViewTextBoxColumn5"]. Value = Convert. ToInt32(buf[0]);

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Дата"]. Value = buf[1];

}

}

if (e. ColumnIndex == 11)

{

FormDocS fp = new FormDocS (true);

fp. Owner = this;

if (fp. ShowDialog () == System. Windows. Forms. DialogResult. OK)

{

string[] buf = ((string)this. Tag). Split ('+');

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["dataGridViewTextBoxColumn8"]. Value = Convert. ToInt32(buf[0]);

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Дата_списания"]. Value = buf[1];

}

}

if (e. ColumnIndex == 14)

{

FormPrich fp = new FormPrich (true);

fp. Owner = this;

if (fp. ShowDialog () == System. Windows. Forms. DialogResult. OK)

{

string[] buf = ((string)this. Tag). Split ('+');

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["dataGridViewTextBoxColumn9"]. Value = Convert. ToInt32(buf[0]);

основные_средстваDataGridView. Rows[e. RowIndex]. Cells["Формулировка"]. Value = buf[1];

}

}

}

}

}

//запрос на выборку средств

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Data. SqlClient;

namespace SpisanieSredstv

{

public partial class FormSpisokZ: Form

{

public string conStr = «Data Source=PC\SQLEXPRESS; Initial Catalog="Автоматизация документооборота по списанию основных средств предприятия»; Integrated Security=True";

public SqlConnection conn;

public List< int> OfficeID;

public List< int> ServiceID;

public FormSpisokZ ()

{

InitializeComponent ();

dataGridView1. RowHeadersVisible = false;

OfficeID = new List< int>();

ServiceID = new List< int>();

conn = new SqlConnection (conStr);

SqlCommand myCom = conn. CreateCommand ();

myCom. CommandText = «SELECT [Код_предприятия], [Название] FROM [Предприятие]»;

conn. Open ();

var reader = myCom. ExecuteReader ();

while (reader. Read ())

{

comboBox1. Items. Add (reader. GetString (1));

OfficeID. Add (reader. GetInt32(0));

}

reader. Close ();

conn. Close ();

comboBox1. SelectedIndex = 0;

}

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{

comboBox2. Items. Clear ();

//dataGridView1. Rows. Clear ();

comboBox2. Text = null;

ServiceID. Clear ();

SqlCommand myCom = conn. CreateCommand ();

myCom. CommandText = «SELECT [Код_отдела], [Название] FROM [Отдел] WHERE [Код_предприятия] = @id»;

myCom. Parameters. Add («@id», SqlDbType. Int);

myCom. Parameters["@id"]. Value = OfficeID[comboBox1. SelectedIndex];

conn. Open ();

var reader = myCom. ExecuteReader ();

while (reader. Read ())

{

comboBox2. Items. Add (reader. GetString (1));

ServiceID. Add (reader. GetInt32(0));

}

reader. Close ();

conn. Close ();

if (ServiceID. Count > 0)

comboBox2. SelectedIndex = 0;

}

private void button1_Click (object sender, EventArgs e)

{

if (ServiceID. Count == 0) return;

SqlCommand myCom = conn. CreateCommand ();

myCom. CommandText = «SELECT [Инвентарный_номер], [Наименование], [Типы средств]. Название], [Списание_до], [Стоимость] FROM [Основные средства] INNER JOIN [Типы средств] ON [Основные средства]. Код_типа] = [Типы средств]. Код_типа] INNER JOIN [Документы о закреплении] ON [Основные средства]. Номер_документа_з] = [Документы о закреплении]. Номер_документа_з] LEFT JOIN [Документы о списании] ON (([Основные средства]. Номер_документа_с] = [Документы о списании]. Номер_документа_с]) AND ([Документы о списании]. Дата] > @date)) WHERE ([Код_отдела] = @id) AND ([Документы о закреплении]. Дата] < @date)»;

myCom. Parameters. Add («@id», SqlDbType. Int);

myCom. Parameters["@id"]. Value = ServiceID[comboBox2. SelectedIndex];

myCom. Parameters. Add («@date», SqlDbType. DateTime);

myCom. Parameters["@date"]. Value = dateTimePicker1. Value. Date;

SqlDataAdapter dataAdapter = new SqlDataAdapter (myCom);

DataSet ds = new DataSet ();

dataAdapter. Fill (ds);

conn. Close ();

dataGridView1. DataSource = ds. Tables[0]. DefaultView;

}

}

}

//Запрос на подсчёт однотипных средств

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Data. SqlClient;

namespace SpisanieSredstv

{

public partial class FormDinamikaZ: Form

{

public string conStr = «Data Source=PC\SQLEXPRESS; Initial Catalog="Автоматизация документооборота по списанию основных средств предприятия»; Integrated Security=True";

public SqlConnection conn;

public FormDinamikaZ ()

{

InitializeComponent ();

dataGridView1. RowHeadersVisible = false;

dataGridView1. ColumnHeadersVisible = false;

dateTimePicker2. MinDate = dateTimePicker1. Value;

}

private void button1_Click (object sender, EventArgs e)

{

if (textBox1. Text == null) return;

conn = new SqlConnection (conStr);

SqlCommand myCom = conn. CreateCommand ();

myCom. CommandText = «SELECT COUNT (Наименование) AS 'Количество' FROM [Основные средства] INNER JOIN [Документы о списании] ON [Основные средства]. Номер_документа_с = [Документы о списании]. Номер_документа_с WHERE [Наименование] = @name AND [Документы о списании]. Дата > @date1 AND [Документы о списании]. Дата < @date2»;

myCom. Parameters. Add («@name», SqlDbType. VarChar);

myCom. Parameters["@name"]. Value = textBox1. Text;

myCom. Parameters. Add («@date1», SqlDbType. DateTime);

myCom. Parameters["@date1"]. Value = dateTimePicker1. Value. Date;

myCom. Parameters. Add («@date2», SqlDbType. DateTime);

myCom. Parameters["@date2"]. Value = dateTimePicker2. Value. Date;

SqlDataAdapter dataAdapter = new SqlDataAdapter (myCom);

DataSet ds = new DataSet ();

dataAdapter. Fill (ds);

conn. Close ();

dataGridView1. DataSource = ds. Tables[0]. DefaultView;

textBox2. Text = Convert. ToString (dataGridView1. Rows[0]. Cells[0]. Value);

}

private void dateTimePicker1_ValueChanged (object sender, EventArgs e)

{

dateTimePicker2. MinDate = dateTimePicker1. Value;

}

}

}

// Запрос на выборку участников комиссии

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Data. SqlClient;

namespace SpisanieSredstv

{

public partial class FormKomZ: Form

{

public string conStr = «Data Source=PC\SQLEXPRESS; Initial Catalog="Автоматизация документооборота по списанию основных средств предприятия»; Integrated Security=True";

public SqlConnection conn;

// public List< int> OfficeID;

// public List< int> ServiceID;

public FormKomZ ()

{

InitializeComponent ();

dataGridView1. RowHeadersVisible = false;

conn = new SqlConnection (conStr);

SqlCommand myCom = conn. CreateCommand ();

}

private void button1_Click (object sender, EventArgs e)

{

dataGridView1. RowHeadersVisible = false;

SqlCommand myCom = conn. CreateCommand ();

myCom. CommandText = «SELECT [Комиссия]. Номер_документа_с], [Сотрудники]. ФИО], [Должности]. Название], [Предприятие]. Название], [Отдел]. Название] FROM [Комиссия] INNER JOIN [Документы о списании] ON [Комиссия]. Номер_документа_с] = [Документы о списании]. Номер_документа_с] INNER JOIN [Сотрудники] ON [Комиссия]. Код_сотрудника] = [Сотрудники]. Код_сотрудника] INNER JOIN [Должности] ON [Сотрудники]. Код_должности] = [Должности]. Код_должности] INNER JOIN [Отдел] ON [Сотрудники]. Код_отдела] = [Отдел]. Код_отдела] INNER JOIN [Предприятие] ON [Отдел]. Код_предприятия] = [Предприятие]. Код_предприятия] WHERE ([Документы о списании]. Дата] = @date) «;

myCom. Parameters. Add («@date», SqlDbType. DateTime);

myCom. Parameters["@date"]. Value = dateTimePicker1. Value. Date;

SqlDataAdapter dataAdapter = new SqlDataAdapter (myCom);

DataSet ds = new DataSet ();

dataAdapter. Fill (ds);

conn. Close ();

dataGridView1. DataSource = ds. Tables[0]. DefaultView;

}

}

}

ПоказатьСвернуть
Заполнить форму текущей работой