
- •1.2.2. Основные цели и виды деятельности
- •1.2.3. Выявление организационной структуры организации, определение функций ее подразделений и основных бизнес процессов.
- •1.2.3.1. Форма отчёта о подразделениях предприятия
- •1.2.3.2. Положение о бизнес процессах (бп).
- •Обеспечению ремонтов и технического перевооружения оборудования, зданий и сооружений.(оРиТп)
- •1.2.4. Исследование функций структуры и деятельности базового подразделения
- •1.2.4.1. Выявление бизнес - процессов базового подразделения гпд
- •Работа по заключению договоров с поставщиками и подрядными организациями (РпоЗд)
- •1.3. Формулировка требований к системе.
- •1.3.1. Состав бизнес процессов предприятия. Выявление типовых бизнес решений.
- •1.3.2. Содержание бизнес процессов. Диаграммы деятельности.
- •1.3.3. Конечная формулировка требований и концепции системы.
- •2. Анализ и проектирование.
- •2.1. Определение состава классов анализа.
- •2.2. Определение методов объектов.
- •2.3. Формирование диаграммы классов.
- •2.4. Предварительное определение состава хранимых данных.
- •2.5. Предварительное определение состава пользовательского интерфейса
- •2.6. Разработка системы централизованного хранения и обработки данных.
- •3. Разработка системы централизованного хранения и обработки данных
- •3.1 Формирование требований в базе данных.
- •3.2. Формирование отношений базы данных.
- •3.2. Выявление связей отношений.
- •3.3. Даталогическое проектирование
- •3.4. Организация бизнес логики на стороне сервера
- •3.5. Реализация выявленных механизмов.
- •4.2. Определение физической архитектуры данных.
- •4.2.1. Определение состава компонент.
- •4.2.2. Разработка компонент.
- •4.2.2.1. Выбор технологии реализации пользовательской компоненты.
- •4.2.3. Уточнение состава экранных форм. Определение конкретных типов управляющих элементов для форм.
- •4.2.4. Определение технологии доступа к компонентам данных.
- •4.3. Разработка программы для импорта бд из Excel в MsSql
- •5. Аппаратная и административная интеграция ис.
- •5.1. Разработка схемы развертывания.
- •5.1.2. Формулировка требований к физическим устройствам и сетевому оборудованию, состав рабочих мест.
- •5.1.2. Выбор состава аппаратных средств.
- •5.1.3. Расчет потребности персонала.
- •5.2. Разработка среды интеграции.
- •5.2.1. Выбор сетевой архитектуры и технологии.
- •5.2.1.1. Выбор архитектуры.
- •5.2.1.2. Выбор технологии и аппаратных средств. Расчет сети.
- •5.2.2. Разработка среды связи с внешними объектами.
- •6. Общие вопросы администрирования.
- •6.1. Определение стратегии администрирования на уровне руководства и целей предприятия.
- •6.2. Определение объектов администрирования.
- •6.3. Политика администрирования.
- •6.3.1. Права пользователей.
- •6.3.2. Установка пароля.
- •7. Вопросы информационной безопасности.
- •8. Тестирование.
- •9. Функционально-стоимостной анализ отдела гпд
- •9.1 Расчет затрат на разработку системы
- •9.1.1. Затраты на приобретение материалов
- •9.1.2. Затраты на заработную плату разработчикам системы и отчисления на есн
- •9.1.3. Затраты на электроэнергию
- •9.1.4. Накладные расходы
- •9.1.5. Смета затрат на разработку системы
- •9.2 Расчет эксплуатационных затрат
- •9.2.1. Затраты на заработную плату
- •9.2.4 Затраты на электроэнергию
- •9.2.5 Накладные расходы
- •9.2.6 Затраты на материалы
- •9.2.7 Смета эксплуатационных затрат
- •9.3 Расчет экономической эффективности
- •Список литературы
4.2.4. Определение технологии доступа к компонентам данных.
Основными компонентами работы с данными являются:
Клиентская программа;
Хранилище данных;
Программное обеспечение SQL Server.
Рис. 76 Диаграмма компонентов.
Рис. 77 Диаграммам компонентов
4.3. Разработка программы для импорта бд из Excel в MsSql
При разработке информационной системы по автоматизации хранения и учета договоров, стал вопрос о переносе существующих данных по договорам в новое хранилище. Для реализации данной задачи необходимо было создать программу по импорту данных из Excel, где они хранились, в БД MsSQL.
В качестве среды разработки был выбран Borland C++ Builder (пункт 4.2.2.1.).
Клиентская программа содержит одну форму Импорт:
Форма содержит следующие управляющие элементы:
ADOConnection1;
ADOQuery1- ADOQuery6;
DataSource1;
DBGrid1;
Edit1-Edit19 – поля для ввода значений;
Button1 – кнопка выхода;
Button2 – кнопка импорта из Excel в MsSQL.
Для выгрузки данных из Excel и их парсировки в БД были созданы 2 таблицы:
1.perev
в данную таблицу выгружаются данные их
Excel
2. TPO в этой таблицы хранятся данные после парсировки, далее они будут перенаправлены в другие таблицы БД.
Для парсировки, вывода и добавления данных были использованы следующие процедуры:
Процедура парсировки (разбиение строки)
CREATE PROCEDURE VstavkaPer
AS
declare @org varchar(500)
declare @dog varchar(500)
declare @sotrud varchar(500)
declare @adres varchar(500)
declare @tel varchar(500)
declare
@naimen varchar(500)
declare @srok varchar(500)
declare @usl varchar(500)
declare @summa varchar(500)
declare @nazv varchar(500)
declare @INN varchar(100)
declare @KPP varchar(100)
declare @OKPO varchar(100)
declare @OGRN varchar(100)
declare @gorod varchar(100)
declare @index varchar(100)
declare @ulica varchar(100)
declare @dom varchar(100)
declare @office varchar(100)
declare @f varchar(100)
declare @i varchar(100)
declare @o varchar(100)
declare @dol varchar(100)
declare @nomer varchar(500)
declare @dataZakl1 varchar(100)
declare @dataNach1 varchar(100)
declare @dataZav1 varchar(100)
declare @sum varchar(100)
declare @uslov varchar(100)
declare @dogovor varchar(100)
declare @naimenov varchar(100)
declare @dataZakl datetime
declare @dataNach datetime
declare @dataZav datetime
set DATEFORMAT DMY
set @dataZakl =convert(datetime,@dataZakl1)
set @dataNach=convert(datetime,@dataNach1)
set @dataZav=convert(datetime,@dataZav1)
declare @ID int
set
@ID=(Select id_t from perev where Название_орг=@org
and Договор=@dog
and Сотрудники=@sotrud
and Адрес=@adres
and Телефон=@tel
and
Наименование=@naimen
and Срок_работ=@srok
and Условие=@usl)
DECLARE _cursor CURSOR FOR
SELECT Название_орг,Договор,Сотрудники,Адрес,Телефон,Наименование,Срок_работ,Условие,Сумма
FROM perev
OPEN _cursor
FETCH next FROM _cursor INTO @org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl,@summa
WHILE @@FETCH_STATUS=0
BEGIN
set @nazv=@org
declare @delimeter char
set @delimeter =’ ‘
declare @s int
declare @s0 int
select
@s=charindex(@delimeter,@dog ),
@s0=charindex(@delimeter,RIGHT(@dog ,len(@dog )-@s )),
@dogovor=substring(@dog ,0,@s),@dataZakl=RIGHT(@dog,len(@dog )-@s-@s0)
select @dogovor,@dataZakl
declare @s1 int
declare @s2 int
declare @s3 int
select
@s1=charindex(@delimeter,@sotrud ),
@s3=charindex(@delimeter,RIGHT(@sotrud ,len(@sotrud )-@s1)),
@s2=charindex(@delimeter,RIGHT(@sotrud ,len(@sotrud )-@s1-@s3)),
@dol=substring(@sotrud ,0,@s1),@f=substring(@sotrud ,@s1+1,@s3),
@i=substring(@sotrud
,@s1+@s3+1,@s2),
@o=RIGHT(@sotrud ,len(@sotrud )-@s1-@s3-@s2)
select @dol,@f,@i,@o
declare @s4 int
declare @s5 int
declare @s6 int
declare @s7 int
select
@s4=charindex(@delimeter,@adres ),
@s5=charindex(@delimeter,RIGHT(@adres ,len(@adres )-@s4)),
@s6=charindex(@delimeter,RIGHT(@adres ,len(@adres )-@s4-@s5)),
@s7=charindex(@delimeter,RIGHT(@adres ,len(@adres )-@s4-@s5-@s6)),
@index=substring(@adres ,0,@s4),
@gorod=substring(@adres ,@s4+1,@s5),
@ulica=substring(@adres ,@s4+@s5+1,@s6),
@dom=substring(@adres ,@s4+@s5+@s6+1,@s7),
@office=RIGHT(@adres ,len(@adres )-@s4-@s5-@s6-@s7)
select @index,@gorod,@ulica,@dom,@office
set @nomer=@tel
set @naimenov=@naimen
declare @s8 int
declare @s9 int
select
@s8=charindex(@delimeter,@srok ),
@s9=charindex(@delimeter,RIGHT(@srok ,len(@srok )-@s8 )),
@dataNach=substring(@srok ,0,@s8),@dataZav=RIGHT(@srok,len(@srok )-@s8-@s9)
select @dataNach,@dataZav
set @uslov=@usl
set @sum=@summa
declare @IDtp int
set
@Idtp=(Select id_tpo from TPO where название_орг=@nazv
and город=@gorod
and индекс=@index
and улица=@ulica
and дом=@dom)
if @Idtp is null begin
insert into TPO (название_орг,ИНН,КПП,ОКПО,ОГРН,город,индекс,улица,дом,офис,фамилия,имя,отчество,должность,телефон,дата_закл,дата_нач,дата_зав,сумма,условие,договор,наименование)
values(@nazv,@INN,@KPP,@OKPO,@OGRN,@gorod,@index,@ulica,@dom,@office,@f,@i,@o,@dol,@nomer,@dataZakl,@dataNach,@dataZav,@sum,@uslov,@dogovor,@naimenov)
set @Idtp=IDENT_CURRENT(‘TPO’)
end
FETCH next FROM _cursor INTO @org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl,@summa
end
close _cursor
DEALLOCATE _cursor
GO
Процедура добавления выгруженных данных после парсировки в остальные таблицы бд.
CREATE PROCEDURE DobVstavkaT
@org varchar(50),
@INN varchar(50),
@KPP varchar(50),
@OKPO varchar(50),
@OGRN varchar(50),
@gorod varchar(50),
@index int,
@ulica varchar(50),
@dom varchar(50),
@office varchar(50),
@f varchar(50),
@i varchar(50),
@o varchar(50),
@dol varchar(50),
@nomer varchar(50),
@dataZakl datetime,
@dataNach datetime,
@dataZav
datetime,
@sum varchar(50),
@usl varchar(50),
@dog varchar(50),
@naimen varchar(50)
AS
declare @IDGorod int
declare @IDOrg int
declare @IDAdres int
declare @IDDol int
declare @IDSotrud int
declare @IDKon int
declare @IDTel int
declare @IDVid int
declare @IDDog int
declare @IDUsl int
declare @IDSdel int
set @IDGorod=(Select id_gorod from Город where город=@gorod)
if @IDGorod is null begin
insert into Город (город)
values (@gorod)
set @IDGorod=IDENT_CURRENT('Город')
end
set @IDOrg=(Select id_nazv_org from Название_орг where название=@org and ИНН=@INN and КПП=@KPP and ОКПО=@OKPO and ОГРН=@OGRN)
if @IDOrg is null begin
insert into Название_орг (название,ИНН,КПП,ОКПО,ОГРН)
values (@org,@INN,@KPP,@OKPO,@OGRN)
set @IDOrg=IDENT_CURRENT('Название_орг')
end
set @IDAdres=(Select id_adres from Адрес where индекс=@index and улица=@ulica and дом=@dom and офис=@office and id_gorod=@IDGorod and id_nazv_org=@IDOrg)
if @IDAdres is null begin
insert
into Адрес
(индекс,улица,дом,офис,id_gorod,id_nazv_org)
values (@index,@ulica,@dom,@office,@IDGorod,@IDOrg)
set @IDAdres=IDENT_CURRENT('Адрес')
end
set @IDDol=(Select id_dolgnost from Должность where должность=@dol)
if @IDDol is null begin
insert into Должность (должность)
values (@dol)
set @IDDol=IDENT_CURRENT('Должность')
end
set @IDSotrud=(Select id_sotrud from Сотрудники where фамилия=@f and имя=@i and отчество=@o and id_dolgnost=@IDDol and id_nazv_org=@IDOrg)
if @IDSotrud is null begin
insert into Сотрудники (фамилия,имя,отчество,id_dolgnost,id_nazv_org)
values (@f,@i,@o,@IDDol,@IDOrg)
set @IDSotrud=IDENT_CURRENT('Сотрудники')
end
declare @kon varchar(50)
set @IDKon=(Select id_kontact from Контакт where контакт=@kon)
if @IDKon is null begin
insert into Контакт (контакт)
values ('все')
set @IDKon=IDENT_CURRENT('Контакт')
end
set @IDTel =(Select id_telefon from Телефон where номер=@nomer and id_kontact=@IDKon and id_sotrud=@IDSotrud)
if @IDTel is null begin
insert into Телефон (номер,id_kontact,id_sotrud)
values (@nomer,@IDKon,@IDSotrud)
set @IDTel =IDENT_CURRENT('Телефон')
end
declare @vid varchar(50)
declare
@ist varchar(50)
set @IDVid=(Select id_vid_rabot from Вид_работ where вид_работ=@vid and источник_на_поставку=@ist)
if @IDVid is null begin
insert into Вид_работ (вид_работ,источник_на_поставку)
values ('техперевооружение',' ')
set @IDVid=IDENT_CURRENT('Вид_работ')
end
set @IDDog=(Select id_dog from Договор where договор=@dog and наименование=@naimen and id_vid_rabot=@IDVid)
if @IDDog is null begin
insert into Договор (договор,наименование,id_vid_rabot)
values (@dog,@naimen,@IDVid)
set @IDDog =IDENT_CURRENT('Договор')
end
set @IDUsl=(Select id_uslov from Условие where условие=@usl)
if @IDUsl is null begin
insert into Условие (условие)
values (@usl)
set @IDUsl=IDENT_CURRENT('Условие')
end
set @IDSdel =(Select id_sdelka from Сделка where id_dog=@IDDog and id_nazv_org=@IDOrg and дата_заключения=@dataZakl and дата_начала=@dataNach and дата_завершения=@dataZav and сумма=@sum and id_uslov=@IDUsl)
if @IDSdel is null begin
insert into Сделка (id_dog,id_nazv_org,дата_заключения,дата_начала,дата_завершения,сумма,id_uslov)
values (@IDDog,@IDOrg,@dataZakl,@dataNach,@dataZav,@sum,@IDUsl)
set @IDSdel =IDENT_CURRENT('Сделка')
end
GO
Процедура для вывода значений таблицы TPO
CREATE PROCEDURE ZaprosTPO
AS
select *
from TPO
GO
Используемый программный код:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString DataRoch;
AnsiString DataRoch1;
AnsiString DataRoch2;
//--------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ADOQuery1->ConnectionString = WideString("Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=\"DSN=Excel Files;DBQ=F:\\Владимир\\Учеба\\Мой Диплом\\Ексель документ для Импорта\\Перечень договоров 2006ДляИмпорта.xls;DefaultDir=F:\\Владимир\\Учеба\\Мой Диплом\\Ексель документ для Импорта;DriverId=790;MaxBufferSize=2048;PageTimeout=5;\";Initial Catalog=:\\Владимир\\Учеба\\Мой Диплом\\Ексель документ для Импорта\\Перечень договоров 2006ДляИмпорта"); //подключаем требуемый Excel файл
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Select * from [Техпер$]");
ADOQuery1->Active = true;
// выгружаем данные из Excel
Edit1->Visible=false;
Edit2->Visible=false;
Edit3->Visible=false;
Edit4->Visible=false;
Edit5->Visible=false;
Edit6->Visible=false;
Edit7->Visible=false;
Edit8->Visible=false;
Edit9->Visible=false;
Edit10->Visible=false;
Edit11->Visible=false;
Edit12->Visible=false;
Edit13->Visible=false;
Edit14->Visible=false;
Edit15->Visible=false;
Edit16->Visible=false;
Edit17->Visible=false;
Edit18->Visible=false;
Edit19->Visible=false;
DateTimePicker1->Visible=false;
DateTimePicker2->Visible=false;
DateTimePicker3->Visible=false;
}
//--------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//--------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("DELETE FROM perev");
//удаляем все поля таблицы perev
ADOQuery3->Prepared = true;
ADOQuery3->ExecSQL();
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("Insert into perev (Название_орг, Договор, Сотрудники, Адрес, Телефон, Наименование, Срок_работ, Условие, Сумма) values (:org, :dog, :sotrud, :adres, :tel, :naimen, :srok, :usl, :summa)"); //вставляем данные из Excel в таблицу perev
while(!ADOQuery1->Eof){
ADOQuery2->Parameters->ParamByName("org")->Value=ADOQuery1->Fields->Fields[0]->Value;
ADOQuery2->Parameters->ParamByName("dog")->Value=ADOQuery1->Fields->Fields[1]->Value;
ADOQuery2->Parameters->ParamByName("sotrud")->Value=ADOQuery1->Fields->Fields[2]->Value;
ADOQuery2->Parameters->ParamByName("adres")->Value=ADOQuery1->Fields->Fields[3]->Value;
ADOQuery2->Parameters->ParamByName("tel")->Value=ADOQuery1->Fields->Fields[4]->Value;
ADOQuery2->Parameters->ParamByName("naimen")->Value=ADOQuery1->Fields->Fields[5]->Value;
ADOQuery2->Parameters->ParamByName("srok")->Value=ADOQuery1->Fields->Fields[6]->Value;
ADOQuery2->Parameters->ParamByName("usl")->Value=ADOQuery1->Fields->Fields[7]->Value;
ADOQuery2->Parameters->ParamByName("summa")->Value=ADOQuery1->Fields->Fields[8]->Value;
//выгрузка всех данных из Excel в поля таблицы perev
ADOQuery2->Prepared = true;
ADOQuery2->ExecSQL();
ADOQuery1->Next();
}
ADOQuery6->ExecSQL();
// парсинг значений таблицы perev, заполнение полей таблицы TPO
ADOQuery4->Open();
while(!ADOQuery4->Eof)
{
if (DateToStr(DateTimePicker1->Date)!= "01.01.2005")
{//Формируем дату правильного формата для отправки на сервер
DataRoch = " ";
DataRoch = FormatDateTime("yyyymmdd",DateTimePicker1->Date);
}
if (DateToStr(DateTimePicker2->Date)!= "01.01.2005")
{//Формируем дату правильного формата для отправки на сервер
DataRoch1
= " ";
DataRoch1 = FormatDateTime("yyyymmdd",DateTimePicker2->Date);
}
if (DateToStr(DateTimePicker3->Date)!= "01.01.2005")
{//Формируем дату правильного формата для отправки на сервер
DataRoch2 = " ";
DataRoch2 = FormatDateTime("yyyymmdd",DateTimePicker3->Date);
}
ADOQuery5->SQL->Text="Exec DobVstavkaT '"+Edit1->Text.Trim() + "','"+Edit2->Text.Trim() + "','"+Edit3->Text.Trim() + "','"+Edit4->Text.Trim() + "','"+Edit5->Text.Trim() + "','"+Edit6->Text.Trim() + "','"+Edit7->Text.Trim() + "','"+Edit8->Text.Trim() + "','"+Edit9->Text.Trim() + "','"+Edit10->Text.Trim() + "','"+Edit11->Text.Trim() + "','"+Edit12->Text.Trim() + "','"+Edit13->Text.Trim() + "','"+Edit14->Text.Trim() + "','"+Edit15->Text.Trim() + "','"+DataRoch + "','"+DataRoch1 + "','"+DataRoch2 + "','"+Edit16->Text.Trim() + "','"+Edit17->Text.Trim() + "','"+Edit18->Text.Trim() + "','"+Edit19->Text.Trim() + "'";
ADOQuery5->ExecSQL();
//распределение значений из таблицы TPO по всем таблицам БД
DateTimePicker1->Date=ADOQuery4->FieldByName("дата_закл")->AsDateTime;
DateTimePicker2->Date=ADOQuery4->FieldByName("дата_нач")->AsDateTime;
DateTimePicker3->Date=ADOQuery4->FieldByName("дата_зав")->AsDateTime;
Edit1->Text=ADOQuery4->FieldByName("название_орг")->AsString;
Edit2->Text=ADOQuery4->FieldByName("ИНН")->AsString;
Edit3->Text=ADOQuery4->FieldByName("КПП")->AsString;
Edit4->Text=ADOQuery4->FieldByName("ОКПО")->AsString;
Edit5->Text=ADOQuery4->FieldByName("ОГРН")->AsString;
Edit6->Text=ADOQuery4->FieldByName("город")->AsString;
Edit7->Text=ADOQuery4->FieldByName("индекс")->AsString;
Edit8->Text=ADOQuery4->FieldByName("улица")->AsString;
Edit9->Text=ADOQuery4->FieldByName("дом")->AsString;
Edit10->Text=ADOQuery4->FieldByName("офис")->AsString;
Edit11->Text=ADOQuery4->FieldByName("фамилия")->AsString;
Edit12->Text=ADOQuery4->FieldByName("имя")->AsString;
Edit13->Text=ADOQuery4->FieldByName("отчество")->AsString;
Edit14->Text=ADOQuery4->FieldByName("должность")->AsString;
Edit15->Text=ADOQuery4->FieldByName("телефон")->AsString;
Edit16->Text=ADOQuery4->FieldByName("сумма")->AsString;
Edit17->Text=ADOQuery4->FieldByName("условие")->AsString;
Edit18->Text=ADOQuery4->FieldByName("договор")->AsString;
Edit19->Text=ADOQuery4->FieldByName("наименование")->AsString;
//заполнение полей формы
ADOQuery4->Next();
}
}