|
Программирование >> Разработка пользовательского интерфейса
Модель управления данными, основанная на объектах DAO, представляет собой коллекцию классов, которые моделируют структуру реляционной базы данных. Эти объекты имеют свойства и методы, которые позволяют выполнять все необходимые операции для управления базой данных, включая ее создание, описание таблиц, полей и индексов, связей между таблицами, перемещения по записям таблиц, выполнения запросов и т. д. Внутренний механизм процессора данных транслирует эти операции с объектами для доступа к данным в физические действия над файлами БД. Visual Basic имеет две отдельные версии процессора данных и библиотек объектов для доступа к данным: версия 2.5 предназначена для написания программ, работающих в 16-битовой операционной системе (Windows 3.х и Windows for Work-groups); версия 3.0 - для 32-битовой ОС (Microsoft Windows 95 или Windows NT). Написание прикладной программы для обработки данных в Visual Basic схематично состоит из создания объектов для доступа к данным, таких, например, как Database, TableDef, Field и Index, которые соответствуют различным составляющим физической БД, к информации которой вы хотите получить доступ. Используя соответствующие свойства и методы созданных объектов, можно выполнять необходимые операции с базой. Увидеть результат выполнения операций и обеспечить редактирование данных пользователем можно с помощью экранных форм, в которых будут использоваться соответствующие элементы управления. Изложенный подход упрощает вашу прикладную программу и позволяет обойтись значительно меньшим количеством строк кода, написанного вручную, а так же избавляет от необходимости непосредственного манипулирования и поиска необходимых данных. Программа становится более гибкой, потому что вы можете использовать те же самые объекты, свойства и методы при работе с разнообразными поддерживаемыми форматами баз данных. И если вам необходимо перейти от одного формата базы данных к другому (например, при перенесении базы данных Visual FoxPro на SQL Server), для этого потребуется сделать лишь небольшие изменения в программном коде. Таким образом вы даже можете создавать прикладные программы, которые будут соединять таблицы из двух и более различных баз данных в одном запросе или отчете. С помощью Visual Basic вы получаете доступ к БД, которые можно разбить на три категории: Базы данных Visual Basic, используют формат, аналогичный Microsoft Access. Управление этими БД осуществляет непосредственно процессор данных Visual Basic, что обеспечивает программе максимальную гибкость и скорость работы. Доступ к форматам БД внешних СУБД для персональных систем, таких как Btrieve, dBASE III, dBASE IV, Microsoft FoxPro и Paradox, осуществляется с помощью метода последовательного доступа (ISAM - Indexed Sequential Access Method). Это наиболее простой вариант технологии ODBC, о чем более подробно речь пойдет в главе 8. Таким же образом может осуществляться использование текстовых файлов или электронных таблиц формата Microsoft Excel и Lotus 1-2-3. Данные, хранящиеся на сервере, для доступа к ним требуется несколько более сложная технология с использованием отдельных драйверов ODBC. Чтобы создать приложение для управления данными в архитектуре клиент-сервер, из программы на сервер необходимо передать команды SQL, впрочем, об этом вы прочитаете чуть позже, добравшись до главы с помощью специальных элементов управления для работы с данными; путем применения объектов для доступа к данным (DAO - Data Access Objects). Если элементы управления данными позволяют практически без программирования обеспечить элементарные возможности по просмотру и редактированию информации в существующих БД, то использование объектов для доступа к данным хотя и требует программирования, но зато предоставляет самые широкие возможности по управлению базой данных. При этом не стоит думать, что программист перед проектированием прикладной программы должен выбрать один из методов. Наоборот, почти наверняка в своей прикладной программе вы будете использовать как один, так и второй способ работы с данными. В дальнейшем мы постараемся дать четкие рекомендации по использованию этих двух методов в различных ситуациях, возникающих при проектировании прикладной программы. В том случае, если вам интересны технологии клиент-сервер, обратите внимание на специальные методы, которые могут использоваться для доступа к данным в этом случае и которые описаны в главе 8. DBEngine Workspace Database TableDef Field lnde>f Field RecordSet QueryDef Field Parameter Container Field Relation Document Field User Group Group User Error Рис. 6.15. Иерархия объектов для доступа к данным в Visual Basic Мы поместили этот рисунок не для того, чтобы напугать вас мудреными словами иерархия объектов . Этот способ хранения объектов реализуется с помощью специального вида объекта, который называется коллекцией. Единственная цель объекта коллекции состоит в том, чтобы содержать другие объекты. Объекты, содержащиеся в данной коллекции, всегда относятся к одному и тому же виду. Например, в коллекции Indexes могут содержаться только объекты Index. Обратите внимание, что элементы иерархии объектов DAO на самом деле являются классами. Напомним, что класс - это не реальный объект, который может выполнять в программе какие-то действия, а только его прообраз. На основе определенного класса в программе мы создаем объект, который тут же готов выполнять предусмотренные в классе функции. Например, после такой строки в программе: Dim oWksp As Workspace создается объект на основе класса Workspace, для ссылки на который используется переменная oWksp. Так как главной темой обсуждения в этом параграфе является поведение объектов, которые создаются в программе для обеспечения заданной функциональности, термин объект используется чаще, чем класс . Только не забудьте, что в строгой формулировке, например, термин объект Database означает объект класса Database . Как вы можете видеть на рис. 6.15, большинство объектов доступа к данным представляется и Объекты для доступа к данным имеют иерархическую организацию, в которой большинство классов относится к коллекциям классов, которые, в свою очередь, принадлежат другому классу выше в иерархии. Полная структура объектов для доступа к данным приведена на рис. 6.15. как объект, и как коллекция. На самом верху иерархии - процессор данных, который представляется объектом DBEngine. Это единственный объект доступа к данным, который не может быть включен в какой-то другой объект. Объект DBEngine имеет коллекцию Workspaces (имя коллекции всегда имеет множественное число от имени содержащихся объектов), которая в свою очередь, может содержать один или большее количество объектов Workspace. Каждый объект Workspace имеет коллекцию Databases, которая содержит один или большее количество объектов Database и т. д. Доступ к отдельным объектам коллекции может быть осуществлен по его номеру. Нумерация объектов в коллекции начинается с нуля. Например, на первый объект TableDef в базе данных с именем MyDatabase можно сослаться как MyDatabase.TableDefs(0). На второй объект TableDef можно сослаться как MyDatabase.TableDefs(1) и т. д. Объекты в иерархии должны указываться с полным перечнем пути от самого верхнего объекта, например: DBEngine.Workspaces(0).Databases(0).TableDefs(0).Fields Customer ) Как видно из этого примера, некоторые коллекции, помимо цифрового индекса, для ссылки на конкретный объект допускают ссылку по имени. Например, мы ссылаемся на объект коллекции Fields по значению свойства Name объекта Field. В этом случае, при явной ссылке на объект, в отличие от ссылки по индексу, предпочтительнее использовать разделитель ! (восклицательный знак). Таким образом, следующие выражения эквивалентны: MyTableDef.Fields( Customer ) MyTableDef.Fields!Customer Большинство объектов для доступа к данным имеют коллекции по умолчанию. Это позволяет использовать в программе более простой код, так как в этом случае не требуется явного указания имени коллекции при ссылке на объект из коллекции по умолчанию. Например, коллекцией по умолчанию для объекта Recordset будет являться коллекция Fields. Для получения значения поля Customer вы можете написать: Cust = MyRecordset!Customer что короче, чем Cust = MyRecordset.Fields!Customer Использование заданных по умолчанию коллекций упрощает код в прикладной программе, потому что при использовании вложенных ссылок на объекты заданные по умолчанию коллекции и составляют основную иерархию пути до объектов. Основная идея объектно-ориентированного программирования заключается в том, что данные и процедуры, относящиеся к отдельному объекту, сохраняются все вместе внутри объекта. В Visual Basic, как и в других объектно-ориентированных языках программирования, данные, относящиеся к объекту (установки и атрибуты), называются свойствами, в то время как процедуры, с помощью которых выполняются какие-либо действия над объектами, называются методами. Таким образом, написание программы с использованием объектов для доступа к данным заключается в создании переменной, которая будет выполнять функции ссылки на объект, а затем в манипулировании объектом путем выполнения соответствующих методов и установки требуемых значений свойств. В качестве примера давайте рассмотрим следующий фрагмент программы: * Определяем переменные для ссылки на объекты Dim MyDB As Database, MyWS As Workspace, MyRS As Recordset * Открываем таблицу Clients в БД ACCOUNTS.MDB Set MyWS = DBEngine.Workspaces(0) Set MyDB = MyWS.OpenDatabase( ACCOUNTS.MDB ) Set MyRS = MyDB.OpenRecordSet( Clients ) * Устанавливаем порядок вывода записей MyRS.Index = ClientID Для открытия базы данных мы используем метод OpenDatabase объекта Work-space и привязываем к ней переменную MyDB с целью обеспечения дальнейших ссылок. Обеспечить доступ к записям таблицы Clients призван метод OpenRecordset. Требуемый логический порядок вывода записей мы устанавливаем с помощью свойства Index, которому присваиваем значение, соответствующее имени нужного индекса - ClientID.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |