|
|
|
Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA |
|
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA
Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA
35 Министерство образования Республики Беларусь Министерство образования и науки Российской Федерации Государственное учреждение высшего профессионального образования "Белорусско-Российский университет" Кафедра "Автоматизированные системы управления" Курсовая работа по теме: "Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA" по дисциплине "ПС ПЭВМ" 051-23 02 01.081446.23.81-01 Выполнил студент: гр. АСОИР-081 Чупилин А.М. Проверил: Василевский В.П. 2010 Содержание - Введение
- 1. Анализ предметной области
- 2. Использование интерфейсных средств СУБД MS Access 2003
- 2.1 Проектирование схемы данных
- 2.2 Создание средствами QBE запросов с условиями, итоговых запросов, запросов с вычисляемыми полями, запросов на обновление, удаление, добавление записей, перекрёстных запросов
- 2.3 Создание составного отчёта, содержащего диаграмму. Группировка и сортировка в отчётах
- 2.4 Создание иерархической формы по двум связанным таблицам
- 2.5 Создание страниц доступа к данным
- 3. Использование языка программирования VBA
- 3.1 Создание макросов
- 3.2 Разработка программы на VBA
- 3.3 Разработка функций на VBA
- 3.4 Создание главной кнопочной формы. Программирование элементов управления формы
- Заключение
ВведениеВ современном мире, когда возникла необходимость в хранении информации о большом количестве объектов наиболее эффективным способом решения этой проблемы является представление этой информации в виде таблиц. Но каждый объект может быть рассмотрен во взаимосвязи с другим объектом. Для хранения информации о таких объектах используются базы данных. Для создания баз данных существуют различные программные средства, одним из которых является средство Microsoft Office - Microsoft Access, в котором возможно создание непосредственно базы данных и различных приспособлений, облегчающих восприятие этой информации.В данной курсовой работе будет представлена база данных, содержащая информацию о группах товаров, товарах и фирмах-производителях этих товаров в виде таблиц, запросов, отчетов и форм.1. Анализ предметной областиВ предметной области "Группы товаров" сущностями являются: "группы товаров", "товары" и "производители". Сущность - совокупность объектов, обладающих одинаковым набором свойств. В базе данных о товарах сущностями являются товары. Для каждого отдельного экземпляра сущности в таблице создается отдельная запись (кортеж).Свойство (атрибут) - определенная часть информации о некотором объекте. Хранится в виде столбца (поля) таблицы.Группа товаров характеризуется следующим атрибутом: обозначением.Товар характеризуется следующими атрибутами: своим уникальным кодом, категорией, маркой, моделью, цветом, кол-вом на складе и ценой. Производитель характеризуется следующими атрибутами: годом основания, адресом, телефоном и официальным сайтом.2. Использование интерфейсных средств СУБД MS Access 20032.1 Проектирование схемы данныхВ нашем случае для описания предметной области необходимо три таблицы. Условно назовем их "Группа товаров", "Товары" и "Производитель". В каждой из них хранятся соответствующие атрибуты.В режиме “Конструктор” создаем эти три таблицы.Таблица с именем "1_Группа товаров" имеет структуру, представленную на рисунке 2.1.1.Рисунок 2.1 1-таблица “1_Группа товаров", открытая в режиме “конструктор".Структура таблицы “2_Товары" представлена на рисунке 2.1.2.Рисунок 2.1 2-таблица “2_Товары”, открытая в режиме “конструктор”.Структура таблицы “ 3_Производитель" представлена на рисунке 2.1.3.Рисунок 2.1 3-таблица “ 3_Производитель", открытая в режиме “конструктор".Для трех таблиц определим необходимые формат и длину полей, а также зададим ключевые поля.Ключевые поля - это поля, значения которых обладают свойством уникальности для каждой записи.В таблице "1_Группа товаров" ключевым будет являться поле "категория техники". Оно же имеет свойство "Совпадения не допускаются". Для поля "Марка (производитель)" таблицы "2_Товары", значения выбираются из списка. Источник списка создается при помощи мастера подстановок.Таблицы "1_Группа товаров" и "2_Товары" связаны с помощью ключевого поля "категория техники".Связь - способ, которым связана информация о разных объектах.В нашем случае, для связи таблиц базы данных "1_Группа товаров" и "2_Товары" используется связь типа “один - ко - многим". При таком типе связи каждой записи в одной таблице соответствует несколько записей в связанной таблице. Одна из них представляет сторону "один" (в нашем случае таблица "1_Группа товаров"), другая - сторону "много" (в нашем случае таблица "2_Товары"). Для связи этих таблиц нужно использовать только часть информации о товаре.Создадим схему данных, в которой установим связь между таблицами типа "один - ко - многим" по полю "категория техники". Для соблюдения целостности данных воспользуемся переключателем "Обеспечение целостности связи", а также опциями "Каскадное обновление связанных полей" и "Каскадное удаление связанных записей".Схема данных представлена на рисунке 2.1.4.Рисунок 2.1.4-схема данных.Таблица "1_Группа товаров" данной базы данных представлена на рисунке 2.1.5Рисунок 2.1.5-таблица "1_Группа товаров".Таблица "2_Товары" данной базы данных представлена на рисунке 2.1.6.Рисунок 2.1.6-таблица "2_Товары".Таблица "3_Производитель" данной базы данных представлена на рисунке 2.1.7.Рисунок 2.1.7-таблица "3_Производитель".При тестировании базы данных ошибок не обнаружено, а целостность данных обеспеченна первичным ключом и за счёт связи.2.2 Создание средствами QBE запросов с условиями, итоговых запросов, запросов с вычисляемыми полями, запросов на обновление, удаление, добавление записей, перекрёстных запросовЗапрос - это обращение к БД для поиска или изменения в базе данных информации, соответствующей заданным критериям.1) Запросы на выборкуЗапрос на выборку - это запрос, который выполняет отбор данных из одной или нескольких таблиц по заданным пользователем критериям, не приводящий к изменениям в самой базе данных.Создать список, отобразив только товар, марку и модель, произведенные маркой Samsung.Для этого создадим запрос в режиме “конструктор".Рисунок 2.2.1.1-запрос на выборку в режиме “конструктор”.После выполнения запроса получим результат, представленный на рисунке 2.2.1.2.Рисунок 2.2.1.2 - результат выполнения запроса.2) Запросы с вычисляемыми полямиЗапрос с вычисляемыми полями - запрос, в котором можно задать вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в запросе.Отобразить товар, марку, модель, а также новое поле "стоимость всех". Для этого в режиме “конструктор” создадим соответствующий запрос.Рисунок 2.2.2.1-запрос с вычисляемыми полями, открытый в режиме “конструктор".После выполнения запроса получим результат, представленный на рисунке 2.2.2.2.Рисунок 2.2.2 2-результат выполнения запроса.Для создания нового поля необходимо в режиме конструктора вызвать окно построителя выражений и в нем ввести следующее:Рисунок 2.2.2.3-окно построителя выражений.3) Итоговые запросыИтоговые запросы - запрос, в котором по одному полю производится группировка, а во всех остальных полях вводятся итоговые функции.В этом запросе подсчитать количество товаров. Для этого необходимо создать соответствующий запрос. В режиме “конструктор” запрос имеет вид, представленный на рисунке 2.2.3.1.Рисунок 2.2.3.1-итоговый запрос в режиме “конструктор”.После выполнения запроса получим результат, представленный на рисунке 2.2.3.2.Рисунок 2.2.3.2-результат выполнения запроса.4) Запрос на обновлениеЭтот тип запросов-действий предназначен для изменения значений некоторых полей для всех выбранных записей.Необходимо в таблице "2_Товары" в поле “Товар” поменять значение с “Телевизор” на “Домашний кинотеатр”. Для этого можно создать запрос на обновление. Для этого необходимо в режиме “конструктор” выбрать соответствующий тип запроса и в строке обновление сделать запись “Домашний кинотеатр”, а в строке условие отбора - “Телевизор".Рисунок 2.2.4 1-запроса на обновление в режиме “конструктор".После выполнения запроса таблица "2_Товары" будет иметь вид, представленный на рисунке 2.2.4.2.Рисунок 2.2.4 2-таблица "2_Товары" после выполнения запроса на обновление.5) Запрос на удалениеЭтот вид запросов служит для удаления из базы данных группы записей, удовлетворяющих определенным условиям.Необходимо удалить все товары из таблицы "2_Товары", чья марка (производитель) Samsung.Для этого в режиме “конструктор” необходимо создать запрос на удаление и в строке “условие отбора” поля “марка (производитель) ” внести запись ”Samsung". Запрос в режиме “конструктор” будет иметь вид, представленный на рисунке 2.2.5.1.Рисунок 2.2.5 1-запрос на удаление в режиме “конструктор".После выполнения запроса таблица "2_Товары" будет иметь вид, представленный на рисунке 2.2.5.2.Рисунок 2.2.5.2-таблица "2_Товары" после выполнения запроса на удаление.6) Запрос на добавлениеС помощью запроса на добавление записей можно скопировать выбранныезаписи и поместить их в другую таблицу.Поместим данные только о товарах телевизорах с черным (Black) цветом в таблицу "Black телевизоры (на добавление)". Для этого можно воспользоваться запросом на добавление. В котором необходимо указать имя таблицы, в которую будут помещены данные и соответствующие поля. Пример создания запроса на добавление в режиме “конструктор” представлен на рисунке 2.2.6.1.Рисунок 2.2.6.1-запрос на обновление в режиме “конструктор”.После выполнения запроса таблица "Black телевизоры (на добавление)" будет иметь вид, представленный на рисунке 2.2.6.2.Рисунок 2.2.6.2-таблица "Black телевизоры (на добавление)" после выполнения запроса на добавление.7) Перекрёстный запросС помощью перекрестного запроса можно более наглядно представить данные запросов, предусматривающих группировку по нескольким признакам.Необходимо составить структуру перекрёстной таблицы в качестве заголовка строк можно указать товар, в качестве заголовка столбцов можно указать марку (производитель). На пересечении получить количество товара каждой марки.Для этого составим перекрестный запрос, который в режиме “конструктор” будет иметь вид, представленный на рисунке 2.2.7.1.Рисунок 2.2.7.1-перекрестный запрос в режиме “конструктор".После выполнения запроса получим таблицу, имеющую вид, представленный на рисунке 2.2.7.2.Рисунок 2.2.7.2-таблица, полученная после выполнения перекрестного запроса.2.3 Создание составного отчёта, содержащего диаграмму. Группировка и сортировка в отчётахОтчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. В основном отчеты применяются для просмотра "картины в целом", поэтому часто базируются на многотабличных запросах.Отчеты предоставляют возможность группировать выводимую информацию с помощью окна сортировка и группировка. В окне сортировка и группировка можно определить до 10 полей или выражений, которые будут использоваться в отчете для группировки данных. В данном отчете группировка проведена по категории, товару, марке и модели. Отчет создан при помощи мастера создания отчетов и откорректирован при помощи конструктора отчетов. Вид отчета, открытого в режиме “конструктор” представлен на рисунке 2.3.1, а группировка в отчете на рисунке 2.3.2.Рисунок 2.3.1-отчет в режиме “конструктор".Рисунок 2.3.2-группировка в отчете в режиме “конструктор".Сам отчет имеет вид, представленный на рисунке 2.3.3.Рисунок 2.3.3-отчет по таблице "2_Товары".В Microsoft Access предусмотрена возможность построения графиков и диаграмм для более наглядного представления данных. График, приведенный на рисунке 2.3.4, показывает информацию о годе основания производителя.Рисунок 2.3.4-график, который показывает информацию о годе основания фирмы-производителя.2.4 Создание иерархической формы по двум связанным таблицамФормы, которые можно создать средствами Microsoft Access, позволяют получать информацию, а так же корректировать ее в удобном для пользователя стиле. Microsoft Access позволяет создавать иерархические формы, в которых отображается информация из двух таблиц, связанных отношением “один - ко - многим". В случае необходимости иметь информацию о товарах и их производителе можно создать иерархическую форму. Для создания такой формы можно использовать мастер создания форм. Для корректировки вида формы используют режим “конструктора”. Для сохранения, закрытия и выхода из Microsoft Access в форме используются соответствующие кнопки, созданные при помощи мастера создания кнопок. Для перехода к отчету, содержащему информацию о всех товарах используется гиперссылка. Данная форма в режиме “конструктор” представлена на рисунке 2.4.1.Рисунок 2.4.1-иерархическая форма в режиме “конструктор”.После перехода в режим формы можно добавлять или корректировать данные из двух таблиц.Рисунок 2.4.2-иерархическая форма.2.5 Создание страниц доступа к даннымДля создания статической страницы HTML доступа к данным по таблице “2_Товары" воспользуемся соответствующим мастером. В результате получим страницу, представленную на рисунке 2.5.1.Рисунок 2.5.1-страница доступа.3. Использование языка программирования VBA3.1 Создание макросовС помощью макросов можно выполнить практически все действия над объектами Access из тех, которые были описаны в предыдущих главах.Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Набор макрокоманд в Access очень широк, с помощью макросов можно реализовать многое из того, что позволяют сделать процедуры на VBA. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.Макросы, созданные в данной базе данных, рассмотрим при создании главной кнопочной формы.3.2 Разработка программы на VBAЯзык Visual Basic for Applications является объектно-ориентированным языком программирования. Стандартные объекты Visual Basic представляют собой основное средство манипуляции с данными Microsoft Access и других приложений семейства Microsoft Office. Знание технологии объектно-ориентированного программирования и состава объектных моделей Visual Basic позволяет разрабатывать профессиональные приложения, выполняющие всю необходимую обработку данных.В Microsoft Access 2003 есть возможность двух способов работы с данными:Посредством DAO (Data Access Objects);Посредством ADO (ActiveX Data Objects).Объектная модель Microsoft DAO 3.6 (DAO, Data Access Objects) - это унифицированный набор объектов для доступа к данным.Объекты управления данными ActiveX (ADO/ ActiveX Data Objects) предназначены для обеспечения доступа к источникам данных разных видов, от текстовых файлов до распределенных баз данных. ADO представляет собой объектно-ориентированный интерфейс для приложений, использующих OLE DB. OLE DB - это программный интерфейс, удовлетворяющий спецификации COM (Component Object Model, компонентная модель объектов), который предоставляет унифицированный способ доступа к различным источникам данных. Интерфейс OLE DB разрабатывался с целью получения оптимальной функциональности для приложений разных видов и поэтому не является простым в использовании. ADO - промежуточное звено между приложением и OLE DB, предоставляющее разработчикам приложений удобный объектно-ориентированный интерфейс.1) Создание таблицы в объектных моделях DAO.Public Sub Tovary_NewTable_DAO ()' Создание таблицы средствами DAO'Объявляем объектные переменные для объектов: база данных, таблица и полеDim base As Database, td As TableDef, fld As Field'Устанавливаем ссылку на текущую базу данныхSet base = CurrentDb'Создаем новую таблицу, используя метод CreateTableDef 'объекта DatabaseSet td = base. CreateTableDef ("TovaryDAO")'Создаем поле в таблице, используя метод CreateField объекта 'TableDef.Set fld = td. CreateField ("Код товара", dbInteger)'Добавляем поле "Код товара" в семейство Fields таблицыtd. Fields. Append fld'Создаем 2-ое поле с именем "Товар" и типом ТекстовыйSet fld = td. CreateField ("Товар", dbText)'Добавляем поле "Товар" в семейство Fields таблицыtd. Fields. Append fld'Создаем 3-е поле с именем "Категория" и типом ТекстовыйSet fld = td. CreateField ("Категория", dbText)'Добавляем поле "Категория" в семейство Fields таблицыtd. Fields. Append fld'Создаем 4-ое поле с именем "Марка" и типом ТекстовыйSet fld = td. CreateField ("Марка", dbText)'Добавляем поле "Марка" в семейство Fields таблицыtd. Fields. Append fld'Создаем 5-ое поле с именем "Модель" и типом ТекстовыйSet fld = td. CreateField ("Модель", dbText)'Добавляем поле "Модель" в семейство Fields таблицыtd. Fields. Append fld'Создаем 6-ое поле с именем "Цвет" и типом ТекстовыйSet fld = td. CreateField ("Цвет", dbText)'Добавляем поле "Цвет" в семейство Fields таблицыtd. Fields. Append fld'Создаем 7-ое поле с именем "Кол-во на складе" и типом ЧисловойSet fld = td. CreateField ("Кол-во на складе", dbInteger)'Добавляем поле "Кол-во на складе" в семейство Fields таблицыtd. Fields. Append fld'Создаем 8-ое поле с именем "Цена" и типом ДенежныйSet fld = td. CreateField ("Цена", dbCurrency)'Добавляем поле "Цена" в семейство Fields таблицыtd. Fields. Append fld'Добавляем таблицу к семейству TableDefs базы данныхbase. TableDefs. Append td'Обновляем количество объектов семейства TableDefsbase. TableDefs. RefreshEnd SubРезультат, выполнения программы представлен на рисунке 3.2.1.Рисунок 3.2.1-таблица “TovaryDAO”2) Создание таблицы в объектной модели ADO.Public Sub Tovary_NewTable_ADO ()'Соединение с текущей базой данныхDim cnn As New ADODB. ConnectionDim cat As New ADOX. Catalog'Используется объект модели объектов ACCESSSet cnn = CurrentProject. Connectioncat. ActiveConnection = cnnDebug. Print cat. Tables (0). TypeDim Table'Создаем таблицу в ADOSet Table = CreateObject ("ADOX. Table")'Название таблицыTable. Name = "TovaryADO"'Создаем столбец с именем "Код товара"Table. Columns. Append "Код товара"'Создаем столбец с именем "Товар"Table. Columns. Append "Товар"'Создаем столбец с именем "Категория"Table. Columns. Append "Категория"'Создаем столбец с именем "Марка"Table. Columns. Append "Марка"'Создаем столбец с именем "Модель"Table. Columns. Append "Модель"'Создаем столбец с именем "Цвет"Table. Columns. Append "Цвет"'Создаем столбец с именем "Кол-во на складе"Table. Columns. Append "Кол-во на складе"'Создаем столбец с именем "Цена,$"Table. Columns. Append "Цена,$"'Добавляем таблицу к семейству Tablescat. Tables. Append TableSet cat = NothingEnd SubРезультат, выполнения программы представлен на рисунке 3.2.2.Рисунок 3.2.2-таблица “TovaryADO”3) Удаление таблиц в объектных моделях DAO.Sub Del_table ()' Удаление таблицы средствами DAODim db As Database'Устанавливаем ссылку на текущую базу данныхSet db = CurrentDbdb. TableDefs. Delete "TovaryDAO"db. TableDefs. Refresh'Освобождаем объектную переменнуюSet db = NothingEnd SubВ результате выполнения данного программного кода таблица "TovaryDAO" будет удалена.4) Удаление таблиц в объектных моделях ADO.Public Sub delete_ADO ()'Удаление таблицы средствами ADO'Объявляем объектные переменные Connection и Catalog для связи данныхDim cnn As New ADODB. ConnectionDim cat As New ADOX. Catalog'Устанавливаем ссылку на текущую базу данных, используя объект connection ADODBSet cnn = CurrentProject. Connection'присваиваем объекту cat наше соединениеcat. ActiveConnection = cnn'удаляем таблицу TovaryADOcat. Tables. Delete ("TovaryADO")'закрываем соединениеSet cat. ActiveConnection = Nothing'освобождаем переменнуюSet cat = NothingEnd SubВ результате выполнения данного программного кода таблица "TovaryADO" будет удалена.5) Создание, изменение и выполнение запросов программными средствамиPublic Sub CreateQueryDAO ()Dim db As Database, qd As QueryDef, rs As DAO. RecordsetSet db = CurrentDb'создаем новый запрос и сохраняем его в базе данныхSet qd = db. CreateQueryDef ("DAO-запрос (Цена >500)")qd. SQL = "SELECT [Товар], [Категория], [Марка (производитель)], [Модель], [Цена,$] FROM [2_Товары] WHERE ([2_Товары]. [Цена,$]) >500"'создаем набор записей на базе нового запросаSet rs = qd. OpenRecordset (dbOpenDynaset)Set rs = NothingEnd SubРезультат выполнения запроса представлен на рисунке 3.2.3.Рисунок 3.2.3-запрос, созданный программными средствами.3.3 Разработка функций на VBAРассмотрим разработка функций на VBA на примере создания диалогового окна для ввода имени и пароля. При создании форм и элементов управления Access устанавливает большинству свойств значения по умолчанию. Изменим значение свойства Модальное окно (Modal) формы в диалоговом окне Свойства (Properties). Для открытия формы как диалогового окна свойству Модальное окно необходимо присвоить значение Да (Yes) до открытия формы.Первое свойство, которое мы изменим, - это Caption. Далее присвоим свойству ScroLLBars (Полосы прокрутки) значение 0, это означает, что на форме не будет полос прокрутки. Нам необходимо изменить внешний вид формы, чтобы она была как можно больше похожа на стандартные диалоговые окна Windows. Для этого изменим на противоположные значения по умолчанию значения следующих свойств: DividingLines (Разделительные линии), NavigationButtons (Кнопки перехода), RecordSelectors (Область выделения).Существуют такие свойства формы, которые нельзя установить из диалогового окна Свойства - они изменяются только программно. Примером такого свойства является свойство Visible (Вывод на экран), которое использовали в приведенной ниже программе. У элементов управления тоже есть свойство Visible, но его значение можно изменять не только программно, но и из окна Свойства.Создание формы ввод пароляPrivate Sub cmdOk_Click ()Dim strFrm As String, blnOk As BooleanstrFrm = "Ввод пароля"If Forms (strFrm). txtName = "prise" And _Forms (strFrm). txtPassword = "3331" Then'Имя и пароль введены верно,'закрываем диалоговое окноDoCmd. Close acForm, strFrmMsgBox "Добро пожаловать!", vbInformation _, "Ввод пароля"blnOk = TrueElse'Имя и пароль введены неверно,'подготавливаем диалоговое окно к новому запросуMsgBox "Имя или пароль введены неверно!", _vbExclamation, "Ввод пароля"blnOk = FalseEnd IfstrFrm = "Кнопочная форма"If blnOk Then'Дальнейшие действияDoCmd. OpenForm strFrm,,,,, acDialogEnd IfEnd SubPrivate Sub cmdCancel_Click ()CloseCurrentDatabaseEnd SubПредварительно создадим само окно формы с соответствующими полями и кнопками. В итоге получим форму, представленную на рисунке 3.3.1.Рисунок 3.3.1-окно формы ввода пароля.Для облегчения доступа к таблицам, отчетам, запросам и т.д., а также наилучшего представления базы данных используют кнопочную форму. Создают её с помощью Конструктора форм. На ней создают кнопки, нажатию которых соответствует вызов различных процедур.3.4 Создание главной кнопочной формы. Программирование элементов управления формыСоздадим главную кнопочную форму "Кнопочная форма", которая будет содержать следующие кнопки: создание таблицы в объектных моделях DAO и ADO, удаление таблицы в объектных моделях DAO и ADO, создание запроса DAO. Главная кнопочная форма представлена на рисунке 3.4.1.Рисунок 3.4.1-главная кнопочная форма.Создадим макрос на выполнение запроса DAO. Для этого указываем макрокоманду открыть запрос, в окне аргументов макрокоманды указываем имя запроса "DAO-запрос (Цена >500)", режим "Таблица", режим данных "Только чтение". На рисунке 3.4 2 представлен макрос режиме конструктор.Рисунок 3.4.2-макрос в режиме конструктора.На рисунке 3.4.3 представлен результат выполнения макроса.Рисунок 3.4.3-результат выполнения макроса.ЗаключениеДанная курсовая работа является примером использования интерфейсных средств СУБД MS Access 2003. В ней рассмотрены основные методы работы с объектами MS Access 2003: таблицы, запросы, формы, отчёты. Приобретены навыки по созданию, удалению, изменению таблиц, запросов в автоматическом режиме, а также с использованием языка программирования VBA.Были созданы формы с запрограммированными элементами управления с целью облегчения доступа к данным, быстрого поиска и т.д.
|
|
|
НОВОСТИ |
|
|
Изменения |
|
Прошла модернизация движка, изменение дизайна и переезд на новый более качественный сервер |
|