Разработка информационной системы учета затрат клиента на рекламные кампании для рекламных агентств

Описание рынка рекламы. Бизнес-процессы, взаимодействие между рекламным агентством и клиентом при помощи информационной системы. Расчет стоимости рекламной кампании. Проектирование базы данных и ее нормализация. Разработка пользовательского интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 01.08.2017
Размер файла 193,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

"НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

"ВЫСШАЯ ШКОЛА ЭКОНОМИКИ"

Московский институт электроники и математика имени А.Н. Тихонова

"Фундаментальная информатика и информационные технологии"

по направлению 02.03.02 Фундаментальная информатика и информационные технологии

Выпускная квалификационная работа

Разработка информационной системы учета затрат клиента на рекламные кампании для рекламных агентств

Студент Ломовцев А.А.

Руководитель ВКР Внуков А.А.

Аннотация

Реклама играет огромное значение в повседневной жизни человека. Она привлекает внимание к различным товарам или услугам со стороны потребителей, побуждая их купить продукт. В наши дни реклама встречается повсюду, поэтому существует множество видов рекламы, такие как телевизионная реклама, интернет-реклама, реклама в прессе, наружная реклама и даже устная. За последние несколько лет рынок рекламы в интернете стремительно набирает обороты и возможно уже через пару лет опередит рынок телевизионной рекламы, идущий сейчас на первом месте. Каждая компания пытается завлечь покупателя своими продуктами, тем самым увеличить аудиторию и прибыль.

Информационные технологии в сфере медиа-индустрии оказывают огромное влияние на развитие рекламы в целом. Основной целью этого дипломного проекта является разработка информационной системы учета затрат клиента на рекламные кампании для рекламных агентств. Разработка состоит из трех частей. Первая часть заключается в проектировании реляционной базы данных и нормализации связей между сущностями БД. Создание удобного пользовательского интерфейса с возможностью автоматизированного расчета стоимости рекламной кампании является второй частью. На заключительном этапе разработки происходит интеграция базы данных с пользовательским интерфейсом, с целью создания полностью готовой информационной системы и внедрения ее в рекламное агентство. О более подробном описании структуры и функциях данной системы можно узнать в этой работе.

Abstract

Advertisement plays an important role in everyday life because it pays consumer attention to different products and forms our desire to buy something. In this paper, the author considers information technologies in advertisement types which have a significant impact on advertising development. So far, there are some main types such as TV advertising, internet advertising, outdoor advertising and word to mouth. Nowadays, TV advertising is the leader of commercial market, but Internet advertising gains popularity and probably will get ahead. Each advertising helps companies to draw consumer's attention and as a result increase its profit.

The aim of the work is a development of system of client cost recognition from the campaigns for advertising agencies. The development consists of three main parts. The first part is database engineering and its normalization. A creation of convenient interface for users with calculation function of advertising campaigns depending on advertiser preferences is the second one. The last one is the main part, which implies the integration of designed database and convenient interface in order to create complete and reliable information system. This system will be described in greater detail in the work.

Оглавление

Введение

1. Описание рынка рекламы

2. Информационные системы в бизнес-сфере

3. Описание бизнес-процесса взаимодействия между рекламными агентствами и клиентами при помощи информационной системы

4. Модель расчета стоимости рекламной кампании

5. Реализация практических задач

5.1 Проектирование базы данных и ее нормализация

5.2 Разработка пользовательского интерфейса

5.3 Интеграция БД с пользовательским интерфейсом

6. Результаты

Перечень сокращений

Список литературы

Приложение 1

Приложение 2

Введение

Реклама - один из видов распространения информации с целью привлечения внимания потенциального потребителя или клиента к различным товарам и услугам. Значение рекламы в рыночной экономике сложно недооценить, ведь с детства мы знаем такую фразу: "Реклама - двигатель торговли". Эту фразу еще в начале 19 века сказал польский военный деятель Людвиг Метцель, основавший в России свое первое рекламное агентство.

Реклама считается очень значимым показателем потому, что без нее уже не может обойтись ни одна сфера деятельности или бизнеса в современном мире. Сейчас любая крупная корпорация имеет в штате PR отдел, который занимается продвижением своих продуктов на рынке, и выделяет финансирование на рекламу. Суммарные денежные средства, вырученные от ее продажи на территории Российской Федерации, насчитывают примерно около 1,5% от всего ВВП страны.

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

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

Главной целью моей выпускной квалификационной работы является разработка информационной системы расчета стоимости рекламной кампании и учета затрат клиентов для рекламных агентств. Актуальность и популярность данного направления подтверждается большим количеством публикаций и статей на эту тему, как например в книгах [3], [4], [5] и [6]. Схема расчета стоимости рекламной кампании будет наиболее приближена к реальной модели ценообразования и ее оценка будет проводиться на основе реальных данных компании "НРА" ("Национальный Рекламный Альянс").

Для реализации данного дипломного проекта необходимо решить ряд следующих задач:

· Описание бизнес-процессов взаимодействия рекламодателей с рекламными агентствами путем использования информационной системы.

· Создание и проектирования реляционной базы данных при помощи формального языка программирования SQL.

· Разработка удобного пользовательского интерфейса для менеджеров рекламных агентств в среде Visual Basic.NET (VB.NET).

· Интеграция базы данных с пользовательским интерфейсом.

· Реализация информационной системы расчета затрат рекламных кампаний для агентств.

Значимость дипломного проекта состоит в том, что данная информационная система может быть использована на практике в рекламных агентствах для автоматизации работы менеджеров при расчете стоимости рекламной кампании клиента при размещении на телевидении. Все оформленные заказы можно будет отследить в системе и выгрузить в MS Excel для более детального анализа деятельности рекламного агентства, что будет способствовать более прозрачному сотрудничеству между рекламными агентствами и медиа-селлерами.

1. Описание рынка рекламы

Современный рынок рекламы представляет собой отдельный экономический сектор, внутри которого взаимодействуют следующие субъекты:

· Рекламодатель - заказчик рекламы, который отвечает за производство, распространение и размещение рекламы (фирмы, дистрибьюторы, государственные органы или частные лица).

· Рекламопроизводитель - разработчик рекламы, который преобразуют рекламную информацию в более удобную форму для человеческого восприятия.

· Рекламораспространитель - лицо, отвечающее за размещение и распространение рекламы в СМИ.

· Потребитель рекламы - конкретная аудитория людей, для которых была проведена рекламная кампания, с целью привлечения их внимания к различным товарам и услугам.

Рекламный рынок состоит из множества субрынков таких как: рынок телерекламы, рынок радиорекламы, рынок наружной рекламы и другие. По своей структуре функционирования каждый из этих рынков мало чем отличается от других экономических рынков. Ему присущи все те же принципы:

· наличие спроса и предложения на рекламные услуги.

· конкуренция между рекламопроизводителями.

· развитая инфраструктура и концепция рынка.

· наличие правовых отношений между субъектами рынка, регламентируемых законами о рекламе.

Более подробно о структуре рекламного рынка и о его отличии от других рынков можно узнать в книге [1] и [2].

Информационные технологии оказывают огромное влияние на жизнь человека и развиваются стремительными темпами. В связи с этим, одни субрынки рекламы стали утрачивать свое значение, а другие наоборот, только набирают популярность с каждым днем. Например, реклама в различных печатных изданиях и интернет-реклама соответственно. Для сравнения ниже приведены наглядные данные о распределении рекламных бюджетов по субрынкам рекламы в 2000 и 2016 годах.

2. Информационные системы в бизнес-сфере

За последние десятилетия технологический прогресс достиг такого уровня, когда роль информации приобрела решающее значение в современном обществе. Информация во всех ее представлениях встречается человеку повсюду. Огромные потоки информации нужно хранить и обрабатывать где-то. Возможности человека для этого ограничены, поэтому именно для таких целей были придуманы информационные системы. Такие системы очень эффективны и широко распространены в бизнесе в наши дни. Они помогают фирмам и предприятиям собирать и хранить большие объемы полезной информации, а также автоматизировать рабочий процесс. В связи с увеличением конкуренции на рынке, наличие новых и инновационных локальных продуктов создает преимущество для компании и может сделать ее основным игроком в своей отрасли. Благодаря информационным системам, можно спрогнозировать различные показатели и выбрать наиболее оптимальный путь развития компании, тем самым уменьшив риски и количество неверно принятых решений.

Информационные системы делятся на два основных типа:

· информационно-поисковые системы (Google, Yandex).

· системы обработки данных (АСУ, ГИС, САПР, СУБД и др.).

Каждая информационная система состоит в свою очередь из базы данных, где хранится огромное количество данных, а также удобного и понятного пользовательского интерфейса. База данных обычно хранится на локальном сервере, к которому имеют доступ сотрудники компании в пределах своего офиса. Пользовательский интерфейс является творческой составляющей ИС и имеет широкий диапазон для полета фантазий разработчика. Любой разработчик имеет свое видение дизайна интерфейса. Однако, он должен учитывать желание пользователей и правильно описать связи с БД, чтобы в дальнейшем пользователям было приятно и удобно работать с этой информационной системой.

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

· Функциональное тестирование (проводится на этапе разработки и включает в себя ряд испытаний, проводимых для проверки выполнения функциональных требований заказчика к системе и корректности их работы).

· Тестирование производительности (проводится на этапе проектирование и заключается в определении быстродействия системы и границ ее производительности).

· Тестирование перед эксплуатацией (комплексное тестирование, проводимое на компьютерных ресурсах заказчика).

· Модульное тестирование (проводится при обновлении одного из модулей ИС с целью выявления возможных ошибок, которые могло повлечь за собой это обновление).

3. Описание бизнес-процесса взаимодействия между рекламными агентствами и клиентами при помощи информационной системы

В этой главе будет описан бизнес-процесс деятельности рекламного агентства с использованием информационной системы учета затрат клиента на рекламную кампанию для понимания принципов функционирования и структуры информационной системы в агентстве. Данный программный продукт позволит менеджерам в рекламных агентствах вести учет утвержденных заявок на размещение рекламных кампаний в тайм-слотах на телевидении и заводить информацию о клиентах и их заказах. Ниже представлен бизнес-процесс взаимодействия (рис. 3):

Рис. 3 Бизнесс-процесс взаимодействия с ИСУЗ.

Для понимания основной сути бизнес-процесса опишем пример, показывающий полный цикл взаимодействия каждого из объектов (от рекламодателя до медиа-селлера). На начальных этапах рекламодатель определяет объект (товар или услуга) для рекламы, который мог бы привлечь внимание потребителя. После определения целей рекламы и аудитории потребителей, на которую она направлена, делается заказ на изготовление рекламного ролика у специализированных организаций или создается самим клиентом на его территории. Как ролик изготовился, клиент приходит в рекламное агентство, чтобы менеджер рассчитал через ИСУЗ стоимость всей рекламной кампании согласно требованиям рекламодателя. Если клиента устраивает стоимость, то по его согласию менеджер оформляет заявку через систему, которая в свою очередь параллельно отправляется на рассмотрение медиа-селлеру. Он может либо утвердить заявку, либо отказать по причине несоответствия рекламного ролика каким-нибудь требованиям или закону о рекламе. В рекламе тоже существуют свои законы, регулируемые федеральной антимонопольной службой (ФАС), при несоблюдении которых могут накладываться штрафные санкции. После прохождения всех этих этапов заявка получает статус утверждена или нет, после чего сделка считается завершенной.

В первой версии ИСУЗ сотруднику агентства будет доступен следующий функционал (рис. 4):

Рис. 4 Основной функционал первой версии ИСУЗ.

4. Модель расчета стоимости рекламной кампании

В любой сфере деятельности, которая занимается продажей своих товаров или услуг, необходим правильный расчет стоимости этих продаваемых продуктов. Это позволит избежать убытков в компании и не отпугнуть потенциальных потребителей слишком завышенными ценами на свою продукцию. В сфере медиа-индустрии все работает также. Объектом продажи здесь выступает площадка для рекламы (например, канал, афиша или сайт), а заказчиком является рекламодатель, который хочет провести рекламную кампанию для привлечения интереса со стороны потребителей к своему продукту. В реализуемой системе модель расчета стоимости рекламной кампании чуть упрощена по сравнению с реальной моделью, но наиболее приближена к существующей модели ценообразования компании "НРА". Расчет стоимости рекламной кампании ведется на основе реальных данных, взятых из компании "НРА".

Стоимость РК (ACC) в системе рассчитывается по следующей формуле:

где

Базовая цена на канале определяется обычно медиа-селлером. Любая информация об изменении цен приходит в виде уведомлений на электронную почту рекламным агентствам.

В среднем длительность рекламного составляет около 30 секунд, что является самой оптимальной длительностью рекламы. После 30 секунды ролика внимание зрителя притупляется, он может переключить канал или уйти заниматься своими делами, пока идет реклама.

Продолжительность рекламной кампании в ИСУЗ указывается периодом (с какого по какое число). Система автоматически рассчитывает количество дней, находящихся в этом периоде.

Коэффициент прайма характеризует наличие наценки за размещение рекламы в прайм-тайм (с 18 до 23 часов). Исходя из этого, размещение в этот период времени является более дорогостоящим, но охватывает гораздо большую аудиторию телезрителей.

Дополнительная скидка - скидка, которую может дать рекламное агентство клиенту при пользовании его услугами для размещения рекламы. Например, для привлечения новых клиентов агентство может давать скидку за первое размещение или наоборот давать скидку постоянным клиентам. Это зависит от самого агентства. Максимально возможная агентская скидка, которую может дать менеджер клиент, в ИСУЗ составляет 10% от рекламного бюджета.

Скидка за холдинг - заранее рассчитанная скидка, которую дает холдинг за размещение рекламы на его каналах. На данный момент существует всего 3 холдинга: ВИ, ГПМ и СТС. Разбивку каналов по холдингам можно посмотреть в таблице 1 ниже:

Табл 1.

Холдинг

Каналы

ВИ

Первый, Россия 1, ТВЦ, РЕН ТВ, Пятый канал, Ю, Звезда, Россия 24, Муз-ТВ, Карусель, Disney

ГПМ

НТВ, ТНТ, Пятница, ТВ-3, ТНТ 4, Матч ТВ, 2х2

СТС

СТС, Домашний, Че, СТС Love

Скидка за раннее бронирование предоставляется клиенту при размещении рекламы через 90 дней со дня оформления заказа. Также она зависит от холдинга, каждый холдинг дает свою скидку за раннее бронирование.

5. Реализация практических задач

5.1 Проектирование базы данных и ее нормализация

В современных фирмах или компаниях накапливаются очень большие объемы полезной информации и данных, характеризующие деятельность предприятия. Для хранения информации в современном мире компании используют базы данных (БД). Реляционная база данных - совокупность таблиц, содержащих в себе всю необходимую информацию и соединенных различными связями между собой.

Алгоритм проектирования БД обычно схож во всех СУБД. Он состоит из 6 основных этапов:

1) Первый этап включает в себя определение целей и информационных потребностей, для которых будет разрабатываться БД.

2) Моделирование объектов реального мира и сопоставление их характеристик в базе данных.

3) Присваивание каждому объекту (кортежу) уникального идентификационного номера и определение первичного ключа для каждого отношения между сущностями БД. Они будут идентифицировать каждый кортеж уникальным образом (наличие первичного ключа гарантирует унификацию данных).

4) Определения подходящего типа данных для каждого из атрибутов и установление правил, которые будут отвечать за поддержку целостности данных.

5) Установление связей между сущностями и атрибутами БД и их нормализация во избежание избыточности данных.

6) Заключительным этапом является формирование прав для различных типов пользователей ИС с целью сохранения конфиденциальности информации.

В соответствии с техническими требованиями к информационной системе была спроектирована база данных в программе MySQL Workbench 6.3 CE и проведена нормализация связей между сущностями к типу связи "один-ко-многим". Представление базы данных может быть схематически изображено в виде ER-модели.

Опишем характеристики и значения каждого из атрибутов сущностей в таблице 2 ниже:

Табл. 2

Атрибут

Расшифровка

Тип

Размер

Holding

Холдинг

id_holding

Ключ холдинга (уникальный)

Автоинкрементный Целый

name_holding

Наименование холдинга

Символьный

10

Channel

Канал

id_channel

Ключ канала (уникальный)

Автоинкрементный Целый

id_holding

Ключ холдинга (внешний ключ)

Целый

name_channel

Наименование канала

Символьный

20

price

Цена 1 с/день рекламного ролика на канале

Вещественный

7

Advertiser

Рекламодатель

id_advertiser

Ключ рекламодателя (уникальный)

Автоинкрементный Целый

INN

ИНН рекламодателя

Символьный

10

name_advertiser

Название рекламодателя

Символьный

45

ph_num

Номер телефона

Символьный

14

DurDisc

Скидки

id_disc

Ключ скидки

Символьный

2

id_holding

Ключ холдинга (внешний ключ)

Целый

disc_coef

Значение скидки

Вещественный

3

Manager

Менеджер

id_manager

Ключ менеджера (уникальный)

Автоинкрементный Целый

login

Логин менеджера для входа в ИС

Символьный

30

password

Пароль менеджера для входа в ИС

Символьный

5

name_manager

ФИО менеджера

Символьный

45

manager_phnum

Телефонный номер менеджера

Символьный

14

Prime

Наличие прайм-тайма

id_prime

Ключ прайм-тайма

Символьный

1

prime_coef

Наценочный коэффициент за прайм-тайм

Вещественный

3

Order_info

Информация о заказе

id_order

Ключ заказа (уникальный)

Автоинкрементный Целый

id_advertiser

Ключ рекламодателя (внешний ключ)

Целый

id_manager

Ключ менеджера (внешний ключ)

Целый

date_order

Дата оформления заказа

Дата

id_channel

Ключ канала (внешний ключ)

Целый

date_adstart

Дата начала рекламной кампании

Дата

date_adend

Дата окончания рекламной кампании

Дата

adduration

Длительность рекламного ролика в секундах

Целый

3

id_prime

Ключ прайм-тайма (внешний ключ)

Символьный

1

cost

Стоимость рекламной кампании с учетом НДС

Вещественный

12

Спроектировав базу данных, в целях проверки правильности создания БД и типов данных для атрибутов, можно занести тестовые данные и посмотреть наличие ошибок .

Программа MySQL Workbench 6.3 CE очень удобна и понятна при проектировании баз данных. Она имеет возможность автоматической генерации кода создания таблиц после проектирования БД с проверкой на наличие несоответствий и ошибок (код создания БД описан в приложении 1).

5.2 Разработка пользовательского интерфейса

Для создания интерфейса была выбрана среда Visual Basic. NET > Приложение Windows Forms. В этой среде удобно создавать и перемещать пользовательские формы, как удобно пользователю. А также удобно работать c языком программирования VBA для экспорта данных в MS Excel. Информационная система учета затрат рекламодателя на рекламные кампании состоит из 4 основных форм:

1) Форма "Авторизация" авторизует пользователя в системе (

2) Форма "Расчет РК" отвечает за расчет стоимости рекламной кампании по множеству критериев с возможностью оформления итогового заказа в БД и выгрузки его в MS Excel

3) Форма "Каналы и БЦ" отвечает за изменения базовых цен на каналах и добавления нового канала в БД с возможностью выгрузки данных в MS Excel и их визуализации с помощью линейчатой диаграммы

4) Форма "Новый клиент", с ее помощью вносятся данные о новом рекламодателе в БД

Почти у каждого поля в системе, есть свои ограничения, при нарушении которых будут выскакивать уведомления об ошибке, и система подскажет пользователю, что нужно сделать и на какое поле ему следует обратить свое внимание. Ниже представлены некоторые категории возможных уведомлений об ошибках и их примеры:

На форме "Каналы и БЦ" есть кнопка "Просмотр БЦ на каналах" при нажатии на которую, появляется таблица с каналами и базовыми ценами на них и две кнопки: экспорт в Excel и построение линейчатой диаграммы. Пример визуализации базовых цен на каналах в виде линейчатой диаграммы и пример выгрузки информации о каналах и базовых ценах в MS Excel выглядят следующим образом:

5.3 Интеграция БД с пользовательским интерфейсом

После завершения проектирования базы данных и создания пользовательского интерфейса, их необходимо соединить вместе в единую информационную систему, которая и будет окончательным результатом этого проекта. Сначала база данных должна быть синхронизирована на сервер, в нашем случае на локальный сервер компьютера. В программе MySQL Workbench 6.3 CE есть специальная функция для этого Database > Synchronize Model. Затем после подключения базы данных к локальному серверу на языке Visual Basic.NET прописывается свой код к каждому отдельному полю на форме интерфейса, чтобы они отвечали за какую-то сущность или атрибут в БД (код создания интерфейса и его интеграции с БД описан в приложении 2).

Для построения приложения и создания иконки на рабочем столе, необходимо использовать встроенную функцию Build Project и потом задать ключевые свойства приложению: версия, товарный знак, иконка, название и некоторые по выбору. Построенное приложение можно найти в папке проекта Release с выбранной вами иконкой, что и есть запускающим файлом ИС. После этого менеджер рекламного агентства может легко запускать эту информационную систему у себя на компьютере с рабочего стола.

6. Результаты

Цели и задачи, сформулированные в техническом задании на выпускную квалификационную работу, были полностью выполнены и достигнуты. За период выполнения дипломного проекта была разработана информационная система для учета рекламных затрат клиентов для рекламных агентств. стоимость база нормализация интерфейс

Система состоит из базы данных с нормализованным связями между сущностями БД и удобного пользовательского интерфейса, с помощью которого можно изменять, удалять или добавлять данные в БД. Также есть возможность посмотреть визуальную информацию, представленную в виде линейчатой диаграммы, и выгружать основные данные (базовые цены на каналах, утвержденные заказы) в MS Excel, что делает систему более удобной для простых пользователей, которые очень часто на рабочем месте сталкиваются с различными продуктами MS Office. Эта первая версия данной информационной системы. Данная система имеет широкий спектр развития, в будущем можно улучшать старый и добавлять новый функционал в систему, автоматизируя работу менеджеров в рекламных агентствах.

Перечень сокращений

ИС - информационная система

БД - база данных

PR отдел - отдел в компании, занимающийся продвижением продуктов.

ВВП - валовый внутренний продукт

СМИ - средства массовой информации

ИСУЗ - информационная система учета затрат

СУБД - система управления базами данных

РК - рекламная кампания

БЦ - базовая цена на канале

Список литературы

1) Семенов Б.Д. Рекламный менеджмент: учебное пособие. -- 2-е изд. - М.: Информационно-внедренческий центр "Маркетинг", 2001 г.

2) Антипов К.В. Основы рекламы: Учебник -- М.: Издательско-торговая корпорация "Дашков и К", 2009 г.

3) Белов В.С. Информационно-аналитические системы. Основы проектирования и применения /МЭСИ. - М., 2004 г.

4) Макарова Т.В. Основы информационных технологий в рекламе. - М.: Юнити-Дана, 2009г.

5) Соколова Г.Н. Информационные технологии экономического анализа. - М.: Экзамен, 2002 г.

6) Smith M., "Targeted: How Technology Is Revolutionizing Advertising and the Way Companies Reach Consumers", 2014

7) Suehring S., "The MySQL Bible", Wiley Publishing, 2009

8) Connel J., "Developing Microsoft .NET Controls with Microsoft Visual Basic .NET", Microsoft Press, 2004

Приложение 1

-- MySQL Script generated by MySQL Workbench

-- 04/17/17 17:03:23

-- Model: New Model Version: 1.0

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------

-- Schema adagency

-- -----------------------------------------------------

CREATE SCHEMA IF NOT EXISTS `adagency` DEFAULT CHARACTER SET utf8 ;

USE `adagency` ;

-- -----------------------------------------------------

-- Table `adagency`.`Holding`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Holding` (

`id_holding` INT NOT NULL,

`name_holding` VARCHAR(10) NOT NULL,

PRIMARY KEY (`id_holding`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`Channel`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Channel` (

`id_channel` INT NOT NULL AUTO_INCREMENT,

`id_holding` INT NOT NULL,

`name_channel` VARCHAR(20) NOT NULL,

`price` DECIMAL(7,2) NOT NULL,

PRIMARY KEY (`id_channel`),

INDEX `ChannelHoldingFK_idx` (`id_holding` ASC),

CONSTRAINT `ChannelHoldingFK`

FOREIGN KEY (`id_holding`)

REFERENCES `adagency`.`Holding` (`id_holding`)

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`Advertiser`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Advertiser` (

`id_advertiser` INT NOT NULL AUTO_INCREMENT,

`INN` VARCHAR(10) NOT NULL,

`name_advertiser` VARCHAR(45) NOT NULL,

`ph_num` VARCHAR(14) NULL,

PRIMARY KEY (`id_advertiser`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`Manager`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Manager` (

`id_manager` INT NOT NULL,

`login_manager` VARCHAR(30) NOT NULL,

`password_manager` VARCHAR(5) NOT NULL,

`name_manager` VARCHAR(45) NOT NULL,

`manager_phnum` VARCHAR(14) NULL,

PRIMARY KEY (`id_manager`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`Prime`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Prime` (

`id_prime` CHAR(1) NOT NULL,

`prime_coef` DECIMAL(3,2) NULL,

PRIMARY KEY (`id_prime`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`DurDisc`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`DurDisc` (

`id_disc` CHAR(2) NOT NULL,

`id_holding` INT NOT NULL,

`disc_coef` DECIMAL(3,2) NOT NULL,

PRIMARY KEY (`id_disc`),

INDEX `DurDiscHoldingFK_idx` (`id_holding` ASC),

CONSTRAINT `DurDiscHoldingFK`

FOREIGN KEY (`id_holding`)

REFERENCES `adagency`.`Holding` (`id_holding`)

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `adagency`.`Order_info`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `adagency`.`Order_info` (

`id_order` INT NOT NULL AUTO_INCREMENT,

`id_advertiser` INT NOT NULL,

`id_manager` INT NOT NULL,

`date_order` DATE NOT NULL,

`id_channel` INT NOT NULL,

`date_adstart` DATE NOT NULL,

`date_adend` DATE NOT NULL,

`adduration` INT(3) NOT NULL,

`id_prime` CHAR(1) NOT NULL,

`cost` DECIMAL(12,2) NOT NULL,

PRIMARY KEY (`id_order`),

INDEX `OrderChannelFK_idx` (`id_channel` ASC),

INDEX `OrderAdvertiserFK_idx` (`id_advertiser` ASC),

INDEX `OrderManagerFK_idx` (`id_manager` ASC),

INDEX `OrderPrime_idx` (`id_prime` ASC),

CONSTRAINT `OrderChannelFK`

FOREIGN KEY (`id_channel`)

REFERENCES `adagency`.`Channel` (`id_channel`)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `OrderAdvertiserFK`

FOREIGN KEY (`id_advertiser`)

REFERENCES `adagency`.`Advertiser` (`id_advertiser`)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `OrderManagerFK`

FOREIGN KEY (`id_manager`)

REFERENCES `adagency`.`Manager` (`id_manager`)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `OrderPrimeFK`

FOREIGN KEY (`id_prime`)

REFERENCES `adagency`.`Prime` (`id_prime`)

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

-- -----------------------------------------------------

-- Data for table `adagency`.`Holding`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`Holding` (`id_holding`, `name_holding`) VALUES (1, 'ВИ');

INSERT INTO `adagency`.`Holding` (`id_holding`, `name_holding`) VALUES (2, 'СТС');

INSERT INTO `adagency`.`Holding` (`id_holding`, `name_holding`) VALUES (3, 'ГПМ');

COMMIT;

-- -----------------------------------------------------

-- Data for table `adagency`.`Channel`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (1, 1, 'Первый', 1828.57);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (2, 1, 'Россия 1', 904.76);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (3, 3, 'НТВ', 933.33);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (4, 3, 'ТНТ', 1419.05);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (5, 2, 'СТС', 1695.24);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (6, 2, 'Домашний', 1123.81);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (7, 3, 'Пятница', 1657.14);

INSERT INTO `adagency`.`Channel` (`id_channel`, `id_holding`, `name_channel`, `price`) VALUES (8, 1, 'ТВЦ', 847.62);

COMMIT;

-- -----------------------------------------------------

-- Data for table `adagency`.`Advertiser`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`Advertiser` (`id_advertiser`, `INN`, `name_advertiser`, `ph_num`) VALUES (1, '7705034202', 'PepsiCo', '+7(495)9370550');

INSERT INTO `adagency`.`Advertiser` (`id_advertiser`, `INN`, `name_advertiser`, `ph_num`) VALUES (2, '7802849641', 'Балтика', '+7(495)6477595');

INSERT INTO `adagency`.`Advertiser` (`id_advertiser`, `INN`, `name_advertiser`, `ph_num`) VALUES (3, '7701032910', 'Procter & Gamble', '+7(495)2585800');

COMMIT;

-- -----------------------------------------------------

-- Data for table `adagency`.`Manager`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`Manager` (`id_manager`, `login_manager`, `password_manager`, `name_manager`, `manager_phnum`) VALUES (1, 'Admin', '00000', 'Админ', '');

INSERT INTO `adagency`.`Manager` (`id_manager`, `login_manager`, `password_manager`, `name_manager`, `manager_phnum`) VALUES (2, 'AIvanov', '12345', 'Иванов А.С.', '+7(903)5553535');

INSERT INTO `adagency`.`Manager` (`id_manager`, `login_manager`, `password_manager`, `name_manager`, `manager_phnum`) VALUES (3, 'SMilina', '67890', 'Милина С.В.', '+7(906)5671290');

INSERT INTO `adagency`.`Manager` (`id_manager`, `login_manager`, `password_manager`, `name_manager`, `manager_phnum`) VALUES (4, 'FPetrov', '13579', 'Петров Ф.А.', '+7(985)3812516');

COMMIT;

-- -----------------------------------------------------

-- Data for table `adagency`.`Prime`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`Prime` (`id_prime`, `prime_coef`) VALUES ('0', 1);

INSERT INTO `adagency`.`Prime` (`id_prime`, `prime_coef`) VALUES ('1', 1.6);

COMMIT;

-- -----------------------------------------------------

-- Data for table `adagency`.`DurDisc`

-- -----------------------------------------------------

START TRANSACTION;

USE `adagency`;

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('H1', 1, 0.07);

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('H2', 2, 0.09);

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('H3', 3, 0.06);

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('E1', 1, 0.03);

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('E2', 2, 0.03);

INSERT INTO `adagency`.`DurDisc` (`id_disc`, `id_holding`, `disc_coef`) VALUES ('E3', 3, 0.04);

COMMIT;

Приложение 2

Формы "Расчет РК" и "Каналы и БЦ":

Imports MySql.Data.MySqlClient

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1

Dim myconn As New MySqlConnection("Server=localhost; User Id=root;Password= qwerty12345;Database=adagency")

Dim COMMAND As MySqlCommand

Dim READER As MySqlDataReader

Dim id_holding As Integer

Dim id_channel As Integer

Dim id_advertiser As Integer

Dim prime As String

Dim dur_ad As Integer

Dim ad_cost As Double

Dim ChPriceTable As DataSet

Dim item_ch_price(20) As String

Dim ch_price(,)

Private Sub add_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles add_button.Click

Try

myconn.Open()

Dim Query As String

Query = "insert into channel (id_holding, name_channel, price) values ('" & id_holding & "','" & addname_ch.Text & "','" & addprice_ch.Text & "')"

Request_handler(Query, myconn)

If addname_ch.Text = "" Then

MsgBox("Введите название канала!", MsgBoxStyle.OkOnly, "Ошибка добавления канала")

ElseIf Val(addprice_ch.Text) <= 0 Then

MsgBox("БЦ канала указана неверна!", MsgBoxStyle.OkOnly, "Ошибка добавления канала")

End If

MessageBox.Show("Канал добавлен")

myconn.Close()

addname_ch.Clear()

addprice_ch.Clear()

ComboBox_addhold_ch.SelectedIndex = -1

TabControl1.SelectedTab = TabControl1.TabPages("Calc_Tab")

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

Channel_Update_Form()

End Sub

Public Sub Holding_Update_Form()

Try

myconn.Open()

Dim Query As String

Query = "select * from holding"

Request_handler(Query, myconn)

ComboBox_addhold_ch.Items.Clear()

While READER.Read

Dim name_holding = READER.GetString("name_holding")

ComboBox_addhold_ch.Items.Add(name_holding)

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Public Sub Advertiser_Update_Form()

Try

myconn.Open()

Dim Query As String

Query = "select * from advertiser"

Request_handler(Query, myconn)

ComboBox_CalcAdvertiser.Items.Clear()

While READER.Read

Dim name_advertiser = READER.GetString("name_advertiser")

ComboBox_CalcAdvertiser.Items.Add(name_advertiser)

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub ComboBox_CalcAdvertiser_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_CalcAdvertiser.SelectedIndexChanged

Try

myconn.Open()

Dim Query As String

id_holding = 0

Query = "select * from advertiser where name_advertiser = '" & ComboBox_CalcAdvertiser.Text & "'"

Request_handler(Query, myconn)

While READER.Read

id_advertiser = READER.GetInt32("id_advertiser")

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub ComboBox_addhold_ch_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_addhold_ch.SelectedIndexChanged

Try

myconn.Open()

Dim Query As String

id_holding = 0

Query = "select * from holding where name_holding = '" & ComboBox_addhold_ch.Text & "'"

Request_handler(Query, myconn)

While READER.Read

id_holding = READER.GetInt32("id_holding")

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Public Sub Channel_Update_Form()

Try

myconn.Open()

Dim Query As String

Query = "select * from channel"

Request_handler(Query, myconn)

ComboBox_CalcChannel.Items.Clear()

While READER.Read

Dim name_channel = READER.GetString("name_channel")

ComboBox_CalcChannel.Items.Add(name_channel)

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Advertiser_Update_Form()

Channel_Update_Form()

Holding_Update_Form()

End Sub

Public Sub Request_handler(ByVal request As String, ByVal connect As MySqlConnection)

COMMAND = New MySqlCommand(request, myconn)

READER = COMMAND.ExecuteReader

End Sub

Private Sub CalcButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalcButton.Click

Try

myconn.Open()

Dim Query_prime, Query_hold_disc, Query_early_disc, QueryAll As String

Dim price, prime_coef, hold_disc, early_disc As Decimal

Dim day_count = DateDiff(DateInterval.Day, Calc_DateTimeFrom.Value, Calc_DateTimeTo.Value)

dur_ad = Val(Calc_dur.Text)

Dim add_discount = Val(Calc_add_disc.Text) / 100

If add_discount > 0.1 Then

MsgBox("Введите корректное значение доп. скидки!", MsgBoxStyle.OkOnly, "Ошибка ввода")

If MsgBoxResult.Ok Then

Calc_add_disc.Clear()

End If

ElseIf id_channel = 0 Then

MsgBox("Выберите канал!", MsgBoxStyle.OkOnly, "Ошибка ввода")

ElseIf (Calc_DateTimeTo.Value < Calc_DateTimeFrom.Value) Or (Calc_DateTimeFrom.Value < Now) Then

MsgBox("Неправильно указан период размещения!", MsgBoxStyle.OkOnly, "Ошибка ввода")

ElseIf dur_ad = 0 Then

MsgBox("Укажите длительность рекламного ролика!", MsgBoxStyle.OkOnly, "Ошибка ввода")

Else

QueryAll = "select price from channel where id_channel = '" & id_channel & "'"

Request_handler(QueryAll, myconn)

While READER.Read

price = (READER.Item("price"))

End While

myconn.Close()

myconn.Open()

If Calc_prime.Checked Then

Query_prime = "select prime_coef from prime where id_prime='1'"

prime = 1

Else

Query_prime = "select prime_coef from prime where id_prime='0'"

prime = 0

End If

Request_handler(Query_prime, myconn)

While READER.Read

prime_coef = (READER.Item("prime_coef"))

End While

myconn.Close()

myconn.Open()

If id_holding > 0 Then

Query_hold_disc = "select disc_coef from DurDisc where id_disc = 'H" & id_holding.ToString & "'"

Request_handler(Query_hold_disc, myconn)

End If

While READER.Read

hold_disc = (READER.Item("disc_coef"))

End While

myconn.Close()

myconn.Open()

Dim early = DateDiff(DateInterval.Day, Now, Calc_DateTimeFrom.Value)

If early > 90 Then

Query_early_disc = "select disc_coef from DurDisc where id_disc = 'E" & id_holding.ToString & "'"

Request_handler(Query_early_disc, myconn)

While READER.Read

early_disc = (READER.Item("disc_coef"))

End While

Else

early_disc = 0

End If

ad_cost = prime_coef * price * dur_ad * day_count * (1 - add_discount) * (1 - hold_disc) * (1 - early_disc)

ad_cost = Math.Round(ad_cost, 2)

Calc_itog.Text = ad_cost

CalcLabel_itog.Visible = True

Calc_itog.Visible = True

Label7.Visible = True

Order_Button.Visible = True

End If

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub ComboBox_CalcChannel_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_CalcChannel.SelectedIndexChanged

Try

myconn.Open()

Dim Query As String

id_holding = 0

Query = "select * from channel where name_channel = '" & ComboBox_CalcChannel.Text & "'"

Request_handler(Query, myconn)

While READER.Read

id_channel = READER.GetInt32("id_channel")

id_holding = READER.GetInt32("id_holding")

End While

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub ShowTableButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowTableButton.Click

Try

myconn.Open()

Dim Query As String

Dim Adapter As MySqlDataAdapter

Dim k As Long

k = 0

ListChPrice.Items.Clear()

Erase ch_price

Query = "Select channel.name_channel, holding.name_holding, channel.price from channel join holding on channel.id_holding=holding.id_holding"

COMMAND = New MySqlCommand(Query, myconn)

Adapter = New MySqlDataAdapter(COMMAND)

ChPriceTable = New DataSet

Adapter.Fill(ChPriceTable, "Table")

ReDim Preserve ch_price(0 To ChPriceTable.Tables(0).Rows.Count - 1, 0 To 2)

For i = 0 To ChPriceTable.Tables(0).Rows.Count - 1

For j = 0 To ChPriceTable.Tables(0).Columns.Count - 1

item_ch_price(j) = ChPriceTable.Tables(0).Rows(i)(j).ToString()

If (k <> 0) Then

If (j <> 1) Then

ch_price(i, j) = item_ch_price(j)

Else

ch_price(i, j) = item_ch_price(j)

End If

Else

ch_price(i, j) = item_ch_price(j)

k = k + 1

End If

Next

Dim lvi As New ListViewItem(item_ch_price)

ListChPrice.Items.Add(lvi)

Next

ListChPrice.Visible = True

XlBasePriceButton.Visible = True

BarChartButton.Visible = True

myconn.Close()

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XlBasePriceButton.Click

Dim appXL As Excel.Application

Dim wbXl As Excel.Workbook

Dim shXL As Excel.Worksheet

Dim headerXL As Excel.Range

Dim averXL As Excel.Range

' Start Excel and get Application object.

appXL = CreateObject("Excel.Application")

appXL.Interactive = False

' Add a new workbook.

wbXl = appXL.Workbooks.Add

shXL = wbXl.ActiveSheet

With shXL

.Cells(1, 1).Value = "Отчет сформирован: " & Now & ""

.Cells(2, 1).Value = "Шаблон: Выгрузка БЦ на каналах"

.Cells(4, 1).Value = "Канал"

.Cells(4, 2).Value = "Холдинг"

.Cells(4, 3).Value = "Базовая цена"

End With

headerXL = shXL.Range("A4", "C4")

For i = 0 To UBound(ch_price)

For j = 0 To 2

shXL.Cells(i + 5, j + 1).Value = ch_price(i, j)

shXL.Cells(i + 5, 3).Value = CDbl(shXL.Cells(i + 5, 3).Value)

Next (j)

Next i

averXL = shXL.Range("A" & UBound(ch_price) + 7 & "", "B" & UBound(ch_price) + 7 & "")

shXL.Cells(UBound(ch_price) + 7, 1).Value = "Средняя цена"

shXL.Range("B" & UBound(ch_price) + 7 & "").Formula = "=AVERAGE(C5:C" & UBound(ch_price) + 5 & ")"

With headerXL

.Font.Bold = True

.Font.Size = 11.5

.Font.Name = "Calibri Light"

.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter

.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter

.Interior.Color = QBColor(8)

.EntireColumn.ColumnWidth = 14

End With

With averXL.Font

.Bold = True

.Size = 11.5

.Name = "Calibri Light"

End With

appXL.Interactive = True

appXL.Visible = True

appXL.UserControl = True

End Sub

Private Sub BarChartButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BarChartButton.Click

Form2.Show()

Me.Hide()

For i = 0 To UBound(ch_price)

Form2.Chart1.Series("БЦ канала").Points.AddXY(ch_price(i, 0), Val(ch_price(i, 2)))

Next i

End Sub

Private Sub addButton_advertiser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton_advertiser.Click

Form3.Show()

Me.Hide()

End Sub

Private Sub Order_Button_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Order_Button.Click

Try

myconn.Open()

Dim Query As String

Dim now1 = Format(Now, "yyyy-MM-dd")

Dim now2 = Format(Calc_DateTimeFrom.Value, "yyyy-MM-dd")

Dim now3 = Format(Calc_DateTimeTo.Value, "yyyy-MM-dd")

Query = "insert into order_info (id_advertiser, id_manager, date_order, id_channel, date_adstart, date_adend, adduration, id_prime, cost) values ('" & id_advertiser & "','" & Form4.id_manager & "','" & now1 & "','" & id_channel & "','" & now2 & "','" & now3 & "','" & dur_ad & "','" & prime & "','" & Val(Calc_itog.Text) & "')"

Request_handler(Query, myconn)

If id_advertiser = 0 Then

MsgBox("Выберите рекламодателя!", MsgBoxStyle.OkOnly, "Ошибка ввода")

End If

MessageBox.Show("Заказ оформлен!")

myconn.Close()

ComboBox_CalcAdvertiser.SelectedIndex = -1

ComboBox_CalcChannel.SelectedIndex = -1

Calc_DateTimeFrom.ResetText()

Calc_DateTimeTo.ResetText()

Calc_dur.ResetText()

Calc_prime.ResetText()

Calc_add_disc.ResetText()

CalcLabel_itog.Visible = False

Calc_itog.Visible = False

Label7.Visible = False

Order_Button.Visible = False

Catch ex As MySqlException

MessageBox.Show(ex.Message)

Finally

myconn.Dispose()

End Try

End Sub

Private Sub ImportXLS_order_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImportXLS_order.Click

Try

myconn.Open()

Dim Query As String

Dim Adapter As MySqlDataAdapter

Dim orderColumns As DataSet

Dim order(,)

Dim xlOrderItem() As String

Dim appXL As Excel.Application

Dim wbXl As Excel.Workbook

Dim shXL As Excel.Worksheet

Dim headerXL As Excel.Range

ReDim xlOrderItem(0 To 0)

Query = "select advertiser.name_advertiser, manager.name_manager, order_info.date_order, channel.name_channel, order_info.date_adstart, order_info.date_adend, order_info.adduration, order_info.id_prime, order_info.cost from order_info join advertiser on order_info.id_advertiser = advertiser.id_advertiser join manager on order_info.id_manager = manager.id_manager join channel on order_info.id_channel = channel.id_channel"

COMMAND = New MySqlCommand(Query, myconn)

Adapter = New MySqlDataAdapter(COMMAND)

orderColumns = New DataSet

Adapter.Fill(orderColumns, "Table")

ReDim Preserve order(0 To orderColumns.Tables(0).Rows.Count - 1, 0 To 8)

For i = 0 To orderColumns.Tables(0).Rows.Count - 1

For j = 0 To orderColumns.Tables(0).Columns.Count - 1

order(i, j) = orderColumns.Tables(0).Rows(i)(j).ToString()

Next j

Next i

' Start Excel and get Application object.

appXL = CreateObject("Excel.Application")

appXL.Interactive = False

' Add a new workbook.

wbXl = appXL.Workbooks.Add

shXL = wbXl.ActiveSheet

With shXL

.Cells(1, 1).Value = "Отчет сформирован: " & Now & ""

.Cells(2, 1).Value = "Шаблон: Краткая инфа о сделках"

.Cells(4, 1).Value = "Рекламодатель"

.Cells(4, 2).Value = "Менеджер"

.Cells(4, 3).Value = "Дата заказа"

.Cells(4, 4).Value = "Канал"

.Cells(4, 5).Value = "Начало РК"

.Cells(4, 6).Value = "Конец РК"

.Cells(4, 7).Value = "Длительность РР"

.Cells(4, 8).Value = "Наличие прайма"

.Cells(4, 9).Value = "Стоимость заказа"

End With

headerXL = shXL.Range("A4", "I4")

For Each cell In headerXL

cell.Value = Replace(cell.Value, Chr(32), Chr(10))

Next

For i = 0 To UBound(order)

For j = 0 To 8

shXL.Cells(i + 5, j + 1).Value = order(i, j).ToString()

shXL.Cells(i + 5, 9).Value = CDbl(shXL.Cells(i + 5, 9).Value)

Next j

shXL.Cells(i + 5, 10) = Microsoft.VisualBasic.Strings.Left(shXL.Cells(i + 5, 3).Value, 10)

shXL.Cells(i + 5, 11) = Microsoft.VisualBasic.Strings.Left(shXL.Cells(i + 5, 5).Value, 10)

shXL.Cells(i + 5, 12) = Microsoft.VisualBasic.Strings.Left(shXL.Cells(i + 5, 6).Value, 10)

shXL.Cells(i + 5, 13).Formula = "=IF(" & shXL.Cells(i + 5, 8).Value & " = 0, ""Нет"" ,""Есть"")"

Next i

shXL.Range("J5", "J" & UBound(order) + 5 & "").Copy()

shXL.Range("C5", "C" & UBound(order) + 5 & "").PasteSpecial(Excel.XlPasteType.xlPasteValues)

shXL.Range("J5", "J" & UBound(order) + 5 & "").Clear()

shXL.Range("K5", "K" & UBound(order) + 5 & "").Copy()

shXL.Range("E5", "E" & UBound(order) + 5 & "").PasteSpecial(Excel.XlPasteType.xlPasteValues)

shXL.Range("K5", "K" & UBound(order) + 5 & "").Clear()

shXL.Range("L5", "L" & UBound(order) + 5 & "").Copy()

shXL.Range("F5", "F" & UBound(order) + 5 & "").PasteSpecial(Excel.XlPasteType.xlPasteValues)

shXL.Range("L5", "L" & UBound(order) + 5 & "").Clear()

shXL.Range("M5", "M" & UBound(order) + 5 & "").Copy()

shXL.Range("H5", "H" & UBound(order) + 5 & "").PasteSpecial(Excel.XlPasteType.xlPasteValues)

shXL.Range("M5", "M" & UBound(order) + 5 & "").Clear()

shXL.Range("A1").Select()

With headerXL

.Font.Bold = True

.Font.Size = 11.5

.Font.Name = "Calibri Light"

.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter

.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter

.Interior.Color = QBColor(8)

End With

shXL.Columns("A:I").ColumnWidth = 15

shXL.Range("A4", "I" & UBound(order) + 5 & "").Borders.LineStyle = True


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.