Разработка модуля по учету графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо автоматизированной информационной системы АРМ "Нарядчик"
Анализ функциональных возможностей автоматизированной информационной системы АРМ "Нарядчик". Разработка базы данных и web-интерфейса модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо АИС АРМ "Нарядчик".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 06.07.2015 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
ЭкОЗ - Экспертное определение состояния здоровья машиниста. Программа разработчик ЗАО Нейроком.
Электронный паспорт локомотива - автоматизированная система ведения и учета технических паспортов локомотива - их электронных копий.
ЭСУП ТПС - ИНФОРМАЦИОННая СИСТЕМа УЧЕТА ПРОСТОЕВ ТЯГОВОГО ПОДВИЖНОГО СОСТАВА.
ЭЦ - пост ЭЦ. Пост электрической централизации.
IRIS - Международный стандарт железнодорожной промышленности
ЦД |
Департамент управления перевозками |
|
НСИ |
Нормативно-справочная информация |
|
АСОУП-2 |
Автоматизированная система оперативного управления перевозками |
|
ОКДБ |
Подсистема АСОУП «Оперативный контроль дислокации бригад» |
|
ГИД Урал - ВНИИЖТ |
Автоматизированная система ведения и анализа графика исполненного движения (ГИД Урал - ВНИИЖТ) |
|
ПТК |
Программно-технический комплекс |
|
АРМ |
Автоматизированное рабочее место |
|
АС |
Автоматизированная система |
|
АСУ |
Автоматизированная система управления |
|
ЦУП |
Центр управления перевозками ОАО «РЖД» |
|
ДЦУП |
Дорожный центр управления перевозками |
|
АСУТ |
Автоматизированная система управления локомотивным хозяйством |
|
АРМ ТЧБ |
АРМ нарядчика локомотивного депо АСУТ |
|
АРМ ТЧД |
АРМ диспетчера АСУТ |
|
АСУТ-Т |
Информационно-сигнальная система контроля работы локомотивов и локомотивных бригад (подсистема АСУТ дорожно-регионального уровня) |
|
ПЛАН-ЛБ |
Автоматизированная система суточного планирования локомотивных бригад |
|
СПРБ |
Сменно-суточный план регулирования локомотивными бригадами грузового движения |
|
ТПРБ |
Текущий план регулирования локомотивными бригадами грузового движения |
|
ТНЦ |
Локомотивный диспетчер ДЦУП |
|
ТНЦО |
Оператор при ТНЦ |
|
ТЧД |
Дежурный по локомотивному депо |
|
ЛБ |
Локомотивная бригада |
|
ФИО |
Фамилия, имя, отчество |
|
СОИ |
Система оперативного информирования |
Сообщение код 90 - о маневрах локомотивов в депо и на станции.
Сообщение 235 - об изменении справочных данных локомотива.
Перечень сокращений и терминов
АСОУП - автоматизированной системой оперативного управления перевозками
АРМ ТЧЗЭ -АРМ Заместителя начальника депо по эксплуатации АСУТ.
КИП - Контрольно-инструкторская поездка
ОКДБ, ОКДЛ - блок ОКДБ (оперативный контроль дислокации бригад) и ОКДЛ (оперативный контроль дислокации локомотивов) входят в состав АСОУП
КПЗ - код пункта зарождения информации . Включает в себя КОС и КСО.
КОС - код отправителя сообщения
КСО - код пункта совершения операции
Сообщения ОКДБ
Сообщение 265 - Нарушение режима работы
Сообщение 267 - об операциях с бригадой
Сообщение 268 - паспортные данные машиниста
Сообщение 269 - Данные приказов
Сообщение 270 - Журнал нарядов локомотивных бригад
Сообщение 333 - ?
Сообщения ОКДЛ
230 сообщения “Об изменении состояния локомотива”
231 сообщения “Об объединении и разъединении локомотива”
233 сообщения “Об изменении контролируемого парка”
234 сообщения “Корректировка пробегов”
235 сообщения “Об изменении депо приписки локомотива”
Сообщения ИОММ
1750 "Сведения о постановке\ выпуске локовотивов в НЭП\из НЭПа"
1751 "Сведения о простое локомотивов в ЭП"
ГЭД--готовность к экстренному действию (в условиях интенсивного движения)
ПВ--переключение внимания
ПУ--помехоустойчивость
СТР--стрессоустойчивость
ОБМЭ--оценка бдительности машиниста электропоезда (в условиях интенсивного движения)
СДР--сложная двигательная реакция
ОВ--объём внимания
ABAP/4 (Advanced Buisness application programming 4GL) - язык программирования в SAP R/3.
Приложение 2
Техническое задание
на разработку модуля «Учет графиков труда и отдыха локомотивных бригад эксплуатационного депо»
1 Общие сведения
1.1. Наименование системы
Модуль информационной системы «Учет графиков труда и отдыха локомотивных бригад локомотивного депо».
1.2 Наименования Разработчика и Заказчика работ и их реквизиты
Разработчик:
Кашеварова Анастасия Викторовна
Заказчик:
БИФ КемГУ(полное название)
1.3 Основание для проведения работ
Основанием для проведения работ по созданию модуля ИС "Учета труда и отдыха локомотивных бригад" являются следующие документы:
- задание на ВКР (дипломный проект) БИФ КемГУ
1.4 Сроки начала и окончания работ
Дата начала работ: 01.04.2015
Дата окончания работ: 15.05.2015
1.5 Порядок оформления и предъявления Заказчику результатов работ
Работы по созданию модуля ИС производятся и принимаются поэтапно.
2 Назначение и цели создания системы
2.1. Назначение системы
ИС "Учет труда и отдыха локомотивных бригад эксплуатационного локомотивного депо" предназначена для:
- автоматизации работ при составлении графиков труда и отдыха локомотивных бригад;
- планирования работ по составлению графиков;
- ведения учета и контроля выполнения работ;
- оперативное планирование графиков, в связи с отсутствием работников локомотивного эксплуатационного депо;
- учет рабочего времени на выполнение заданий;
- сбор статистической информации по работам и исполнителям;
2.2. Цели создания системы
Система «Учет графиков труда и отдыха локомотивных бригад эксплуатационного депо» предназначена для расширения функционала ИС АРМ «Нарядчик».
3 Характеристика объектов информатизации
3.1. Краткое описание работы нарядчика
К основным направлениям работы нарядчика относятся:
- обеспечивать планирование прибывающих локомотивных бригад по графику;
- своевременно вызов локомотивных бригад на явку;
- введение отчетной документации в бумажном виде;
- осуществлять контроль продолжительности рабочего времени по участкам обслуживания выполнения норм отдыха в пунктах оборота и домашнего отдыха;
- планировать и организовывать именные графики.
3.2. Работа с отчетами
В модуле ИС "учет графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо" предусмотрена возможность построения различных отчетов. Производит отчеты по регулировки часов, производит постановку в наряд следующие сутки. Пользователь имеет возможность вывести отчет на печать или сохранить отчет на диске.
4 Требования к информационной системе
4.1. Базовые принципы разработки модуля
При разработке модуля ИС должны использоваться следующие базовые принципы:
- исключение дублирования ввода информации и повышение ее достоверности, за счет отождествления ранее введенной информации;
ИС должна удовлетворять следующим требованиям:
- пользовательский интерфейс системы должен быть сформирован в соответствии с навыками и профилем пользователей;
ИС должна содержать:
- Средства поиска информации;
Выбор прикладного программного обеспечения системы должен удовлетворять следующим критериям:
- Интеграция с базами данных, поддерживающих Web-технологии;
4.2. Требования к архитектуре системы.
Архитектура системы «Система» является трехзвенной. В качестве клиентского приложения выступает стандартный веб-браузер.
4.3. Требования к способам и средствам связи для информационного обмена между компонентами (модулями) ИС
Подсистемы должны взаимодействовать в пределах единой компьютерной сети (Интернет), в которой происходит весь обмен информацией.
4.4. Требования к характеристикам взаимосвязей системы со смежными системами
Смежными системами для информационной системы «Учет графиков труда и отдыха» является: «АРМ Нарядчик».
4.5. Требования к режимам функционирования подсистемы
Разрабатываемая система должна функционировать 24 часа в сутки, 365 дней в году.
4.6. Требования к пользователям
Нарядчик - имеет доступ к просмотру общих данных, а также к просмотру и редактированию личных данных работников локомотивных бригад.
4.7. Требования по эргономике и технической эстетике
Основными требованиями по эргономике и технической эстетике является адекватность времени реакции модулей системы на сложность запроса пользователя к базам данных:
- При выполнении стандартных запросов пользователь должен работать с системой в реальном режиме времени.
4.8. Требования к численности и квалификации персонала системы и режиму его работы
Для эксплуатации модуля ИС «Учет труда и отдыха» определены следующие роли:
- Системный администратор;
- Администратор баз данных;
- Администратор информационной безопасности;
- Пользователь (нарядчик).
Основными обязанностями системного администратора являются:
- Модернизация, настройка и мониторинг работоспособности комплекса технических средств (серверов, рабочих станций);
- Установка, модернизация, настройка и мониторинг работоспособности системного и базового программного обеспечения;
- Установка, настройка и мониторинг прикладного программного обеспечения;
- Ведение учетных записей пользователей системы.
Системный администратор должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по установке, настройке и администрированию программных и технических средств, применяемых в системе.
Основными обязанностями администратора баз данных являются:
- Установка, модернизация, настройка параметров программного обеспечения СУБД;
- Оптимизация прикладных баз данных по времени отклика, скорости доступа к данным;
- Разработка, управление и реализация эффективной политики доступа к информации, хранящейся в прикладных базах данных.
Администратор баз данных должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по установке, настройке и администрированию используемых в ИС СУБД.
Основными обязанностями администратора информационной безопасности являются:
- Разработка, управление и реализация эффективной политики информационной безопасности системы;
- Управление правами доступа пользователей к функциям системы;
- Осуществление мониторинга информационной безопасности.
Администратор информационной безопасности данных должен обладать высоким уровнем квалификации и практическим опытом выполнения работ по обеспечению информационной безопасности.
Пользователи (нарядчики) системы должны иметь опыт работы с персональным компьютером на базе операционных систем Microsoft Windows на уровне квалифицированного пользователя и свободно осуществлять базовые операции в стандартных Windows.
Роли системного администратора, администратора баз данных и администратора информационной безопасности могут быть совмещены в роль.
Рекомендуемая численность для эксплуатации модуля ИС «Учет труда и отдыха»:
- Администратор - 1 штатная единица;
- Пользователь (нарядчик) - число штатных единиц определяется структурой предприятия.
4.9. Требования к защите информации от несанкционированного доступа
Разрабатываемый модуль ИС должен обладать специализированной подсистемой разграничения доступа к информационным ресурсам, функционирующей на основе системы пользователей и пользовательских групп.
4.10. Требования к обмену данными
Обмен данными должен происходить по сети в среде Internet с поддержкой протокола TCP/IP;
Все компоненты модуля ИС должны функционировать в пределах единого логического пространства, обеспеченного интегрированными средствами серверов данных и серверов приложений.
4.11. Требования к внешней среде системы
Сервер баз данных или сервер приложений должен обеспечивать: возможность доступа к модулю ИС с любого клиентского места.
4.12. Требования к хранению данных
База данных «Графики» должна содержать следующие данные:
- Данные о локомотивных бригадах (ФИО, табельный номер, номер колонны);
- Данные о смене (день/ночь).
4.13. Требования к отдельным подсистемам
В состав модуля ИС “Учет труда и отдыха” должны входить следующие подсистемы:
- Подсистема хранения данных;
- Подсистема управления нормативно-справочной информацией;
- Подсистема анализа;
- Подсистема интеграции;
- Подсистема формирования отчетности;
Подсистема хранения данных предназначена для хранения оперативных данных системы, данных для формирования графиков, документов системы, сформированных в процессе работы с графиками.
Подсистема приложений операционного управления предназначена для учета работ с работниками локомотивных бригад, ввода информация о локомотивах, входящих в состав локомотивного эксплуатационного депо, их организационном делении и штатном расписании, автоматизации процедур управления графиком локомотивных бригад (ведение полной информации о бригадах, процедуры оценки работников, обучения и т.п.), обеспечение всего спектра работ нарядчиков, автоматическое формирование графиков, справок, учет рабочего времени.
Подсистема управления нормативно-справочной информацией предназначена для централизованного ведения классификаторов и справочников, используемых для обеспечения информационной совместимости подсистем.
Подсистема интеграции должна обеспечивать следующие основные виды взаимодействия со смежными системами:
прием запросов от смежных систем, обработку полученных запросов и предоставление ответов на запросы;
передачу запросов в смежные системы и обработку полученных ответов.
В ходе выполнения проекта должны быть разработаны форматы данных, протоколы и регламенты взаимодействия Системы со смежными системами.
Подсистема должна обеспечивать ведение журналов учета поступивших и обработанных запросов, посланных запросов и полученных ответов смежных систем.
Подсистема формирования отчетности предназначена для создания и формирования отчетов в виде удобном для вывода на печатающие устройства на основе данных ИС АРМ «Нарядчик», проектирования и разработки форм регламентированной отчетности, настройки планового формирования и доставки регламентированных отчетов, формирования и предоставления по запросам пользователей аналитических и статистических отчетов, отображения регламентированных отчетов с помощью веб-интерфейса, вывода подготовленных отчетных форм на печать.
Также модуль ИС «Учет труда и отдыха» должна обеспечивать доступ пользователей к операционным данным БД ИС (путем предоставления сервисов, позволяющих формировать запросы на получение информации ограниченного доступа, в соответствии с уровнем компетентности пользователя
Состав и содержание работ по созданию модуля
Разработать модель БД, позволяющую хранить и обрабатывать все необходимые данные.
Приемо-сдаточные испытания модуля
После завершения всех работ по разработке компонентов, настройке подсистем, модуль ИС должен подвергнутся испытаниям, которые осуществляются в локомотивном эксплуатационном депо г. Белово.
Внесение корректировок в программный продукт, связанных с ошибками в Системе
Все ошибки, которые будут выявлены в работе Системы в течении 2 недель устраняются разработчиком.
Тестирование
Перед сдачей Модулей и Компонент Заказчику для выявления возможных сбоев в работе модуль подвергается тестированию со стороны нарядчиков в течении 1 недели.
Порядок контроля и приемки Системы
Для проверки выполнения заданных функций Системы, определения и проверки соответствия требованиям ТЗ количественных и (или) качественных характеристик Системы, выявления и устранения недостатков в действиях Системы и в разработанной документации, поэтапного контроля над ходом разработки должны быть проведены следующие виды испытаний:
Испытание на рабочем месте нарядчика.
Процедуры тестирования и контроля качества
При проведении испытаний должны использоваться следующие типы процедур тестирования и контроля качества:
·функциональное тестирование - тестирование модуля ИС на соответствие функциональным спецификациям;
Общие требования к приемке работ
Сроки и место приемки, порядок приемки работ определяются в соответствии с настоящим ТЗ.
Требования к документированию
12.1. Требования к проектной документации
Состав и комплектность проектной документации должна соответствовать требованиям ГОСТ 34.201-89.
Приложение 3
Листинг программы
Файл grafik.aspx.cs
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing; //для выбора цвета
using System.Web.Configuration; //для чтения из файла Web.Config
using System.Data; //Содержит объект DataSet
using MySql.Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
using System; //для ссылки на цвета Color.Red к примеру
namespace WebApplication3
{
public partial class WebForm1 : System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
string sql, sql2;
String CurIDGr; //текущее значение IDGr графика
int NormaHours; //норма часов для текущего месяца и года
float curHoursSum, curPrazdHours;
protected void Page_Load(object sender, EventArgs e)
{
int id = -1;
//Чтение строки подключения ServiceDBCon из файла Web.Config
SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
//Пытаемся считать значения IDGr из параметров URL веб-страницы
if (GridView1.Rows.Count > 0)
{
if (!IsPostBack)
{
if (Request.QueryString["id"] == null) GridView1.SelectedIndex = 0;
else
{
//Request.QueryString["id"] задан, поэтому выбираем строку
if (GridView1.SelectedIndex < 0) //если строка не выбрана
{
if (this.Request.QueryString["id"] != null)
{
id = Convert.ToInt32(this.Request.QueryString["id"]); //считываем номер IDGr для из параметра URL
}
//выбираем строку по id из параметра
for (int j = 0; j < GridView1.Rows.Count; j++)
{
if (GridView1.DataKeys[j].Value.Equals(id))
{
GridView1.SelectRow(j);
}
}
}
}
}
LoadGrafik();
}
}
protected void btn_Click(object sender, EventArgs e)
{
//Переход на страницу редактирования строки графика. Передаем параметр - идентификатор IDGrRow строки графика
//(sender as Button).Text - название кнопки созданной дианически для редактирования строки графика
//определяем IDGrRow по IDGr и GrafPos (берем из названия кнопки)
//Создаем соединение с БД
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
GrafikDS = new DataSet();
try
{
//Читаем строки графика
sql = "SELECT IDGrRow FROM grafikrows WHERE IDGraf=" + GridView1.SelectedDataKey.Value.ToString() + " AND GrafPos=" + (sender as Button).Text;
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafikrows");
}
catch (Exception ex)
{
Label1.Text = "Не удалось определить номер строки в графике. " + ex.ToString();
Label1.Visible = true;
conn.Close();
return;
}
Response.Redirect("editrow.aspx?idgr=" + GrafikDS.Tables["grafikrows"].Rows[0]["IDGrRow"]);
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
//Загружаем выделенный график
LoadGrafik();
}
protected void LoadGrafik()
{
//Загрузка таблицы графика
TableRow rowNew;
TableCell celNew;
int[] PrazdDays; //массив с праздничными днями выбранного года, месяца
float Value;
//предварительно очищаем таблицу
Table1.Rows.Clear();
//если строка не выбрана в GridView, то график не отрисовываем
if (GridView1.SelectedIndex < 0) return;
//если строка не выбрана, выходим из функции
if (GridView1.SelectedDataKey == null)
return;
else
CurIDGr = GridView1.SelectedDataKey.Values["IDGr"].ToString();
GrafikDS = new DataSet();
//Создаем соединение с БД
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
try
{
//Читаем строки графика
sql = "SELECT grafikrows.*, person.* FROM grafikrows LEFT OUTER JOIN person " +
"ON grafikrows.IDPerson = person.IDPerson WHERE grafikrows.IDGraf = " + CurIDGr + " ORDER BY grafikrows.GrafPos";
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafikrows");
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
Label1.Visible = true;
conn.Close();
return;
}
//Читаем норму часов для выбранного года и месяца
sql2 = "SELECT * FROM monthnorma WHERE NormYear = " + GridView1.SelectedRow.Cells[2].Text + " AND NormMonth = " + GridView1.SelectedRow.Cells[3].Text + " AND VidNormy=2";
GrafikDA = new MySqlDataAdapter(sql2, conn);
GrafikDA.Fill(GrafikDS, "monthnorma");
if (GrafikDS.Tables["monthnorma"].Rows.Count == 1)
{
NormaHours = Convert.ToInt32(GrafikDS.Tables["monthnorma"].Rows[0]["NormValue"].ToString());
}
else
{
NormaHours = 0;
}
//Определяем количество дней в выбранном месяце
Int32 m = Convert.ToInt32(GridView1.SelectedRow.Cells[3].Text); //месяц
Int32 y = 0;
try
{
y = Convert.ToInt32(GridView1.SelectedRow.Cells[2].Text); //год
}
catch
{
Label1.Text = "Введите число в поле Год";
return;
}
Int32 n = DateTime.DaysInMonth(y, m); //количество дней в выбранном месяце
//Читаем праздничные дни из БД для данного года и месяца. Помещаем их в массив
//Читаем норму часов для выбранного года и месяца с 1 по последнее число месяца
sql2 = "SELECT * FROM praznddays WHERE PrDate >='" + GridView1.SelectedRow.Cells[2].Text + "-" + GridView1.SelectedRow.Cells[3].Text + "-01' AND PrDate <='" + GridView1.SelectedRow.Cells[2].Text + "-" + GridView1.SelectedRow.Cells[3].Text + "-" + Convert.ToString(n) + "'";
GrafikDA = new MySqlDataAdapter(sql2, conn);
GrafikDA.Fill(GrafikDS, "praznddays");
if (GrafikDS.Tables["praznddays"].Rows.Count > 0)
{
//формируем массив с числами праздничных дней
PrazdDays = new int[GrafikDS.Tables["praznddays"].Rows.Count];
for (int i = 0; i < GrafikDS.Tables["praznddays"].Rows.Count; i++)
{
PrazdDays[i] = Convert.ToDateTime(GrafikDS.Tables["praznddays"].Rows[i]["PrDate"].ToString()).Day;
}
}
else
{
PrazdDays = null;
}
//Создаем Заголовок таблицы---------------------------------------------------------------------------
rowNew = new TableRow();
// 1. Кнопка
celNew = new TableCell();
celNew.Text = "Ред.";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
// 2. Номер смены
celNew = new TableCell();
celNew.Text = "Смена";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
//3. Должность
celNew = new TableCell();
celNew.Text = "Должность";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
//4. ФИО
celNew = new TableCell();
celNew.Text = "ФИО";
rowNew.Cells.Add(celNew);
celNew.HorizontalAlign = HorizontalAlign.Center;
//5. часы для каждого дня месяца
for (int j = 0; j < n; j++)
{
// создать новую ячейку
celNew = new TableCell();
celNew.Text = Convert.ToString(j + 1);
celNew.HorizontalAlign = HorizontalAlign.Center;
if (PrazdDays != null)
{
for (int k = 0; k < PrazdDays.Length; k++)
{
if (PrazdDays[k] == j + 1) celNew.BackColor = Color.Red;
}
}
// добавить ячейку к строке таблицы
rowNew.Cells.Add(celNew);
}
//6. Факт.часов
celNew = new TableCell();
celNew.Text = "Факт";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
//7. Празд.часов
celNew = new TableCell();
celNew.Text = "Празд";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
//8. Факт-Празд.часов
celNew = new TableCell();
celNew.Text = "Факт-Празд";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
//9. Факт-Празд.часов
celNew = new TableCell();
celNew.Text = "Норма";
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew.Cells.Add(celNew);
Table1.Rows.Add(rowNew);
// Заполняем основную таблицу---------------------------------------------------------------------------
for (int i = 0; i < 8; i++)
{
curHoursSum = 0; //текущая сумма фактических часов работы сотрудника
curPrazdHours = 0; //текущая сумма праздничных часов
// создать новую строку таблицы
rowNew = new TableRow();
//1. Кнопка для редактирования
celNew = new TableCell();
celNew.HorizontalAlign = HorizontalAlign.Center;
//Программно создаем кнопку в ячейке
Button btn = new Button();
btn.Text = Convert.ToString(i + 1);
btn.Click += new System.EventHandler(this.btn_Click); //Динамическая привязка метода Click кнопки к методу btn_Click
celNew.Controls.Add(btn);
//Назначаем кнопке метод
rowNew.Cells.Add(celNew);
//2. Номер смены
celNew = new TableCell();
if (Convert.ToInt32(GrafikDS.Tables["grafikrows"].Rows[i]["GrafPos"].ToString()) % 2 == 1)
celNew.Text = GrafikDS.Tables["grafikrows"].Rows[i]["Smena"].ToString();
else
celNew.Text = "";
rowNew.Cells.Add(celNew);
//3. Должность
celNew = new TableCell();
if (Convert.ToInt32(GrafikDS.Tables["grafikrows"].Rows[i]["GrafPos"].ToString()) % 2 == 1) celNew.Text = "маш-ст";
else celNew.Text = "п/м";
rowNew.Cells.Add(celNew);
//4. ФИО
celNew = new TableCell();
if (GrafikDS.Tables["grafikrows"].Rows[i]["IDPerson"].ToString() != "")
{
celNew.Text = GrafikDS.Tables["grafikrows"].Rows[i]["Lastname"].ToString() + " " + GrafikDS.Tables["grafikrows"].Rows[i]["Firstname"].ToString().Substring(0, 1) + "." + GrafikDS.Tables["grafikrows"].Rows[i]["FatherName"].ToString().Substring(0, 1) + ". (" + GrafikDS.Tables["grafikrows"].Rows[i]["Tabnom"].ToString() + ")";
}
rowNew.Cells.Add(celNew);
//читаем данные по часам по сотруднику в набор данных
//Читаем строки графика
sql2 = "SELECT * FROM grafikhours WHERE IDGrRow = " + GrafikDS.Tables["grafikrows"].Rows[i]["IDGrRow"].ToString() + " ORDER BY DayOfMonth";
GrafikDA = new MySqlDataAdapter(sql2, conn);
GrafikDA.Fill(GrafikDS, "grafikhours");
//5. часы для каждого дня месяца
int k = 0;
for (int j = 1; j <= n; j++)
{
// создать новую ячейку
celNew = new TableCell();
if (GrafikDS.Tables["grafikhours"].Rows.Count == 0)
{
// в БД для данной сторки графика данных нет, потому ставим там пробел
celNew.Text = " ";
}
else
{
if (j != Convert.ToInt32(GrafikDS.Tables["grafikhours"].Rows[k]["DayOfMonth"].ToString()))
{
//в БД нет данных по этому дню
celNew.Text = " ";
}
else
{
//в БД есть данные по дням. Пытаемся найти в таблице БД значение для j-го дня
celNew.Text = GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString();
//добавляем значение часов к фактической сумме
if (GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString() != "X")
{
if (float.TryParse(GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString().Replace("/н", ""), out Value))
{
Label1.Visible = false;
curHoursSum += Value;
//также вычисляем праздничные часы по сотруднику
if (PrazdDays != null)
{
for (int t = 0; t < PrazdDays.Length; t++)
{
if (PrazdDays[t] == j) curPrazdHours += Value;
}
}
}
else //Присутствует буква.
{
Label1.Text = "В таблице графика есть значение часов не соотвествующее формату";
Label1.Visible = true;
}
}
if (k < GrafikDS.Tables["grafikhours"].Rows.Count - 1) k++;
}
}
// добавить ячейку к строке таблицы
rowNew.Cells.Add(celNew);
}
//очищаем таблицу
GrafikDS.Tables["grafikhours"].Clear();
//6. Факт.часов
celNew = new TableCell();
celNew.Text = Convert.ToString(curHoursSum);
rowNew.Cells.Add(celNew);
//7. Празд.часов
celNew = new TableCell();
celNew.Text = Convert.ToString(curPrazdHours);
rowNew.Cells.Add(celNew);
//8. Факт-Празд.часов
celNew = new TableCell();
celNew.Text = Convert.ToString(curHoursSum - curPrazdHours);
rowNew.Cells.Add(celNew);
//9. Факт-Празд.часов
celNew = new TableCell();
if (NormaHours > 0) celNew.Text = Convert.ToString(NormaHours);
rowNew.Cells.Add(celNew);
// добавить строку к таблице
Table1.Rows.Add(rowNew);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
ViewState["SeltdID"] = GridView1.SelectedIndex;
//Переход на страницу добавления графика
Response.Redirect("graf_add.aspx");
}
protected void Button3_Click(object sender, EventArgs e)
{
//Вызываем метод удаления графика
SqlDataSource1.Delete();
}
protected void Button2_Click(object sender, EventArgs e)
{
ViewState["SeltdID"] = GridView1.SelectedIndex;
//Переход на страницу редактирования графика. Передаем один параметр - идентификатор IDGr графика
Response.Redirect("graf_edt.aspx?id=" + GridView1.SelectedDataKey.Value.ToString());
}
protected void GridView1_Sorted(object sender, EventArgs e)
{
//предварительно очищаем таблицу
Table1.Rows.Clear();
Label1.Text = "Выберите график в списке";
Label1.Visible = true;
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
//предварительно очищаем таблицу
Table1.Rows.Clear();
Label1.Text = "Выберите график в списке";
Label1.Visible = true;
}
}
}
Файл graf_edt.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web.Config
using System.Data; //Содержит объект DataSet
using MySql.Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm5 : System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
String CurIDGr; //значение текущего вновь добавленного в БД графика
String CurSmena, CurGrafPos;
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
SqlDataSourceMonths.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
VidWorkSqlDataSource.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
SqlDataSourceLokom.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
if (!IsPostBack)
{
//считываем значения IDGr из параметра URL страницы
CurIDGr = Request.QueryString["id"];
//Из БД считываем значения графика
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
String sql = "SELECT * FROM grafik WHERE IDGr=" + CurIDGr;
GrafikDS = new DataSet();
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafik");
if (GrafikDS.Tables["grafik"].Rows.Count > 0)
{
//ID
TextBox1.Text = CurIDGr;
//год
TextBox2.Text = GrafikDS.Tables["grafik"].Rows[0]["GrYear"].ToString();
//месяц
DropDownList1.SelectedValue = GrafikDS.Tables["grafik"].Rows[0]["GrMonth"].ToString();
//вид работ
DropDownList2.SelectedValue = GrafikDS.Tables["grafik"].Rows[0]["IDVidWork"].ToString();
//локомотив
DropDownList3.SelectedValue = GrafikDS.Tables["grafik"].Rows[0]["IDLokomotiv"].ToString();
//начало работы
TextBox3.Text = GrafikDS.Tables["grafik"].Rows[0]["BeginWork"].ToString();
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
String sql;
//Предварительно проверяем, может уже есть такой график в БД
//Создаем соединение с БД
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
try
{
//Читаем данные графика из БД
sql = "SELECT * FROM grafik WHERE IDGr=" + TextBox1.Text;
GrafikDS = new DataSet();
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafik");
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
Label1.Visible = true;
conn.Close();
return;
}
if (GrafikDS.Tables["grafik"].Rows.Count == 0)
{
// Такой график уже есть в БД, добавление невозможно
Label1.Text = "График не найден в БД";
Label1.Visible = true;
}
else
{
// график найден в БД
Label1.Visible = false;
//Вызываем метод Update у SqlDataSource1
//В его свойстве UpdateQuery определен запрос Update с привязкой параметров
//к элементам управления. Параметры задаются в событии SqlDataSource1.Updating
SqlDataSource1.Update();
//Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect("grafik.aspx?id=" + TextBox1.Text);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
//Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect("grafik.aspx?id=" + TextBox1.Text);
}
}
}
Файл graf_add.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web.Config
using System.Data; //Содержит объект DataSet
using MySql.Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm3 : System.Web.UI.Page
{
MySqlDataAdapter GrafikDA;
DataSet GrafikDS;
MySqlConnection conn;
String CurIDGr; //значение текущего вновь добавленного в БД графика
String CurSmena, CurGrafPos;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//В поле Год помещаем значение текущего года
TextBox1.Text = DateTime.Now.Year.ToString();
}
SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
SqlDataSource2.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
VidWorkSqlDataSource.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
SqlDataSourceLokom.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
}
protected void Button1_Click(object sender, EventArgs e)
{
String sql;
//Предварительно проверяем, может уже есть такой график в БД
//Создаем соединение с БД
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
try
{
//Читаем запись графика из БД
sql = "SELECT * FROM grafik WHERE GrYear=" + TextBox1.Text + " AND GrMonth=" +
DropDownList2.SelectedValue.ToString() + " AND IDVidWork=" + DropDownList1.SelectedValue.ToString() +
" AND IDLokomotiv=" + DropDownList3.SelectedValue.ToString() +
" AND BeginWork='" + TextBox2.Text + "'";
GrafikDS = new DataSet();
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafik");
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
Label1.Visible = true;
conn.Close();
return;
}
if (GrafikDS.Tables["grafik"].Rows.Count > 0)
{
// Такой график уже есть в БД, добавление невозможно
Label1.Text = "Такой график уже есть в БД, добавление невозможно";
Label1.Visible = true;
}
else
{
// Такого графика в БД нет. Добавление графика в БД
Label1.Visible = false;
//Вызываем метод Insert у SqlDataSource1
//В его свойстве InsertQuery определен запрос Insert с привязкой параметров
//к элементам управления
SqlDataSource1.Insert();
//Ещё раз выбираем из БД добавленный график, чтобы определить его IDGr
GrafikDA.Fill(GrafikDS, "grafik");
if (GrafikDS.Tables["grafik"].Rows.Count > 0)
{
CurIDGr = GrafikDS.Tables["grafik"].Rows[0]["IDGr"].ToString();
//Для вновь созданного графика создаем строки в таблице grafikrows
for (int i = 0; i < 8; i++)
{
CurGrafPos = Convert.ToString(i + 1);
CurSmena = Convert.ToString((i / 2) + 1);
//Вызываем метод Insert у SqlDataSource2
//В его свойстве InsertQuery определен запрос Insert.
// Параметры определяются в событии SqlDataSource2_Inserting
SqlDataSource2.Insert();
}
//Переход на главную страницу
Response.Redirect("grafik.aspx");
}
else
{
Label1.Text = "Ошибка. График не найден!";
Label1.Visible = true;
}
}
}
protected void SqlDataSource2_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на вставку программно меняем значение параметра
e.Command.Parameters["IDGraf"].Value = CurIDGr;
e.Command.Parameters["GrafPos"].Value = CurGrafPos;
e.Command.Parameters["Smena"].Value = CurSmena;
}
protected void Button2_Click(object sender, EventArgs e)
{
//Переход на главную страницу
Response.Redirect("grafik.aspx");
}
}
}
Файл editrow.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web.Config
using System.Data; //Содержит объект DataSet
using MySql.Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
using System.Drawing;
namespace WebApplication3
{
public partial class WebForm2 : System.Web.UI.Page
{
String CurIDGr;
String CurIDGrRow;
String CurIDGRH;
int CurDay;
String CurVal;
MySqlDataAdapter GrafikDA, GrafikDA2;
DataSet GrafikDS;
MySqlConnection conn;
protected void Page_Load(object sender, EventArgs e)
{
Label1.Visible = false;
SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
//считываем значения IDGr и IDGrRow из параметров URL веб-страницы
CurIDGrRow = Request.QueryString["idgr"];
//Из БД считываем значения графика
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
GrafikDS = new DataSet();
//считываем данные ряда графика
String sql = "SELECT grafikrows.IDGrRow, grafikrows.IDGraf, grafikrows.GrafPos, grafikrows.Smena, grafikrows.IDPerson," +
" person.LastName, person.FirstName, person.FatherName, person.Tabnom FROM grafikrows LEFT OUTER JOIN person" +
" ON grafikrows.IDPerson = person.IDPerson WHERE grafikrows.IDGrRow=" + CurIDGrRow;
GrafikDA2 = new MySqlDataAdapter(sql, conn);
GrafikDA2.Fill(GrafikDS, "grafikrows");
if (GrafikDS.Tables["grafikrows"].Rows.Count > 0)
{
CurIDGr = GrafikDS.Tables["grafikrows"].Rows[0]["IDGraf"].ToString();
//№ строки в графике
Table2.Rows[0].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["GrafPos"].ToString();
//смена
Table2.Rows[1].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["Smena"].ToString();
//должность
if (Convert.ToInt32(GrafikDS.Tables["grafikrows"].Rows[0]["GrafPos"]) % 2 == 1)
Table2.Rows[2].Cells[1].Text = "маш-ст";
else
Table2.Rows[2].Cells[1].Text = "п/м";
if (GrafikDS.Tables["grafikrows"].Rows[0]["IDPerson"].ToString()!="")
{
//ФИО (таб. №)
Table2.Rows[3].Cells[1].Text = GrafikDS.Tables["grafikrows"].Rows[0]["Lastname"].ToString() + " " + GrafikDS.Tables["grafikrows"].Rows[0]["Firstname"].ToString().Substring(0, 1) + "." + GrafikDS.Tables["grafikrows"].Rows[0]["FatherName"].ToString().Substring(0, 1) + ". (" + GrafikDS.Tables["grafikrows"].Rows[0]["Tabnom"].ToString() + ")";
}
}
//считываем данные графика
sql = "SELECT * FROM grafik LEFT OUTER JOIN vidwork ON grafik.IDVidWork = vidwork.IDVidWork" +
" LEFT OUTER JOIN months ON grafik.GrMonth = months.MonthNum LEFT OUTER JOIN lokomotiv" +
" ON grafik.IDLokomotiv = lokomotiv.LokID WHERE grafik.IDGr=" + CurIDGr;
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafik");
if (GrafikDS.Tables["grafik"].Rows.Count > 0)
{
//ID
Table1.Rows[0].Cells[1].Text = CurIDGr;
//год
Table1.Rows[1].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["GrYear"].ToString();
//месяц
Table1.Rows[2].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["MonthNameRu"].ToString();
//вид работ
Table1.Rows[3].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["NameVidWork"].ToString();
//локомотив
Table1.Rows[4].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["FullName"].ToString();
//начало работы
Table1.Rows[5].Cells[1].Text = GrafikDS.Tables["grafik"].Rows[0]["BeginWork"].ToString();
}
//Определяем количество дней в выбранном месяце
Int32 n = 0;
try
{
n = DateTime.DaysInMonth(Convert.ToInt32(GrafikDS.Tables["grafik"].Rows[0]["GrYear"]), Convert.ToInt32(GrafikDS.Tables["grafik"].Rows[0]["GrMonth"])); //количество дней в выбранном месяце
}
catch
{
Label1.Text = "Ошибка при вычислении количества дней в месяце";
Label1.Visible = false;
//return;
}
//Заполняем таблицу Table3 с данными за месяц
Table3.Rows.Clear();
//считываем часовые данные ряда графика
sql = "SELECT * FROM grafikhours WHERE IDGrRow=" + GrafikDS.Tables["grafikrows"].Rows[0]["IDGrRow"].ToString() + " ORDER BY DayOfMonth";
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafikhours");
TableRow rowNew1, rowNew2;
TableCell celNew;
TextBox txtBox;
String str1;
float Value;
int k = 0;
//Два ряда создаем
rowNew1 = new TableRow(); //для номеров дней
rowNew2 = new TableRow(); //для значений часов работы
for (int i = 0; i < n; i++) //для каждого числа месяца
{
// верхний ряд - день месяца
celNew = new TableCell();
celNew.Text = Convert.ToString(i + 1);
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew1.Cells.Add(celNew);
// нижний ряд - значение
celNew = new TableCell();
if (GrafikDS.Tables["grafikhours"].Rows.Count == 0)
{
// в БД для данной строки графика данных нет, потому ставим пустую строку
str1 = "";
}
else
{
//в БД есть значение для этого дня
if ((i+1) != Convert.ToInt32(GrafikDS.Tables["grafikhours"].Rows[k]["DayOfMonth"].ToString()))
{
//в БД нет данных по этому дню
str1 = "";
}
else
{
//в БД есть данные по дням. Пытаемся найти в таблице БД значение для j-го дня
str1 = GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString();
//проверка введенного значения на соответсвие формату
if (str1 != "Х")
{
if (float.TryParse(GrafikDS.Tables["grafikhours"].Rows[k]["GrVal"].ToString().Replace("/н", ""), out Value))
{
Label1.Visible = false;
}
else //Присутствует буква.
{
str1 = "";
Label1.Text = "Значение часов работы не соотвествует формату";
Label1.Visible = true;
}
}
if (k < GrafikDS.Tables["grafikhours"].Rows.Count - 1) k++;
}
}
//добавляем текстовое поле в ячейку со значением отработанных часов
txtBox = new TextBox();
txtBox.Text = str1;
txtBox.Width = 30;
txtBox.BackColor = Color.Cyan;
txtBox.ID = "txtBox" + (i+1);
txtBox.AutoPostBack = true;
txtBox.TextChanged += new System.EventHandler(this.txtBox_TextChanged); //определяем обработчик события
celNew.Controls.Add(txtBox);
celNew.HorizontalAlign = HorizontalAlign.Center;
rowNew2.Cells.Add(celNew);
}
//добавляем сформированные ряды в таблицу
Table3.Rows.Add(rowNew1);
Table3.Rows.Add(rowNew2);
}
protected void Button3_Click(object sender, EventArgs e)
{
//Переход на страницу выбора сотрудника
Response.Redirect("persget.aspx?idgr=" + CurIDGrRow);
}
protected void Button1_Click(object sender, EventArgs e)
{
//Нажатие кнопки Применить. Сохраняем изменения. Возвращаемся к графику c IDGr=CurIDGr
Response.Redirect("grafik.aspx?id=" + CurIDGr);
}
protected void txtBox_TextChanged(object sender, EventArgs e)
{
String sql;
//Обработчик изменения значения часов в таблице
if ((sender as TextBox).ID.Substring(0, 6) == "txtBox")
{
//Извлекаем из ID TextBox-а, число, а также берем его значение
CurDay = Convert.ToInt32(((sender as TextBox).ID.Substring(6)));
CurVal = (sender as TextBox).Text.Trim().ToUpper();
//приводим обозначения к единому формату
CurVal = CurVal.Replace("X", "Х"); //замена английской буквы на русскую
CurVal = CurVal.Replace("/Н", "/н"); //меняем большую Н на маленькую
(sender as TextBox).Text = CurVal;
//Проверяем наличие записи в БД
try
{
conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString);
conn.Open();
GrafikDS = new DataSet();
//Читаем значение из БД
sql = "SELECT * FROM grafikhours WHERE IDGrRow=" + CurIDGrRow + " AND DayOfMonth=" + CurDay;
GrafikDA = new MySqlDataAdapter(sql, conn);
GrafikDA.Fill(GrafikDS, "grafikhours");
}
catch (Exception ex)
{
Label1.Text = "Ошибка при записи данных в БД. " + ex.ToString();
Label1.Visible = true;
conn.Close();
return;
}
if (GrafikDS.Tables["grafikhours"].Rows.Count == 0)
{
//И значение часов не пустое
if (CurVal != "")
{
//Записи нет, поэтому добавляем ее в БД
SqlDataSource1.Insert();
}
}
else
{
//Запись есть
//новое значение пустое. поэтому удаляем его в БД
if (CurVal == "")
{
CurIDGRH = GrafikDS.Tables["grafikhours"].Rows[0]["IDGRH"].ToString();
SqlDataSource1.Delete();
}
else
{
//новое значение не пустое, поэтому обновляем её в БД
CurIDGRH = GrafikDS.Tables["grafikhours"].Rows[0]["IDGRH"].ToString();
SqlDataSource1.Update();
}
}
}
}
protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на вставку программно меняем значение параметра
e.Command.Parameters["IDGrRow"].Value = CurIDGrRow;
e.Command.Parameters["DayOfMonth"].Value = CurDay;
e.Command.Parameters["GrVal"].Value = CurVal;
}
protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["IDGRH"].Value = CurIDGRH;
e.Command.Parameters["GrVal"].Value = CurVal;
}
}
}
Файл persget.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration; //для чтения из файла Web.Config
using System.Data; //Содержит объект DataSet
using MySql.Data; //Для работы с БД MySQL
using MySql.Data.MySqlClient;
namespace WebApplication3
{
public partial class WebForm4 : System.Web.UI.Page
{
String CurIDGrRow;
protected void Page_Load(object sender, EventArgs e)
{
CurIDGrRow = Request.QueryString["idgr"];
SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
SqlDataSource2.ConnectionString = WebConfigurationManager.ConnectionStrings["GrafikiDBCon"].ConnectionString;
}
protected void Button1_Click(object sender, EventArgs e)
{
int val;
if (int.TryParse(TextBox1.Text, out val))
{
//В качестве фильтра задано число - табельный номер
SqlDataSource1.FilterExpression = "Tabnom=" + TextBox1.Text;
}
else
{
//В качестве фильтра задана строка - фамилия
SqlDataSource1.FilterExpression = "LastName like '" + TextBox1.Text + "%'";
}
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("persget.aspx?idgr=" + CurIDGrRow);
}
protected void Button2_Click(object sender, EventArgs e)
{
//Вызываем метод обновления для изменения сотрудника в строке графика
//Параметры и их связь с ЭУ заданы внутри свойства UpdateQuery
SqlDataSource2.Update();
//Переход на страницу выбора сотрудника
Response.Redirect("editrow.aspx?idgr=" + CurIDGrRow);
}
protected void SqlDataSource2_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
//Перед вызовом запроса на обновление программно меняем значение параметра
e.Command.Parameters["IDGrRow"].Value = CurIDGrRow;
}
}
}
Размещено на Allbest.ru
Подобные документы
Выбор методологии проектирования и разработка информационной системы "Расчёт зарплаты" для предприятия ОАО РТП "Авторемонтник". Архитектурное проектирование базы данных информационной системы и разработка её интерфейса. Тестирование программного модуля.
дипломная работа [2,3 M], добавлен 25.05.2014Разработка структурной схемы и алгоритма функционирования микропроцессорного модуля программного обеспечения автоматизированной информатизационно-измерительной системы. Характеристика принципиальной схемы модуля, распределения памяти и задание портов.
курсовая работа [1,2 M], добавлен 28.08.2012Разработка автоматизированной системы, предназначенной для составления месячных графиков работы экипажей подвижного состава трамвайного депо. Формирования отчетных документов, используемых подразделениями внутри предприятия. Описание алгоритмов работы.
дипломная работа [2,3 M], добавлен 06.04.2013Моделирование предметной области. Состав программного модуля. Разработка логической структуры единой базы данных банковской информационной системы "БИС". Создание экранных форм для ввода и корректировки информации. Разработка интерфейса пользователя.
курсовая работа [1,8 M], добавлен 17.05.2016Разработка информационной системы для отдела учета приема пациентов и медицинского секретариата. Описание исходной (входной) информации и пользовательского интерфейса, логической структуры и технических средств. Построение реляционной базы данных.
дипломная работа [1,9 M], добавлен 16.04.2012Функциональная модель предметной области на примере базы данных автоматизированной информационной системы "Общежития". Ведение информационной базы об общежитиях, комнатах и сотрудниках, хранение информации о студентах, специальностях и факультетах.
курсовая работа [2,7 M], добавлен 10.04.2014Разработка и внедрение автоматизированной информационной системы. Изучение основных процессов, протекающих в предметной области. Создание базы данных. Исследование средств защиты информации от несанкционированного доступа и идентификации пользователей.
курсовая работа [487,2 K], добавлен 17.03.2014Техническое задание на разработку автоматизированной системы и складского учета управления универсальной торговой базы. Проектирование информационной системы и выбор среды для создания программного продукта. Создание интерфейса и руководство пользователя.
дипломная работа [2,1 M], добавлен 11.07.2015Програмні засоби автоматизації планування та обліку робіт поїзних бригад нарядчиком пасажирської вагонної дільниці. Загальна характеристика мобільного робочого місця. Програмна реалізація структурних елементів. Система управління реляційними базами даних.
дипломная работа [1,5 M], добавлен 15.10.2013Понятие автоматизированной информационной системы. Построение функционально-ориентированных моделей "как есть" (as-is) и "как должно быть" (to-be). Описание базы данных, разработка приложения, руководство пользователя. Счет-фактура, платежное поручение.
дипломная работа [3,5 M], добавлен 23.04.2013