Возникновение Basic
VBA (Visual Basic for Applications) — это диалект языка Visual Basic, расширяющий возможности Visual Basic и предназначенный для работы с приложениями Microsoft Office и другими приложениями от Microsoft и третьих фирм.
Оригинальный язык программирования Basic был создан Джоном Кемени и Томасом Курцем в 1963 г в Дартмурском колледже. Он быстро завоевал популярность в качестве языка для обучения программированию в университетах и школах и был адаптирован для использования на персональных компьютерах основателем и главой компании Microsoft Биллом Гейтсом в середине 70-х гг. С тех пор для ПК последовательно было выпущено несколько версий Basic, включая Microsoft Quick Basic и MS-DOS Qbasic. Хотя программная оболочка Visual Basic выполнена полностью графической, а сам язык программирования весьма далек от языка, применяемого для ранних версий интерпретаторов Basic, простота и элегантность Basic осталась в большой мере присущей и новым версиям. Широкие возможности Visual Basic и его простота послужили основной причиной для выбора его в качестве языка программирования для создания таких Windows- приложений как Excel.
Изначально фирма Microsoft позиционировала VB, как язык разработки прототипов (макетов) приложений и пользовательского интерфейса, что в общем-то первые версии только и умели делать. Аналогичный продукт в те времена был у Borland, назывался ObjectWindows. Объеты же и возможность работать с базами данных появилась несколько позже.
Преимущества VBA
Причины, сделавшие VB одной из платформ-лидеров:
- стандартный юзер-интерфейс пишется на нем очень быстро и непринужденно,
- полученный результат выходит стандартным в применении и каким угодно "навороченным" во внешнем виде,
- удобный, быстрый, легко реализуемый, доступ к базам данных,
- глубокая интеграция с Микрософт Офис,
- VB доступен во всех офисных приложениях, а также в некоторых других продуктах.
- высока распространенность.
Вот из-за этого VB идет вперед, и не думает уступать пальму первенства другим. То, на что пеняют программисты на других языках - большие размеры дистрибутивов, невозможность работы напрямую с системными библиотеками, например MFC, это все, в рамках области применения бэйсика может и нужные, но не необходимые добавки.
VB не проектировался как язык, заменяющий такие системные языки, как Cи (С++). Он предназначен прежде всего как язык управления объектами, которые создаются на C. Пример тому, ядро DBEngine - выполено на C++. Hо эксплуатация его производится в VB.
Ввиду специфики языка VB - отсутствие указателей, ссылок и пр., присутствующих в ObjectPascal (Delphi) и C/C++, программист на VB может больше времени уделять непосредственно разработке бизнес процессов приложения, не задумываясь о динамическом распределении памяти, передаче параметров по ссылкам и пр., что занимает много времени при программировании на других языках и порождает также же много ошибок, которые приходится потом исправлять. Один и тот же человек программируя на VB сделает гораздо меньше ошибок связанных с перечисленным выше, чем если он будет писать программу на Delphi или C++.
На VB удобно создавать макеты приложений, библиотек, которые потом будут перенесены на C - удобные средства отладки, более-менее устойчивый интерфейс.
Также есть язык PowerBASIC, который умеет компилировать VB код в DLL библиотеки или консольные приложения, так что можно обойтись и вовсе без Си.
Недостатки – в VB затруднен доступ к "низкоуровневым функциям" системы, чего не скажешь о Delphi. И уж тем более о C/C++, но ведь VB и задумывался с тем, что бы избавить программирующего на нём человека вообще о знании существования таких функций, хотя знающие люди также успешно ими пользуются. Программы написанные на VB требуют наличия соответствующих библиотек, они работают несколько медленнее, чем программы на Delphi, но оператор сидящий за компьютером работает во много раз медленней и, в общем-то, он ничего не заметит.
При проектировании баз данных, на мой взгляд механизм JET намного удобней BDE, используемого в продуктах Borland, к тому же есть еще RDO и ADO. А при работе с OLE объектами VB вообще, нет равных.
Следующим очень важным преимуществом VB является его "родство" с технологией COM. На VB проще всего писать полноценные COM-компоненты. Как следствие, на VB очень просто писать масштабируемые приложения. При необходимости, класс легко выносится в отдельный компонент, компонент легко переносится на другой компьютер (DCOM) или на сервер компонентов (MTS) и т.д. Причем все это не требует модификации собственно кода.
Универсальность VBA
VBA – универсальный язык. Освоив его, вы не только получите ключ ко всем возможностям приложений Office и других, перечисленных выше, но и будете готовы к тому, чтобы:
- создавать полноценные приложения на Visual Basic (поскольку эти языки - близкие родственники);
- использовать все возможности языка VBScript (это – вообще урезанный VBA). В результате в вашем распоряжении будут универсальные средства для создания скриптов администрирования Windows, для создания Web-страниц (VBScript в Internet Explorer), для создания Web-приложений ASP, для применения в пакетах DTS и заданиях на MS SQL Server, для создания серверных скриптов Exchange Server и многое-многое другое.
Простота VBA
VBA изначально был ориентирован на пользователей, а не на профессиональных программистов (хотя профессионалы пользуются им очень активно), поэтому создавать программы на нем можно очень быстро и легко. Кроме того, в Office встроены мощные средства, облегчающие работу пользователя: подсказки по объектам и по синтаксису, макрорекордер и т.п.
При создании приложений на VBA вам, скорее всего, не придется заботиться о установке и настройке специальной среды программирования и наличии нужных библиотек на компьютере пользователя – MS Office есть практически на любом компьютере.
Несмотря на то, что часто приложения VBA выполняются медленнее, чем бы вам хотелось, они нересурсоемки и очень хорошо работают, например, на сервере терминалов. Но, как правило, для программ на VBA особых требований про производительности и нет: для написания игр, драйверов, серверных продуктов они не используется. Чаще всего проблемы с производительностью VBA-приложений – это не проблемы VBA, а проблемы баз данных, к которым они обращаются. Если проблемы действительно в VBA (обычно тогда, когда вам требуется сложная математика), то всегда есть возможность написать важный код на C++ и обращаться к нему как к обычной библиотеке DLL или встраиваемому приложению (Add-In) для Word, Excel, Access.
Программы на VBA по умолчанию не компилируются и поэтому вносить в них исправления очень удобно. Нет необходимости разыскивать исходные коды и перекомпилировать программы.
Входные и выходные данные
Входными данными для программы является информация о заявителе, ответчике, иске и т.п. вносимая в файлы таблиц. Каждый из этих файлов представляет собой одну из таблиц, полученных при нормализации. Таблицы имеют следующие типы полей:
Структура таблицы Claim_Table представлена на рисунке 3.1
Рисунок 3.1 – Таблица «Claim_Table»
Структура таблицы Respondent_Tableпредставлена на рисунке 3.2
Рисунок 3.2 – Таблица «Respondent_Table»
Структура таблицы Applicant_Table представлена на рисунке 3.3
Рисунок 3.3 – Таблица «Applicant_Table»
Структура таблицы Aplicant_Represent_Table представлена на рисунке 3.4
Рисунок 3.4 – Таблица «Aplicant_Represent_Table»
Структура таблицы Claim_Type_Table представлена на рисунке 3.5
Рисунок 3.5 – Таблица «Claim_Type_Table»
Структура таблицы List_of_Towns представлена на рисунке 3.6
Рисунок 3.6 – Таблица «List_of_Towns»