Microsoft Access и Visual Basic



        СУБД Access многие воспринимают как типичное средство создания личных информационных систем. Данная СУБД легка в использовании и идеальна для начинающих разработчиков главным образом благодаря множеству мастеров, автоматизирующих работу.
        В MS Access используется язык программирования Visual Basic for Applications (VBA), существенным недостатком которого является невозможность создания выполняемых файлов (.EXE), которые бы не требовали для работы наличия Access. Эта проблема решается, если использовать визуально- и объектно-ориентированную среду разработки Visual Basic, входящую наряду с Visual FoxPro в пакет DevStudio.
        Для создания приложения для работы с данными, нужно сначала создать базу данных. Для этого можно использовать MS Access или другие средства.
        В поставку Visual Basic входит приложение для управления базами данных VisData. Это приложение позволяет создавать и модифицировать базы данных как в формате MS Access, так и в других популярных форматах. Запустить его можно из меню Add-Ins интегрированной среды разработки Visual Basic. Кроме того, исходные тексты этого очень полезного приложения поставляются в комплекте с Visual Basic в качестве одного из примеров. Для тех, кто хочет детально разобраться во всех тонкостях работы с базами данных с помощью Visual Basic, исходные тексты приложения VisData являются просто находкой. Пожалуй, не существует таких приемов работы, которые не были бы продемонстрированы в этом приложении.
 
        В данной главе не ставится цель подробно описать среду разработки Visual Basic. Рассмотрим лишь основные средства Visual Basic(версия 5.0) для работы с данными, которые позволяют быстро создавать приложения.

        DATA CONTROL - объект управления данными.
        С помощью Data Control можно быстро создавать простые приложения для работы с базами данных практически без написания программного кода. А используя этот элемент управления вместе с объектами доступа к данным (Data Access Objects или DAO) можно создавать достаточно мощные по своим функциональным возможностям программные комплексы, предназначенные для обработки информации из баз данных.
        Объект управления данными - это компонент Visual Basic, который позволяет получить доступ и манипулировать данными, хранящимися в файлах баз данных различных форматов. Используя объект Data, вы можете достаточно быстро создавать работоспособные Windows-приложения практически без написания кода программы. Перечислим основные действия, которые объект управления данными позволяет выполнять:

  • Подключение (connect) к базе данных.
  • Открытие таблицы базы данных или определение при помощи соответствующего SQL-запроса критерия выбора записей из полей базы данных.
  • Передача данных из полей базы данных к связанным элементам управления, расположенным на форме (например, поле редактирования), где данные можно просматривать или изменять.
  • Добавление новых записей, удаление записей и обновление содержимого базы данных (здесь, правда, без написания нескольких строк кода не обойтись).
  • Закрытие базы данных.
        Применение объекта Data дает возможность разработчику использовать в своих приложениях базы данных в наиболее распространенных в настоящее время форматах, таких как Microsoft Access, dBASE, FoxPro, Paradox, Btrieve, а также файлы электронных таблиц Microsoft Excel и Lotus 1-2-3. Кроме того, можно использовать в качестве источника данных обычные текстовые файлы (с расширением txt) или базы данных, доступные через интерфейс Open Database Connectivity (ODBC).
         Чтобы использовать объект управления данными в приложении, необходимо:
          1.Выбрать объект Data на панели инструментов, перенести его на экранную форму и установить требуемые размеры.
          2.Определить имя файла базы данных, с которым вы собираетесь работать, установкой свойства DatabaseName объекта Data.
          3.Определить источник данных установкой свойства RecordSource объекта Data.
          4.Определить тип набора записей установкой свойства RecordsetType объекта Data (этот пункт не обязателен, так как по умолчанию будет создан набор записей динамического типа).
        Если приложение должно работать с несколькими источниками данных, то можно одновременно разместить на экранной форме и использовать целый ряд объектов Data.
         Установить имя базы данных во время разработки приложения можно в окне свойств (Properties) объекта управления данными.
        После определения имени файла базы данных, в том же окне свойств надо определить источник данных.
        Свойство RecordSource объекта Data определяет, из какой таблицы базы данных требуется использовать
данные. Если требуется использовать данные из нескольких таблиц, для определения требуемого источника данных можно использовать язык структурированных запросов (SQL).

        Объект управления данными не работает напрямую с базой данных, а создает в памяти компьютера именованную область, которая используется как буфер между файлом базы данных и объектом Data. В этой области памяти и содержится информация из базы данных. Данные для объекта Recordset определяются свойствами RecordSource и RecordsetType объекта Data.

        Таким образом, набор записей (Recordset) представляет собой некоторое подмножество записей из одной или нескольких таблиц базы данных (или из нескольких баз данных). При этом, он может содержать как полную копию таблицы, так и ее часть. Если источник данных определен с помощью языка SQL, то набор записей будет содержать строки из базы данных, удовлетворяющие соответствующему SQL-запросу.

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

     
    Тип набора   записей Описание
    Table Набор записей, представляющий собой всю таблицу базы данных. Используя такой набор записей, можно добавлять изменять или удалять записи, причем доступ возможен только к одной таблице (таблица открывается вся целиком, что может потребовать значительных ресурсов памяти). Основным преимуществом такого набора записей является возможность использования индексов для упорядочения и поиска данных в таблице.
    Dynaset Динамический набор записей представляет собой таблицу базы данных или результат запроса, содержащего поля одной или нескольких таблиц. Можно добавлять, изменять или удалять записи и изменения будут отражаться в соответствующей базе  данных. При каждом изменении способа упорядочения записей динамический набор должен пересоздаваться заново. Фактически, набор записей динамического типа представляет собой ряд ссылок на информацию в базе данных, поскольку использует ключевые поля, однозначно определяющие каждую строку в базе данных. Использование ключей увеличивает скорость загрузки данных и уменьшает нагрузку на сеть при работе приложений в многопользовательской среде. Содержимое Memo-полей и полей, содержащих OLE-объекты не загружается до тех пор, пока не возникнет 
    необходимость их использования, например, вывода их на экран. Все это позволяет использовать динамические наборы записей при работе с большими таблицами и таблицами, содержащими OLE-объекты и 
    Memo-поля. Самым существенным недостатком набора записей динамического типа можно считать невозможность использования индексов.
    Snapshot Статическая копия таблицы, которую можно использовать, например, для поиска данных или для составления отчетов. При использовании статического набора записей, в отличие от табличного и динамического наборов, вся информация из базы данных (определенная свойством RecordSource объекта Data) заносится в память компьютера. Статический набор может содержать данные из одной или нескольких таблиц базы данных, при этом обновление данных невозможно. Поэтому, он может использоваться в случаях, не требующих обновления данных в исходной таблице, например, для поиска определенной записи или для составления отчетов. Так как содержимое записей статического набора находится в памяти, то все операции с ним выполняются гораздо быстрее, чем при использовании динамического или табличного наборов записей. При этом платой за высокую скорость является потребность в значительных ресурсах памяти.
     
    Связанные с данными элементы управления
         При разработке приложений такие действия как открытие базы данных, определение источника данных и др. возлагаются на объект управления данными. Однако, для создания полноценного приложения совершенно необходимым является наличие у разработчика средств визуализации самих данных. Для решения этой задачи в Visual Basic предусмотрены, так называемые, связанные с данными элементы управления (Data-bound Controls). Другими словами, в связанных элементах управления, расположенных на экранной форме, отображается содержимое полей текущей записи из базы данных (точнее, из набора записей).
        В качестве связанных объектов управления могут выступать некоторые стандартные объекты Visual Basic, например такое как Text box (текстовое окно).
        Кроме свойств, присущих обычным элементам управления Visual Basic, эти элементы управления имеют несколько общих свойств, специально предназначенных для связи с базами данных:
        DataField - Определяет имя поля в наборе записей, созданном объектом управления данными.
        DataSource - Определяет имя объекта управления данными, с которым связывается элемент управления.
        DataChanged - Показывает, было ли изменено содержимое связанного элемента управления.
        Кроме стандартных связанных элементов управления, в Visual Basic предусмотрено несколько специальных связанных элементов управления, которые, кроме как для работы с данными обычно не используются:
        Data-bound list box, Data-bound combo box, Data-bound grid.
        Источником данных для любого связанного элемента управления всегда является объект управления данными. Когда пользователь при помощи кнопок со стрелками на объекте Data перемещает указатель текущей записи с одной записи на другую, обновление данных в связанных элементах управления происходит автоматически.
        Любое изменение данных в связанных элементах управления, сделанное пользователем, немедленно отображается в наборе записей и затем в базе данных (если, конечно, не предусмотреть специальных мер).

        Таким образом, используя объект управления данными и связанные с данными элементы управления, можно фактически без написания кода путем задания свойств этих объектов создать полноценное приложение для работы с базами данных.