Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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(); } }
|