close

Вход

Забыли?

вход по аккаунту

?

отчет по практике (Сакара)(1)

код для вставкиСкачать
Приднестровский государственный университет им. Т.Г. Шевченко
Инженерно-технический институт
Кафедра программного обеспечения вычислительной техники и автоматизированных систем
ОТЧЕТ
ПО ПРОИЗВОДСТВЕННОЙ ПРАКТИКЕ
Тема: "Отдел кадров завода"
Выполнил студент гр. 09ПОВТ
Сакара Яна Ивановна
Проверила Вакарь Ольга Исаковна
Тирасполь, 2011
Содержание
Введение.......................................................................................................3
1 История предприятия "Приднестровский Государственный Университет".................4
2 Организационная структура Инженерно-технического факультета............................6
3 Описание аппаратного и программного обеспечения сети, используемого на предприятии ....................................................................................................8
4 Аналитический и литературный обзор предметной области ..................................9
5 Проектирование базы данных
5.1 Инфологическое проектирование модели базы данных.......................................11
5.2 Логическое проектирование модели базы данных..............................................13
5.3 Физическое проектирование модели базы данных.............................................16
6 Описание структуры программы .....................................................................17 7 Выбор методов решения задачи и разработка основных алгоритмов ........................18 Заключение...................................................................................................22
Список литературы.........................................................................................23
Приложение А. Руководство пользователя ...........................................................24
Приложение Б. Листинг программы ...................................................................27
Введение
Производственная практика является составной частью основной образовательной программы по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".
Ее цель закрепление и углубление знаний, полученных студентами в процессе теоретического обучения, приобретение необходимых умений, навыков и опыта практической работы по изучаемой специальности.
При ее прохождении поставлены следующие цели:
- ознакомление с деятельностью предприятия;
- изучение специфики работы предприятия;
- изучение передового опыта работы специалистов предприятия;
- изучение структуры организации в данном предприятии;
- углубление и закрепление собственных знаний, полученных в процессе обучения;
- выработка навыков принятия решений и реализация решений в практической деятельности;
- расширение технического кругозора и подготовка к самостоятельной профессиональной деятельности на основе знаний и умений, полученных на протяжении всего периода обучения;
- выполнение индивидуального задания, связанного с конкретной производственной задачей.
1 История предприятия "Приднестровский Государственный Университет"
1 октября 1930 года на базе Молдавского государственного педагогического техникума был учрежден Молдавский институт народного образования в г. Тирасполе - первое высшее учебное заведение в Молдавии.
В институте тогда функционировало пять кафедр и три факультета: механико-математический, лингвистический и агробиологический, на которых обучались 123 студента и 80 слушателей подготовительного отделения. Преподавание велось на молдавском, украинском и русском языках. Перый выпуск подарил школам Приднестровья 20 учителей.
В 1933 году институт был преобразован в Молдавский педагогический институт с четырехлетним сроком обучения, а в марте 1939 года в ознаменование 125-летия со дня рождения великого украинского поэта и художника Т.Г. Шевченко институту присвоено его имя. В этом же году был открыт географический факультет.
В период немецко-румынской оккупации институт эвакуируется в тыл страны в г. Бугуруслан Оренбургской области (бывшая Чкаловская). Вместе с ним покинули город 12 педагогов. Многие преподаватели, студенты и сотрудники ушли на фронт.
1944 год. Институт продолжает работать в эвакуации - в нем учатся 374 студента. Там же, в эвакуации, осуществляется выпуск 19 специалистов: 1 филолог, 4 математика и 14 историков.
С победоносным завершением Ясско-Кишиневской операции и освобождением Молдавии от фашистских захватчиков институт возвращается в Тирасполь. Трудно было в первый послевоенный год набирать студентов, так как молодежи с законченным средним образованием практически не было. В октябре 1945 года для подготовки молодежи в вуз при пединституте создается рабфак, который просуществовал до августа 1948 года.
В августе 1952 года институт был преобразован в Тираспольский государственный педагогический институт им. Т.Г. Шевченко (ТГПИ) с четырьмя факультетами: историко-филологическим, физико-математическим, естествознания и географическим. Институт становится региональным методическим центром.
С 1956/57 учебного года он переходит на подготовку учителей широкого профиля с пятилетним сроком обучения.
Здесь ежегодно проводились практические конференции, в которых принимали участие учителя городов, сел и районов республики. Открылся планетарий, работали агробиостанция, несколько лабораторий, начали функционировать юношеская физико-математическая школа, научное общество студентов и учащихся, клуб путешествий. Укреплялся и профессорско-преподавательский состав: в штате насчитывалось уже 5 докторов, 163 кандидата наук, большинству из которых было присвоено ученое звание доцента. В 1970 году за достигнутые успехи в подготовке и воспитании педагогическихи научных кадров Тираспольский государственный педагогический институт им. Т.Г. Шевченко был награжден Почетной грамотой Президиума Верховного Совета МССР, в 1974 - занесен в Золотую Книгу Почета республики, а в 1980 году указом Президиума Верховного Совета СССР награжден орденом "Знак Почета". Создание Приднестровского Государственного Университета Постановлением Временного Верховного Совета ПМССР № 25 от 21 сентября 1990 года с целью подготовки специалистов для отраслей народного хозяйства Приднестровья в Тирасполе создан Государственный университет, в котором были открыты 4 факультета: историко-юридический, экономический, физико-технический и аграрно-экологический.
С 11 января 1991 года учредителем госуниверситета стала Ассоциация местных Советов народных депутатов и предприятий Приднестровского региона, в связи с чем были изменены его статус и название - Тираспольский государственно-корпоративный университет Приднестровского региона (ПГКУ).
К четырем ранее созданным факультетам прибавился пятый - медицинский, а при историческом открыто отделение искусств. Университет возглавил доктор юридических наук, профессор Василий Никитович Яковлев.
25 июня 1992 года в результате слияния двух вузов - Тираспольского государственного педагогического института им. Т.Г. Шевченко и Тираспольского государственно-корпоративного университета Приднестровского региона - был создан Приднестровский государственно-корпоративный университет им. Т.Г. Шевченко. С июня 1997 года в связи с изменением статуса вуз переименован в Приднестровский государственный университет (ПГУ) им. Т.Г. Шевченко.
Учредителями ПГУ им. Т.Г. Шевченко являются Государственная администрация, Всероссийский фонд образования при Государственной думе Российской Федерации. В 1995 году университет стал действительным членом Ассоциации вузов Российской Федерации, а в 1999 году принят в Евразийскую Ассоциацию университетов (ЕАУ). Представительство ПГУ в Российской Федерации зарегистрировано Московской регистрационной палатой с правом ведения хозяйственной деятельности (свидетельство серия МРII, рег. № 000.628-У от 26 января 1994 г., код ОКПО 29278199).
12 июня 1996 года на расширенном заседании Ученого совета ректором Приднестровского государственного университета им. Т.Г. Шевченко был единогласно избран Степан Иорданович Берил - видный ученый, доктор физико-математических наук, профессор, член Российской Академии естественных наук (РАЕН).
Сегодня университет работает по российским учебным стандартам и планам. Его дипломы действительны на всей территории России.
С 1999 года выпускникам ПГУ выдаются дипломы нового государственного образца.
В составе университета - 79 кафедр, 12 основных факультетов (исторический, юридический, экономический, медицинский, сельскохозяйственный, инженерно-технический, инженерно-педагогический, филологический, педагогический (с отделением искусств), физико-математический, естественно-географический, физической культуры и спорта), научно-исследовательский отдел (НИО), 28 научно-исследовательских лабораторий, вычислительный центр, агробиологическая станция, центр довузовской подготовки, факультет общественных профессий, молодежно-культурный центр "Спутник", спортклуб "Рекорд". Научная библиотека университета является самой крупной в регионе - ее книжный фонд насчитывает свыше 850 тысяч экземпляров. Редакционно-издательский отдел обеспечивает потребность вуза в научно-методической и учебной литературе. Учебно-просветительская работа проводится в четырех музеях университета и обсерватории.
2 Организационная структура Института истории, государства и права
Институт истории, государства и права образован в январе 2005 г. в результате слияния факультета истории, политологии и социологии с юридическим факультетом. Преподавательскую, научную и просветительскую деятельность осуществляют одиннадцать кафедр, две научно-исследовательские лаборатории, Центр социологических и политических исследований "Перспектива" и два музея - археологии и истории университета. Профессорско-преподавательский коллектив составляют высококвалифицированные преподаватели, в числе которых 8 профессоров, докторов наук, 27 доцентов, кандидатов наук, политические аналитики и консультанты, высококвалифицированные специалисты-практики. Институт осуществляет плодотворное сотрудничество с университетами и научными центрами России, Украины, Молдовы, Германии, Японии, Израиля.
Преподаватели и студенты института активно участвуют в исследовательских проектах, в международных научных семинарах, конференциях, "круглых столах". Выпускники являются специалистами, не только владеющими необходимыми профессиональными знаниями и навыками, но и обладающими способностью к самостоятельной продуктивной научной творческой деятельности. Они работают в администрации Президента ПМР, в Верховном Совете, в министерствах иностранных дел, внутренних дел, юстиции, просвещения, на радио и телевидении, в судебных и правоохранительных органах, образовательных учреждениях республики. Организационная структура
1. Декан
2. Заместители декана:
- по учебно-методической работе;
- по организации учебного процесса;
- по научной работе;
- делам молодежи;
3. Секретарь деканата
4. Методисты:
- методист дневной формы обучения;
- методист заочной формы обучения.
Кафедры Института истории, государства и права
Кафедра конституционного, административного и муниципального права
Кафедра уголовного права, уголовного процесса и криминалистики
Кафедра теории и истории государства и права
Кафедра Всеобщей истории
Кафедра Отечественной истории
Кафедра философии
Кафедра основ политики и политического управления
Кафедра политологии и политических процессов
Кафедра гражданского и трудового права
Школа юного историка при Институте истории, государства и права ПГУ им. Т.Г. Шевченко
Сотрудниками кафедр постоянно проводятся научные изыскания по проблемам истории стран СНГ. Активно исследуются такие вопросы, как: формирование государственности Приднестровья; историография ПМР; история Приднестровского вооруженного конфликта; румынизация Молдавии в прошлом и настоящем; советско-американские отношения после Второй мировой войны; национальная идентичность в полиэтническом обществе; история Молдавской митрополии во второй половине XX в.; проблемы сталинских репрессий и развитие Молдавской Автономии; социально-экономическое и политическое развитие Подолии в XVIII в. Ежегодно преподаватели кафедр подводят итоги своих поисков в ходе конференции профессорско-преподавательского состава ПГУ им. Т.Г. Шевченко. В составе кафедр успешно функционируют научно-исследовательские лаборатории, например: "Археология" (заведующий - к.и.н., доцент Н.П. Тельнов) и "История Приднестровья" (заведующий - к.и.н., профессор Н.В. Бабилунга).
Сотрудниками установлены и поддерживаются рабочие контакты с ведущими научными центрами и специалистами России, Украины, Молдовы, Японии, Германии, США.
Специальности:
История (со специализациями "Отечественная история", "Новая и новейшая история", "История культуры", "История религии", "Историческая политология", "Археология")
Юриспруденция (со специализациями "Государственное право", "Гражданское право", "Уголовное право")
Социология (со специализациями "Социология рекламы и PR", "Социология коммуникаций", "Социальная работа")
Политология (со специализациями "Государственное управление", "Международные отношения")
3 Описание аппаратного и программного обеспечения сети, используемого на предприятии
На рабочем месте было предоставлено следующее оборудование:
-17-ти дюймовый монитор с электроннолучевой трубкой Samsung SyncMaster 793DF;
-Процессор Intel Celeron 2.53 ГГц;
-284 Мб ОЗУ DDR;
-Принтер Canon Laser Shot L1121Е;
-Операционная система Windows XP Professional;
-Программа "Абитуриент";
Такое же оборудование установлено на аналогичных рабочих местах.
Программа "Абитуриент" создана для учёта поступающих абитуриентов в Приднестровский государственный университет и хранения их данных. Программа написана на языке C#. В программе существует несколько видов пользователей: Секретарь, Оператор, Технический секретарь. Каждый из них имеет свои доступ и права по введённому паролю.
Программа "Абитуриент" не готова для нормальной стабильной работы. Интерфейс программы перегружен, но большинству пользователей удалось бы разобраться с ней. При работе с программой возникает множество ошибок. Например, при заполнении данных и сохранения каждой вкладки, при распечатке заявления оказывалось, что отсутствует некоторая информация абитуриента и при проверке данной информации на соответствующей вкладке все поля были абсолютно правильно заполнены; в отчёте могла присутствовать отличная от введённой информация; в программе отсутствуют какие-либо справки. Рисунок 3.1 - Вид программы (вкладка администратор)
4 Аналитический и литературный обзор предметной области
Во время прохождения практики была поставлена задача разработать программный продукт "Отдел кадров завода", реализующий ведение личных дел всех работников завода.
База данных должна содержать информацию о сотрудниках, о должностях, подразделениях. Программа должна иметь возможность поиска информации о сотруднике по табельному номеру, по фамилии, по подразделению.
Программа должна предоставить возможность формирования отчетов:
- личное дело, в котором автоматически высчитывается стаж работы в зависимости от введенных значений: даты поступления на работу и даты вызова отчета;
- отчет, группирующий сотрудников по подразделениям и по разрядам с подсчетом количества сотрудников по каждому разряду.
Анализ сегодняшней практики работы отделов кадров предприятий республики показывает, что серьезные изменения в их деятельности произошли, прежде всего, в исполняемых функциях. Естественно, никто не отменял кадровое делопроизводство, т.е. письменное оформление приема на работу, переводов работников из одного подразделения в другое, увольнений, отпусков, заполнение личных дел, трудовых книжек и др.
Однако сегодня все эти рутинные операции на многих предприятиях выполняются с помощью современных информационных технологий. И главное изменение в функциях заключается в том, что отделы кадров от преимущественно регистрационных функций постепенно переходят к аналитическим. Это, прежде всего:
- подготовка совместно с некоторыми другими службами предприятия перспективного и текущего прогноза потребности в персонале с учетом стратегии развития производства;
- выбор источников комплектования персонала на рынке труда того или иного региона либо республики в целом;
- определение методов отбора наиболее достойных кандидатов для трудоустройства;
- подготовка контрактов и контроль сроков их действия;
- создание необходимых условий для скорейшей адаптации новичков, в том числе и молодых специалистов;
- формирование резерва кадров на выдвижение, выявление и развитие лидерских качеств у сотрудников, прежде всего молодых, планирование их должностной карьеры;
- определение критериев и методов оценки персонала;
- совершенствование принципов расстановки кадров;
- перевод, перемещение, повышение, понижение, увольнение в зависимости от результатов труда каждого;
- использование системы моральных и материальных мер стимулирования высокопроизводительного труда с целью привлечения, сохранения и закрепления кадров;
- управление дисциплинарными отношениями;
- формирование и поддержание на необходимом уровне таких корпоративных ценностей, как гордость за имидж предприятия, коллективный дух и солидарность, деловой морально-психологический климат;
- взаимодействие в решении различных проблем кадровой работы с профсоюзными, молодежными, ветеранскими и другими общественными организациями.
Структура и схема управления кадровой службы определяется утвержденными функциями подразделения. Например, есть конкретные примеры организаций, где одно структурное подразделение отвечает и за подбор персонала, и за оплату его труда, т.е. здесь объединены функции ОК и ОТиЗ.
5 Проектирование базы данных
5.1 Инфологическое проектирование модели базы данных
Предметная область, подлежащая автоматизации, содержит информацию о сотрудниках завода такую как личная информация, занимаемая должность, разряд, информация о зарплате.
Объекты предметной области: "Сотрудники", "Подразделения", "Бухгалтерия", "Должности". В предметной области можно выделить следующие процессы: прием сотрудника на работу, изменения в положении, ведение бухгалтерии по зарплате. В рассматриваемой предметной области можно выделить следующие сущности: "Данные о сотрудниках", "Сведения о подразделениях завода", "Сведения о занимаемых должностях", "Бухгалтерия".
Анализируя сущности рассматриваемой предметной области, можно выделить следующие атрибуты и идентифицирующие ключи:
Сущность "Сотрудники" обладает атрибутами: ID, Фамилия, Имя, Отчество, Улица, Дом, Квартира, Номер телефона (домашний), Номер телефона (мобильный), номер телефона (дополнительный), Дата поступления. В качестве ключевого атрибута можно принять ID, который определяется числовыми значениями.
Сущность "Бухгалтерия" содержит следующие атрибуты: ID, Заработная плата, Премиальные. Идентифицирующим ключом данной сущности является ID, так как он определяется числовыми значениями.
Сущность "Подразделения" содержит следующие атрибуты: Код подразделения, Название, Глава. Идентифицирующим ключом данной сущности является Код подразделения, так как он определяется числовыми значениями.
Сущность "Должности" содержит следующие атрибуты: ID, Код подразделения, Должность, Занятость, Разряд. В качестве ключевого атрибута можно принять ID, который определяется числовыми значениями.
Между сущностями "Сотрудники" и "Бухгалтерия" существует связь один к одному, так как каждому отдельному сотруднику соответствует единственная зарплата. Первичным ключом сущности "Сотрудники" будет атрибут ID по отношению к сущности "Бухгалтерия" с внешним ключом ID. Рисунок 5.1 - Связь между сущностями "Сотрудники" и "Бухгалтерия"
Между сущностями "Сотрудники" и "Должности" существует связь один к одному, так как каждому ID сущности ""Сотрудники" соответствует один ID сущности "Должности". Первичным ключом сущности "Сотрудники" будет атрибут ID по отношению к сущности "Должности" с внешним ключом ID. Рисунок 5.2 - Связь между сущностями "Сотрудники" и "Должности"
Между сущностями "Должности" и "Подразделения" существует связь один ко многим, так как каждому ID сущности "Должности" соответствует множество Код подразделения сущности "Подразделения". Первичным ключом сущности "Подразделения" будет атрибут Код подразделения по отношению к сущности "Должности" с внешним ключом ID. Рисунок 5.3 - Связь между сущностями "Должности" и "Подразделения"
Проанализировав предметную область, можно построить следующую ER-диаграмму предметной области "Отдел кадров завода":
Рисунок 5.4 - ER-диаграмма предметной области "Отдел кадров завода"
5.2 Логическое проектирование модели базы данных
На логическом этапе проектирования модели базы данных описывается перевод сущностей инфологической модели в отношения. Отношение "Сотрудники" (ID, Фамилия, Имя, Отчество, Улица, Дом, Квартира, Номер телефона (домашний), Номер телефона (мобильный), номер телефона (дополнительный), Дата поступления) находится в первой нормальной форме (1NF), так как на пересечении каждого столбца и строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме (2NF), так как оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от первичного ключа.
Отношения находится в третьей нормальной форме (3NF), если они находится во второй нормальной форме и не содержит транзитивных зависимостей. В данном случае отношение "Сотрудники" находится во второй нормальной форме и транзитивные зависимости отсутствуют. Следовательно, данное отношение находится в третьей нормальной форме.
Следуя из приведенного определения и анализа структуры отношения, определим схему отношения "Сотрудники", которая будет реализована в виде таблицы "Сотрудники" в системе управления базами данных.
Таблица 1 - Схема отношения "Сотрудники"
Имя атрибута Домен Имя поля Условие на
значение ОписаниеID ЧисловойID Табельный номер Фамилия ТекстовыйФамилия ФамилияИмя ТекстовыйИмя ИмяОтчество ТекстовыйОтчество ОтчествоУлица ТекстовыйУлица УлицаКвартира ТекстовыйКвартира КвартираДом ТекстовыйДом ДомНомер телефона (домашний) ТекстовыйНомер телефона (дом) Номер телефонаНомер телефона (мобильный) ТекстовыйНомер телефона (моб) Номер телефонаНомер телефона (дополнительный) ТекстовыйНомер телефона (доп) Номер телефонаДата поступления Дата/ВремяДата поступления Дата приема на работу Отношение "Бухгалтерия" (ID, Заработная плата, Премиальные) находится в первой нормальной форме, так как на пересечении каждого столбца и строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме, так как оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от первичного ключа.
Отношение "Бухгалтерия" находится в третьей нормальной форме, так как оно находится во второй нормальной форме и транзитивные зависимости отсутствуют. Таким образом, определим схему отношения "Бухгалтерия", которая будет реализована в виде таблицы "Бухгалтерия" в системе управления базами данных.
Таблица 2 - Схема отношения "Бухгалтерия"
Имя атрибута Домен Имя поля Условие на
значение Описание ID ЧисловойID Табельный номер сотрудника Заработная плата ДенежныйЗаработная плата Оклад за месяц Премиальные ДенежныйПремиальные Премиальные за месяц Отношение "Подразделения" (Код подразделения, Название, Глава) находится в первой нормальной форме, так как на пересечении каждого столбца и строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме, так как оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от первичного ключа.
Отношение "Подразделения" находится в третьей нормальной форме, так как оно находится во второй нормальной форме и транзитивные зависимости отсутствуют. Таким образом, определим схему отношения "Подразделения", которая будет реализована в виде таблицы "Подразделения" в системе управления базами данных.
Таблица 3 - Схема отношения "Подразделения"
Имя атрибута Домен Имя поля Условие на
значение Описание Код подразделения ЧисловойКод подразделения Код подразделения Название ТекстовыйНазвание Название подразделения Глава ТекстовыйГлава Глава подразделения Отношение "Должности" (ID, Код подразделения, Должность, Занятость, Разряд) находится в первой нормальной форме, так как на пересечении каждого столбца и строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме, так как оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от первичного ключа.
Отношение "Должности" находится в третьей нормальной форме, так как оно находится во второй нормальной форме и транзитивные зависимости отсутствуют. Таким образом, определим схему отношения "Должности", которая будет реализована в виде таблицы "Должности" в системе управления базами данных.
Таблица 4 - Схема отношения "Должности"
Имя атрибута Домен Имя поля Условие на
значение Описание ID ЧисловойID Табельный номер сотрудника Код подразделения ЧисловойКод подразделения Код подразделения Должность ТекстовыйДолжность Название должности Занятость ТекстовыйЗанятость Занятость Разряд ЧисловойРазряд Номер разряда
5.3 Физическое проектирование модели базы данных
Для создания базы данных была выбрана система управления базами данных Microsoft Access. MS Access входит в состав самого популярного пакета Microsoft Office. Основные преимущества: знаком многим конечным пользователям и обладает высокой устойчивостью данных, позволяет готовить отчеты из баз данных различных форматов. Предназначен для создания отчетов произвольной формы на основании различных данных. Microsoft Access обеспечивает средства для создания клиентских частей в приложениях "клиент-сервер", которые сочетают в себе средства просмотра, графический интерфейс и средства построения запросов.
Для разработки приложения используется интегрированная среда разработки Visual Studio 2005, язык C#. Для полной функциональности приложения и базы данных создано четыре таблицы, которые обладают ключевыми полями и связаны между собой. Ниже представлена схема данных предметной области "Отдел кадров завода" в СУБД Microsoft Access:
Рисунок 5.5 - Схема данных в СУБД Microsoft Access
6 Описание структуры программы
Структурная схема - схема, отражающая состав и взаимодействие по управлению частей разрабатываемого продукта. При объектной декомпозиции такими частями являются объекты (рисунок 6.1).
Рисунок 6.1 - Структурная схема программного продукта (объектная декомпозиция)
При запуске программы загружается главная рабочая форма Form1.cs. Все необходимые манипуляции для работы с базой данных осуществляются в главной рабочей форме. Таблицы разделены между собой с помощью управляющего элемента TabControl. Каждая вкладка этого элемента соответствует единственной таблице базы данных. Также в окне TabControl можно выполнить все необходимые команды соответствующие активной таблице, такие как поиск, удаление, добавление, редактирование. При закрытии главной рабочей формы осуществляется автоматический выход из приложения. 7 Выбор методов решения задачи и разработка основных алгоритмов
Структура обработки информации представляется в следующем виде:
Рисунок 7.1 - Структура обработки информации
Соединение с базой данных производится следующим образом:
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";
OleDbConnection con;
con = new OleDbConnection(InstConnectString);
Для осуществления поиска по полям таблицы Сотрудники в программе предусмотрен специальный метод Search, который не только позволяет быстро находить необходимые данные по всем полям таблицы, но и начинает работать уже с первого введенного в поле для поиска символа, что значительно ускоряет этот процесс.
public void Search(string SQL)
{
try
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(SQL, con);
da.Fill(dt);
dg1.DataSource = dt;
}
catch
{
MessageBox.Show("Введены некорректные данные", "Поиск", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
В данный метод передается строка SQL-запроса, которая может принимать различные значения в зависимости от выбранного в элементе ComboBox названия поля, по которому пользователю необходимо произвести поиск.
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab.Text == "Сотрудники")
{
if (NameOfField == "ID" && textBox1.Text.Length != 0)
Search("Select* from Сотрудники where CInt(Mid(CStr(Сотрудники.ID),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text));
else if (NameOfField == "Фамилия" && textBox1.Text.Length != 0)
Search("Select* from Сотрудники where Сотрудники.Фамилия Like '" + textBox1.Text + "%'");
else if (textBox1.Text.Length == 0)
{
DataTable dt = new DataTable("Сотрудники");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Сотрудники", con);
da.Fill(dt);
dg1.DataSource = dt;
}
}
...............................
Для удаления какой-либо записи из таблицы Сотрудники необходимо в элемент TextBox ввести значение номера лицевого счета соответствующего удаляемой записи и нажать кнопку "Удалить".
OleDbCommand insCom = new OleDbCommand("Delete from Сотрудники where ((Сотрудники.ID)=" + int.Parse(textBox2.Text) + ");", con);
if (insCom.ExecuteNonQuery() == 1)
MessageBox.Show("Запись удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Information);
else
MessageBox.Show("Запись не удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Error);
DataTable dt = new DataTable("Сотрудники");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Сотрудники", con);
da.Fill(dt);
dg1.DataSource = dt;
Для редактирования данных в таблице отдельного метода не предусмотрено, но используется алгоритм, который позволяет изменять данные непосредственно в самом элементе dataGridView. Этот метод очень прост и понятен, для его работы необходимо определить позицию выделенной ячейки в таблице, запомнить все данные из этой строки, а после введения изменений и подтверждения пользователем обновить данные в элементе dataGridView.
private void dg1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
edit = dg1.CurrentCell.Value;
ID = (int)dg1.CurrentRow.Cells[0].Value;
ColumnName = dg1.Columns[dg1.CurrentCellAddress.X].HeaderText;
private void dg1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (ColumnName == "ID")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
return;
}
else if (ColumnName == "Дата поступления")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
return;
}
if (edit.ToString() != dg1.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
OleDbCommand com = new OleDbCommand("Update Сотрудники Set [" + ColumnName + "]='" + dg1.CurrentCell.Value + "' Where ID=" + ID, con);
com.ExecuteNonQuery();
}
else
dg1.CurrentCell.Value = edit;
}
catch
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
}
Для таблицы Должности элемента ComboBox заполняются программно из базы данных с помощью следующего алгоритма.
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";
OleDbConnection con;
OleDbDataReader rdr1, rdr2, rdr3;
OleDbCommand cmd1, cmd2, cmd3;
public Form2()
{
InitializeComponent();
con = new OleDbConnection(InstConnectString);
con.Open();
cmd1 = con.CreateCommand();
cmd1.CommandText = "Select [Код подразделения] From Подразделения";
rdr1 = cmd1.ExecuteReader();
while (rdr1.Read())
{
string tmp = ""; //для каждого нового пункта списка очищаем
if (tmp != "")// если в массиве данных есть значения
tmp += " ";
tmp += rdr1[0].ToString(); //формируем пункт поля со списком
comboBox1.Items.Add(tmp); //добавляем пункт списка к объекту
}
}
Другой элемента ComboBox, необходимый для добавления записи имеет список фиксированных значений.
В данном приложении алгоритм добавления данных выглядит следующим образом.
int id = SearchID.Start("Сотрудники", "ID", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb");
DateTime today = new DateTime();
today = Convert.ToDateTime(monthCalendar1.TodayDate.Date.ToShortDateString());
try
{
string insSQL2 = "Insert into Бухгалтерия values(" + id + ","
+ int.Parse(textBox12.Text) + "," + int.Parse(textBox13.Text) + ")";
OleDbCommand insCom2 = new OleDbCommand(insSQL2, con);
string insSQL = "Insert into Сотрудники values(" + id + ",'"
+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','"
+ textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','"
+ textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','"
+ Convert.ToDateTime(today) + "')";
OleDbCommand insCom = new OleDbCommand(insSQL, con);
string insSQL3 = "Insert into Должности values(" + id + ","
+ int.Parse(comboBox1.SelectedItem.ToString()) + ",'" + textBox10.Text + "','" + textBox11.Text + "',"
+ int.Parse(comboBox1.SelectedItem.ToString()) + ")";
OleDbCommand insCom3 = new OleDbCommand(insSQL3, con);
if (insCom2.ExecuteNonQuery() == 1 && insCom.ExecuteNonQuery() == 1 && insCom3.ExecuteNonQuery() == 1)
MessageBox.Show("Запись добавлена", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Введены некорректные данные", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Заключение
Разработанная программа повышает качество работы отдела кадров предприятий. Ведение базы данных сотрудников в электронном виде, а не вручную снижает вероятность ошибок, упрощает ввод информации и систематизирует ее. Используя данную программу, сотрудники отделов кадров могут легко следить за стажем работников, их зарплатой, изменением их личной информации.
В программе были реализованы следующие функции:
- добавление данных о новом сотруднике
- хранение данных о сотрудниках
- изменение данных о сотрудниках
- удаление данных о сотрудниках
- ведение бухгалтерии
- создание отчётов, возможность их сохранения и печати.
Программа повышает качество и доступность работы отдела кадров, снижает риск возникновения ошибок, сокращает затраты времени на обслуживание сотрудников. Данная система может применяться в любых отделах кадров на предприятиях как крупных, так и малых, что закономерно с учетом растущей актуальности задач информатизации, программа также доступна для модификации.
Список литературы
1. Герберт Шилдт "Полный справочник по C#", перевод с англ., издательский дом "Вильямс", Москва, 2004г.-752с.:ил. 2. Данилина Т.Г. Конспект лекций по "Технологии Программирования", РИО ПГУ, 2008 г. 3. Джесс Либерти "Создание .NET приложений. Программирование на C#", Издание 2-ое. Издательство "Символ-Плюс". Москва, 2005 г.-684с.
4. Карли Ватсон и др. "C#",перевод с англ., издательство "Лори", Москва, 2005г.-862с.
5. Кузнецов Сергей "Базы данных. Модели и языки", издательство "Бином-Пресс", 2008 г. 6. Лабор В.В. "Си шарп: Создание приложений для Windows", издательство "Харвест", Минск, 2003г.-384с.
7. Троелсен Э. "C# и платформа .NET. Библиотека программиста", издательский дом "Питер", Санкт-Петербург, 2004г.-796с.:ил.
8. Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2003. - 560с.
9. Чарльз Петцольд "Программирование для Microsoft Windows на C#", Том 2, перевод с англ., Издательско-торговый дом "Русская редакция", Москва , 2002г.-624с.:ил.
ПРИЛОЖЕНИЕ А
Руководство пользователя Для начала работы запускаем исполнительный файл, его название "Form1.exe". При запуске появится рабочее окно, в котором можно начинать работать.
Рисунок 1. Рабочее окно программы
Если необходимо добавить в базу данных нового сотрудника, то нужно нажать на кнопку "Добавить сотрудника". Откроется новое окно Form2.cs, в котором необходимо заполнить все предложенные поля, это позволит добавить данные о сотруднике во все таблицы базы данных одновременно, что необходимо для обеспечения целостности базы данных.
Рисунок 2. Добавление нового сотрудника
После введения всех необходимых данных следует нажать кнопку "Добавить" и если все данные были введены правильно, то выйдет диалоговое сообщение, подтверждающее выполнение запроса. Табельный номер сотрудника высчитывается программой автоматически, дата поступления на работу запишется текущая.
Рисунок 3 - Диалоговое сообщение, подтверждающее добавление нового сотрудника
Если необходимо изменить данные о сотруднике, то необходимо кликнуть левой кнопкой мыши по ячейке, в которую необходимо ввести изменения, и после введения исправлений нажать Enter или просто кликнуть один раз левой кнопкой мыши по любой другой ячейке таблицы. Если исправления введены верно, то изменение необходимо подтвердить в вышедшем диалогом окне.
Рисунок 4 - Изменение данных в таблице
Для удаления записи необходимо ввести в текстовую строку табельный номер удаляемого сотрудника и нажать кнопку "Удалить".
Рисунок 5 - Удаление сотрудника
Для осуществления поиска необходимо выбрать из выпадающего списка название поля, по которому будет производиться поиск, затем в текстовую строку вводить данные для поиска.
Рисунок 6 - Поиск по таблице
ПРИЛОЖЕНИЕ Б
Листинг программы
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Data.OleDb;
using System.Text.RegularExpressions;
namespace Отдел_кадров_завода
{
public partial class Form1 : Form
{
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";
OleDbConnection con;
string NameOfField, ColumnName;
object edit;
int ID;
public Form1()
{
InitializeComponent();
con = new OleDbConnection(InstConnectString);
con.Open();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt1 = new DataTable();
OleDbDataAdapter da1 = new OleDbDataAdapter("Select* from Сотрудники", con);
da1.Fill(dt1);
dg1.DataSource = dt1;
DataTable dt2 = new DataTable();
OleDbDataAdapter da2 = new OleDbDataAdapter("Select* from Должности", con);
da2.Fill(dt2);
dg2.DataSource = dt2;
DataTable dt3 = new DataTable();
OleDbDataAdapter da3 = new OleDbDataAdapter("Select* from Подразделения", con);
da3.Fill(dt3);
dg3.DataSource = dt3;
DataTable dt4 = new DataTable();
OleDbDataAdapter da4 = new OleDbDataAdapter("Select* from Бухгалтерия", con);
da4.Fill(dt4);
dg4.DataSource = dt4;
}
public void Search(string SQL)
{
try
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(SQL, con);
da.Fill(dt);
dg1.DataSource = dt;
}
catch
{
MessageBox.Show("Введены некорректные данные", "Поиск", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab.Text == "Сотрудники")
{
if (NameOfField == "ID" && textBox1.Text.Length != 0)
Search("Select* from Сотрудники where CInt(Mid(CStr(Сотрудники.ID),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text));
else if (NameOfField == "Фамилия" && textBox1.Text.Length != 0)
Search("Select* from Сотрудники where Сотрудники.Фамилия Like '" + textBox1.Text + "%'");
else if (textBox1.Text.Length == 0)
{
DataTable dt = new DataTable("Сотрудники");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Сотрудники", con);
da.Fill(dt);
dg1.DataSource = dt;
}
}
if (tabControl1.SelectedTab.Text == "Должности")
{
if (NameOfField == "ID" && textBox1.Text.Length != 0)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Должности where CInt(Mid(CStr(Должности.ID),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text), con);
da.Fill(dt);
dg2.DataSource = dt;
}
else if (NameOfField == "Код подразделения" && textBox1.Text.Length != 0)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Должности where CInt(Mid(CStr(Должности.[Код подразделения]),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text), con);
da.Fill(dt);
dg2.DataSource = dt;
}
else if (textBox1.Text.Length == 0)
{
DataTable dt = new DataTable("Должности");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Должности", con);
da.Fill(dt);
dg2.DataSource = dt;
}
}
if (tabControl1.SelectedTab.Text == "Подразделения")
{
if (NameOfField == "Код подразделения" && textBox1.Text.Length != 0)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Подразделения where CInt(Mid(CStr(Подразделения.[Код подразделения]),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text), con);
da.Fill(dt);
dg3.DataSource = dt;
}
else if (textBox1.Text.Length == 0)
{
DataTable dt = new DataTable("Подразделения");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Подразделения", con);
da.Fill(dt);
dg3.DataSource = dt;
}
}
if (tabControl1.SelectedTab.Text == "Бухгалтерия")
{
if (NameOfField == "ID" && textBox1.Text.Length != 0)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Бухгалтерия where CInt(Mid(CStr(Бухгалтерия.ID),1," + textBox1.Text.Length + "))=" + int.Parse(textBox1.Text), con);
da.Fill(dt);
dg4.DataSource = dt;
}
else if (textBox1.Text.Length == 0)
{
DataTable dt = new DataTable("Бухгалтерия");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Бухгалтерия", con);
da.Fill(dt);
dg4.DataSource = dt;
}
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
NameOfField = comboBox1.SelectedItem.ToString();
textBox1.Enabled = true;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
OleDbCommand insCom = new OleDbCommand("Delete from Сотрудники where ((Сотрудники.ID)=" + int.Parse(textBox2.Text) + ");", con);
if (insCom.ExecuteNonQuery() == 1)
MessageBox.Show("Запись удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Information);
else
MessageBox.Show("Запись не удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Error);
DataTable dt = new DataTable("Сотрудники");
OleDbDataAdapter da = new OleDbDataAdapter("Select* from Сотрудники", con);
da.Fill(dt);
dg1.DataSource = dt;
OleDbCommand insCom2 = new OleDbCommand("Delete from Бухгалтерия where ((Бухгалтерия.ID)=" + int.Parse(textBox2.Text) + ");", con);
insCom2.ExecuteNonQuery();
DataTable dt2 = new DataTable("Бухгалтерия");
OleDbDataAdapter da2 = new OleDbDataAdapter("Select* from Бухгалтерия", con);
da2.Fill(dt2);
dg4.DataSource = dt2;
DataTable dt3 = new DataTable("Подразделения");
OleDbDataAdapter da3 = new OleDbDataAdapter("Select* from Подразделения", con);
da3.Fill(dt3);
dg3.DataSource = dt3;
DataTable dt4 = new DataTable("Должности");
OleDbDataAdapter da4 = new OleDbDataAdapter("Select* from Должности", con);
da4.Fill(dt4);
dg2.DataSource = dt4;
}
catch
{
MessageBox.Show("Введены некорректные данные", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void dg1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
edit = dg1.CurrentCell.Value;
ID = (int)dg1.CurrentRow.Cells[0].Value;
ColumnName = dg1.Columns[dg1.CurrentCellAddress.X].HeaderText;
}
private void dg1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (ColumnName == "ID")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
return;
}
else if (ColumnName == "Дата поступления")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
return;
}
if (edit.ToString() != dg1.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
OleDbCommand com = new OleDbCommand("Update Сотрудники Set [" + ColumnName + "]='" + dg1.CurrentCell.Value + "' Where ID=" + ID, con);
com.ExecuteNonQuery();
}
else
dg1.CurrentCell.Value = edit;
}
catch
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg1.CurrentCell.Value = edit;
}
}
private void dg2_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
edit = dg2.CurrentCell.Value;
ID = (int)dg2.CurrentRow.Cells[0].Value;
ColumnName = dg2.Columns[dg2.CurrentCellAddress.X].HeaderText;
}
private void dg2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (ColumnName == "ID")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg2.CurrentCell.Value = edit;
return;
}
else if (ColumnName == "Код подразделения")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg2.CurrentCell.Value = edit;
return;
}
if (edit.ToString() != dg2.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
OleDbCommand com = new OleDbCommand("Update Должности Set [" + ColumnName + "]='" + dg2.CurrentCell.Value + "' Where ID=" + ID, con);
com.ExecuteNonQuery();
}
else
dg2.CurrentCell.Value = edit;
}
catch
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg2.CurrentCell.Value = edit;
}
}
private void dg3_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
edit = dg3.CurrentCell.Value;
ID = (int)dg3.CurrentRow.Cells[0].Value;
ColumnName = dg3.Columns[dg3.CurrentCellAddress.X].HeaderText;
}
private void dg3_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (ColumnName == "Код подразделения")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg3.CurrentCell.Value = edit;
return;
}
if (edit.ToString() != dg3.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
OleDbCommand com = new OleDbCommand("Update Подразделения Set [" + ColumnName + "]='" + dg3.CurrentCell.Value + "' Where [Код подразделения]=" + ID, con);
com.ExecuteNonQuery();
}
else
dg3.CurrentCell.Value = edit;
}
catch
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg3.CurrentCell.Value = edit;
}
}
private void dg4_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
edit = dg4.CurrentCell.Value;
ID = (int)dg4.CurrentRow.Cells[0].Value;
ColumnName = dg4.Columns[dg4.CurrentCellAddress.X].HeaderText;
}
private void dg4_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (ColumnName == "ID")
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg4.CurrentCell.Value = edit;
return;
}
if (edit.ToString() != dg4.CurrentCell.Value.ToString() && DialogResult.Yes == MessageBox.Show("Принять изменения?", "Редактирование", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
OleDbCommand com = new OleDbCommand("Update Бухгалтерия Set [" + ColumnName + "]='" + dg4.CurrentCell.Value + "' Where ID=" + ID, con);
com.ExecuteNonQuery();
}
else
dg4.CurrentCell.Value = edit;
}
catch
{
MessageBox.Show("Изменение этого поля невозможно", "Редактирование", MessageBoxButtons.OK, MessageBoxIcon.Error);
dg4.CurrentCell.Value = edit;
}
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
}
}
Form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Data.OleDb;
using System.Text.RegularExpressions;
namespace Отдел_кадров_завода
{
public partial class Form2 : Form
{
string InstConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb";
OleDbConnection con;
OleDbDataReader rdr1, rdr2, rdr3;
OleDbCommand cmd1, cmd2, cmd3;
public Form2()
{
InitializeComponent();
con = new OleDbConnection(InstConnectString);
con.Open();
cmd1 = con.CreateCommand();
cmd1.CommandText = "Select [Код подразделения] From Подразделения";
rdr1 = cmd1.ExecuteReader();
while (rdr1.Read())
{
string tmp = ""; //для каждого нового пункта списка очищаем
if (tmp != "")// если в массиве данных есть значения
tmp += " ";
tmp += rdr1[0].ToString(); //формируем пункт поля со списком
comboBox1.Items.Add(tmp); //добавляем пункт списка к объекту
}
}
private void button1_Click(object sender, EventArgs e)
{
int id = SearchID.Start("Сотрудники", "ID", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"Организация.mdb");
DateTime today = new DateTime();
today = Convert.ToDateTime(monthCalendar1.TodayDate.Date.ToShortDateString());
try
{
string insSQL2 = "Insert into Бухгалтерия values(" + id + ","
+ int.Parse(textBox12.Text) + "," + int.Parse(textBox13.Text) + ")";
OleDbCommand insCom2 = new OleDbCommand(insSQL2, con);
string insSQL = "Insert into Сотрудники values(" + id + ",'"
+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','"
+ textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','"
+ textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','"
+ Convert.ToDateTime(today) + "')";
OleDbCommand insCom = new OleDbCommand(insSQL, con);
string insSQL3 = "Insert into Должности values(" + id + ","
+ int.Parse(comboBox1.SelectedItem.ToString()) + ",'" + textBox10.Text + "','" + textBox11.Text + "',"
+ int.Parse(comboBox1.SelectedItem.ToString()) + ")";
OleDbCommand insCom3 = new OleDbCommand(insSQL3, con);
if (insCom2.ExecuteNonQuery() == 1 && insCom.ExecuteNonQuery() == 1 && insCom3.ExecuteNonQuery() == 1)
MessageBox.Show("Запись добавлена", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Введены некорректные данные", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
2
1/--страниц
Пожаловаться на содержимое документа