Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Модель функционирования информационной системы





 

Рис.59 Модель функционирования информационной системы.

Для работы с информационной системой пользователь запускает клиентское приложение.

Все пользовательские запросы посылаются на сервер СУБД, которая обращается к базе данных, на котором хранится вся необходимая информация

 

4.2.2.1. Выбор технологии реализации пользовательской компоненты.

 

 

В связи с тем, что в качестве СУБД была выбрана технология SQL Server, то технологией реализации пользовательской компоненты может быть выбрана любая технология, позволяющая подключаться к СУБД. К таким технологиям относятся следующие наиболее распространенные среды разработки Borland C++ Builder 6, Borland Delphi 7 Studio, Microsoft Visual Studio.

Borland C++Builder 6 - это мощная и надежная среда быстрой разработки высокоэффективных web-служб и приложений для электронного бизнеса. C++Builder предлагает всевозможные средства для работы с XML-документами и обеспечивает создание систем, которые могут напрямую взаимодействовать с приложениями деловых партнеров. Полнофункциональная и высокопроизводительная платформа для разработки компонентных web-приложений WebSnap гарантирует высокую эффективность коллективной работы и надежность создаваемых продуктов. Встроенный отладчик позволяет обнаружить и исправить ошибки, оптимизировать работу web-приложений и быстро подготовить надежный код. Поддержка серверных сценариев на JavaScript, VBScript и других языках позволяет обратиться к готовым решениям и воспользоваться накопленным опытом.

DataSnap дает возможность привлечь всю мощь C++Builder при разработке масштабируемых корпоративных приложений баз данных. DataSnap органично объединяет существующие корпоративные базы данных, приложения и объекты в рамках решений для электронного бизнеса с помощью технологий распределенных вычислений SOAP/XML, COM, TCP/IP и CORBA. Высокопроизводительное распределенное программное обеспечение промежуточного уровня DataSnap обеспечивает централизованный доступ всех бизнес-приложений к базам данных при оптимальном использовании каналов связи с серверами баз данных и пропускной способности сети. DataSnap поддерживает различные методы C++Builder для доступа к данным и позволяет эффективно работать с СУБД IBM DB2, IBM Informix, Oracle, Sybase, Microsoft SQL Server, MySQL, Microsoft Access и Borland InterBase.

Кросс-платформенная библиотека компонентов CLX предоставляет обширные возможности для разработки высокопроизводительных Windows-приложений, переносимых на платформу Linux с минимальными изменениями. Интернет-компоненты NetCLX позволяют создавать кросс-платформенные приложения с использованием расширений API и CGI-сценариев для web-серверов Apache, Microsoft IIS и Netscape Web Server.

Драйверы баз данных dbGo for ADO, dbExpress и BDE, входящие в состав C++Builder, обеспечивают высокопроизводительную работу приложений с такими СУБД, как DB2, Informix, Oracle, Sybase, Microsoft SQL Server, MySQL, Access, Paradox и InterBase. Широкий выбор управляемых данными элементов интерфейса дает возможность быстро создавать прототипы приложений. SQL Monitor и другие отладочные инструменты служат повышению производительности, масштабируемости и уменьшению времени отклика приложений баз данных.

Тесная интеграция C++Builder и Borland Enterprise Server позволяет создавать глобальные решения для электронного бизнеса, соответствующие самым высоким требованиям заказчика. C++Builder обеспечивает эффективную разработку высокопроизводительных "тонких" и "толстых" Windows- и web-клиентов для приложений Borland Enterprise Server. Web-службы SOAP/XML и технологии BizSnap, WebSnap и DataSnap дают возможность через Интернет организовать прямое взаимодействие корпоративных приложений Borland Enterprise Server с компонентами Enterprise JavaBeans ваших деловых партнеров.

C++Builder включает обширный набор средств, которые повышают производительность труда программистов и сокращают продолжительность цикла разработки. Многофункциональная интегрированная среда разработки C++Builder включает компилятор, удовлетворяющий стандарта ANSI/ISO, встроенный дизайнер форм, богатый набор средств для работы с компонентами, инструмент Object Inspector, менеджер проектов и отладчик.

CodeGuard дает возможность обнаруживать и диагностировать различные ошибки распределения памяти и ресурсов во время исполнения программы. Средства мониторинга CodeGuard позволяют автоматически устранять различные причины "утечек" памяти, включая неверные указатели и арифметические ошибки. Оперативная отладка (just-in-time debugging) нескольких процессов одновременно помогает немедленно устранять ошибки исполнения.

Новый многоцелевой менеджер проектов с открытой архитектурой обеспечивает полный контроль над исходными текстами и процессом сборки, позволяя просматривать зависимости модулей исходного кода и настраивать параметры компиляции, сборки и отладки для каждого из входящих в проект модулей. Эффективная поддержка автономных проектов на C и С++ значительно расширяет возможности управления процессами разработки.

C++Builder - это единственный компилятор C++, органично объединяющий среду разработки и приложения COM и CORBA для создания сложных систем на базе распределенных объектов. C++Builder предоставляет удобные средства разработки и отладки серверных COM- и CORBA-компонентов на языке C++, которые могут взаимодействовать с различными объектами и клиентскими приложениями Windows, UNIX и Java. В комплект поставки C++Builder входит лицензия разработчика (development license) для VisiBroker 4.5, позволяющая использовать лучший брокер объектных запросов для развертывания корпоративных приложений на основе серверных объектов.

Продукт C++Builder объединяет высокоэффективную среду разработки на C++ и Borland InterBase, мощную кросс-платформенную реляционную базу данных класса предприятия, удовлетворяющую стандарту SQL, которая отличается простотой использования и низкой стоимостью обслуживания.

 

BorlandDelphi 7 Studio представляет собой решение для разработки корпоративных приложений - от проектирования до развертывания, которое реализует новые, полностью интегрированные технологии разработки и, моделирования. Данные технологии обладают уникальной поддержкой Web, возможностями создания кроссплатформенных приложений и другими средствами

В комплект перехода на.NET, поставляемый вместе с Delphi 7 Studio, входят специальные подсказки и предупреждения, которые помогут подготовить приложения к переходу на.NET. Также Delphi 7 Studio позволяет воспользоваться имеющимися навыками программирования на Delphi для создания управляемых приложений. Поддержка компанией Borland платформы.NET открывает перед разработчиками, использующими Delphi, быстрый и продуктивный путь создания приложений для.NET с сохранением существующих инвестиций в информационные технологии.

Bold для Delphi - первый инструмент разработки, созданный по архитектуре Bold, интегрирует в среду Delphi мощные средства создания многозвенных коммерческих объектных приложений на основе моделей. Bold для Delphi создает правильно реализованную систему проектирования приложений на основе моделей, связывающую среду Unified Modeling Language (UML) в ModelMaker со средой проектирования приложений Delphi.

Появляется возможность эффективно проектировать приложения при помощи средств визуального моделирования и реорганизации кода на основе технологии UML. Среда моделирования ModelMaker реализует встроенные в Delphi возможности интеграции, реинжиниринга и мгновенной визуализации, позволяющие создавать высококачественные проекты и тексты программ, применяя готовые шаблоны проектирования и создавая более крупные модели.

Delphi 7 Studio можно использовать для создания приложений баз данных, программ с графическим пользовательским интерфейсом (GUI), Интернет-приложений и Web-служб для Windows, которые могут впоследствии быть перекомпилированы для работы на платформе Linux при помощи включенной в комплект поставки Delphi 7 Studio среды разработки Borland Kylix3 for Delphi. Это поможет повысить конкурентоспособность и доступность приложений, а также даст шанс повысить возврат инвестиций в существующие и вновь создаваемые прикладные системы.

Технология BizSnap расширяет возможности операционной системы Windows, добавляя к ним функции работы с веб-службами и XML для электронного бизнеса. Технология BizSnap упрощает обмен, преобразование и работу с XML-документами, и дает свободу и расширяемость, необходимые для того, чтобы перевести предприятие на новую волну электронного бизнеса B2B. Технология BizSnap обеспечивает прозрачную связь с различными приложениями ваших партнеров, чьи системы работают на платформах,.NET и BizTalk от Microsoft и ONE от Sun Microsystems.

Теперь при создании приложений в Delphi 7 Studio можно задействовать классы Borland VCL (библиотеки визуальных компонентов), обеспечивающие поддержку нового внешнего вида в стиле Windows XP.

При помощи Delphi 7 Studio появилась возможность быстро создавать высокопроизводительные приложения электронного бизнеса для платформ Windows, Linux и.NET, что позволит сократить время, требующееся на разработку. Delphi 7 - это мощная и высоко продуктивная среда быстрой разработки приложений (RAD), реализующая полнофункциональное решение разработки приложений электронного бизнеса: от проектирования до развертывания.

Технология DataSnap (прежнее название - MIDAS) реализует масштабируемые средства middleware, предназначенные для создания многоуровневых решений баз данных корпоративного класса с бесплатной лицензией на развертывание. В число технологий middleware входят SOAP, CORBA, FastSockets и DCOM. Различные механизмы работы с базами данных Delphi 7 Studio обеспечивают высокопроизводительный доступ к СУБД Microsoft SQL Server 2000, Borland InterBase, MySQL, IBMDB2 и Informix, а также Oracle.

 

Visual Basic — средство разработки программного обеспечения, разработанное корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка Бэйсик, у которого есть немало диалектов. В то же время Visual Basic — современный язык программирования, сочетающий процедуры и элементы объектно-ориентированных и компонетно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

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

Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3 — VB3. Окончательное признание как полноценного средства программирования для Windows — при выходе версии 5 — VB5. Версию VB6, входящую в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом. После этого разработчики из Microsoft существенно изменили направление развития данной технологии.

Visual Basic.NET хоть и позволяет программировать по-старому, по сути является совершенно другим языком, таким же, как и любой другой язык программирования для платформы.NET. Индивидуальность языка, так же как и его преимущества (простота, скорость создания программ, лёгкость использования готовых компонент) при использовании в среде.NET не имеют такого значения, как раньше — все сосредоточено на возможностях самой системы.NET, на её библиотеке классов. Поэтому сегодня (июль 2005) нужно говорить о классическом Visual Basic, его диалектах VBA и VBScript и о языке для платформы.NET — Visual Basic.NET.

Язык Visual Basic не стандартизован ни ANSI, ни ISO.

Этот язык очень сильно привязан к своей среде разработки и к операционной системе Windows, являясь исключительно инструментом написания Windows-приложений. Привязка к среде заключается в том, что существует большое количество средств, предназначенных для помощи и удобства программирования: встроенный отладчик, просмотр переменных и структур данных на лету, окно отладки, всплывающая подсказка при наборе текста программы (Intellisense). Все эти преимущества делают бесполезным и даже невозможным использование Visual Basic вне среды разработки, например в обычном текстовом редакторе.

 

 

В качестве среды разработки был выбран Borland C++ Builder по той причине, что данный язык программирования является более распространенным. Производительность действия информационной системы (на данных рабочих узлах), разработанной в Borland C++ Builder велика, а также она была в наличие на предприятии при выборе технологии реализации пользовательской компоненты.

 

4.2.3. Уточнение состава экранных форм. Определение конкретных типов управляющих элементов для форм.

 

 

Клиентская программа содержит следующие экранные формы:

§ Главная форма ИС (Стартовая страница);

§ Форма меню;

§ Форма просмотра информации по ремонту;

§ Форма просмотра информации по тех перевооружению;

§ Форма просмотра информации по эксплуатации;

§ Форма просмотра информации по поставкам;

§ Форма просмотра информации по организациям;

§ Форма просмотра всей информации;

§ Форма ввода/изменения информации об организации;

§ Форма ввода информации о договоре

§ Форма редакт инф по номерам телефона/по сделкам;

§ Форма поиска информации о договорах;

§ Форма поиска информации о номерах телефонах;

§ Форма поиска информации об организации;

§ Форма удаления инф по завершившимся договорам.

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

 

Рис.60 Диаграмма экранных форм.

 

Главная форма содержит следующие управляющие элементы:

§ Button1 – вход в меню;

§ Button2 – выход из программы;

 

 

Рис.61 Главная форма ИС – TEC

 

 

Форма меню содержит следующие управляющие элементы:

§ MainMenu1;

§ ADOConnection1;

§ Label1.

 

 

Рис.62 Форма меню - Menu

 


Форма просмотра информации по ремонту содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button4 - кнопка возвращения в основное меню.

 

 

Рис.63 Форма просмотра информации по ремонту - Remont

 

Форма просмотра информации по тех перевооружению содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button1 - кнопка возвращения в основное меню.

 

Рис. 64 Форма просмотра информации по тех перевооружению - TexPer

 

Форма просмотра информации по эксплуатации содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button1 - кнопка возвращения в основное меню.

 

 

Рис.65 Форма просмотра информации по эксплуатации - Ekspl.

 

Форма просмотра информации по поставкам содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button1 - кнопка возвращения в основное меню.

 

 

Рис.66 Форма просмотра информации по поставкам - Postavka.

 

Форма просмотра информации по организациям содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button1 - кнопка возвращения в основное меню.

 

Рис. 67 Форма просмотра информации по организациям - Org.

 

Форма просмотра всей информации содержит следующие управляющие элементы:

§ ADOQuery1;

§ DataSource1;

§ DBGrid1;

§ Button1 - кнопка возвращения в основное меню.

Рис. 68 Форма просмотра всей информации - Inf

Форма ввода/изменения информации об организации содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery8;

§ Label3 – Label16;

§ ComboBox2 – контакт;

§ ComboBox4 – город;

§ ComboBox1 – название;

§ ComboBox5 – улица;

§ ComboBox6 – дом;

§ ComboBox7 – офис;

§ ComboBox3 – должность;

§ Edit1 – ИНН;

§ Edit8 – КПП;

§ Edit9 – ОКПО;

§ Edit10 – ОГРН;

§ Edit2 – индекс;

§ Edit11 – фамилия;

§ Edit12 – имя;

§ Edit13 – отчество;

§ Edit3 – номер;

§ Button1 – кнопка добавления информации;

§ Button2 – кнопка очистки полей формы;

§ Button3 – кнопка возвращения в основное меню;

§ Button4 - кнопка изменения информации.

Рис.69 Форма ввода/изменения информации об организации –Vvod Org.

 

Форма ввода информации о договоре содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery4;

§ Label1 – Label10;

§ Edit1 – наименование работ;

§ Edit2 – сумма сделки;

§ DateTimePicker1 – дата заключения сделки;

§ DateTimePicker2 – дата начала работ;

§ DateTimePicker3 – дата завершения работ;

§ ComboBox1 – вид работ;

§ ComboBox2 – источник на поставку;

§ ComboBox3 – номер договора;

§ ComboBox4 – условие оплаты;

§ ComboBox5 – название организации;

§ Button1 – кнопка добавления информации;

§ Button4 – кнопка очистки полей формы;

§ Button3 – кнопка возвращения в основное меню.

 

 

Рис.70 Форма ввода информации о договоре – Vvod Dog.

Форма редактирования информации по номерам телефона/по сделкам содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery2;

§ Label1 – Label10;

§ Edit1 – номер телефона;

§ Edit3 – сумма сделки;

§ DateTimePicker1 – дата заключения сделки;

§ DateTimePicker2 – дата начала работ;

§ DateTimePicker3 – дата завершения работ;

§ ComboBox1 – контакт;

§ ComboBox2 – условие;

§ Button1 – кнопка изменения информации по телефонам;

§ Button3 – кнопка изменения информации по сделки;

§ Button2 – кнопка возвращения в основное меню.

 

 

Рис.71 Форма редактирования информации по номерам телефона/по сделкам - Izmen.

 

Форма поиска информации о договорах содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery2;

§ PopupMenu1;

§ DataSource1;

§ DBGrid1 – перечень договоров

§ Label1 – Label4;

§ ComboBox1 – название организации;

§ ComboBox2 – вид работ;

§ Edit1 – наименование работ;

§ Button1 – кнопка поиска информации;

§ Button2 – кнопка очистки полей формы;

§ Button3 – кнопка возвращения в основное меню.

Рис.72 Форма поиска информации о договорах – Poisk Dog

Форма поиска информации о номерах телефонах содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery3;

§ PopupMenu1;

§ DBGrid1 – перечень номеров телефонов;

§ DataSource1;

§ Label1 – Label5;

§ ComboBox1 – название организации;

§ Edit1 – фамилия;

§ Edit2 – имя;

§ Edit3 – отчество;

§ Button1 – кнопка поиска информации;

§ Button2 – кнопка очистки полей формы;

§ Button3 – кнопка возвращения в основное меню.

Рис. 73 Форма поиска информации о номерах телефонах – Poisk Tel.

Форма поиска информации об организации содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery4;

§ PopupMenu1;

§ DataSource1;

§ DBGrid1 – перечень организаций;

§ Label1;

§ ComboBox3 – название орг;

§ Edit1 – название организации;

§ Button1 – кнопка поиска информации;

§ Button2 – кнопка очистки полей формы;

§ Button3 – кнопка возвращения в основное меню.

Рис. 74 Форма поиска информации об организации – Poisk Org.

Форма удаления информации по завершившимся договорам содержит следующие управляющие элементы:

§ ADOQuery1 – ADOQuery2;

§ DataSource1;

§ DBGrid1 – перечень объектов выбранного наименования;

§ Button1 – кнопка удаления договоров;

§ Button2 – кнопка возвращения в основное меню.

Рис. 75 Форма удаления информации по завершившимся договорам - Udalen.

 

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

}

}

 

 

Date: 2015-09-19; view: 959; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию