Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Изменение таблицы
В предыдущем разделе были перечислены некоторые поля и типы данных, увеличивающие полезность таблицы BookList. Ha всякий случай кратко перечислю эти поля и их типы. Изменение макета таблицы и добавление соответствующих полей выполняется так: 1. Если таблица BookList не была открыта в режиме конструктора, щелкните на ней правой кнопкой мыши и выберите из контекстного меню команду Design. 2. Нажмите кнопку Add Field, чтобы добавить в таблицу новое поле. В ячейке Name введите имя поля BOOK CODE. Перейдите к ячейке Type клавишей Tab, откройте список и выберите из него строку Long. Чтобы данное поле стало полем счетчика, установите флажки AutoIncrField и Required. Нажмите кнопку ОК. 3. Введите имя следующего поля, QUANTITY, и нажмите клавишу Tab. Данное поле должно быть числовым; выберите из списка Type строку Byte. Нажмите кнопку OK, чтобы приступить к созданию следующего поля. 4. Введите имя следующего поля, PRICE, и нажмите клавишу Tab. Перейдите к списку Type и введите в нем букву с — при этом из списка будет выбрана строка Currency. Нажмите кнопку OK, чтобы сохранить определение поля и приступить к созданию следующего. 5. Введите имя следующего поля, RARE BOOK?. Выберите для него логический тип (Boolean). Снова нажмите кнопку OK, чтобы перейти к следующему полю. 6. Следующее поле должно иметь имя NOTES. Выберите для него тип данных Memo и нажмите кнопку ОК. 7. Осталось ввести последнее поле. Введите имя ACQUIRED, выберите тип даты/времени (Date/Time) и сохраните кнопкой ОК. Закройте диалоговое окно Add Field кнопкой Close. 8. В диалоговом окне Table Structure нажмите кнопку Add Index, введите в поле Name текст BOOK CODE. Щелкните на строке BOOK CODE в списке Available Fields, чтобы включить его в список Indexed Fields.
Также обратите внимание на то, что флажки Primary и Unique установлены — это означает, что поле BOOK CODE назначено первичным ключом. В некоторых ситуациях такое использование счетчика оказывается нежелательным, и тогда (при отсутствии других подходящих полей) в качестве первичного ключа можно выбрать комбинацию нескольких полей базы. Например, в библиотечной базе данных первичным ключом нельзя выбрать ни дату выдачи книги, ни ее номер. В обоих случаях значение поля не является уникальным. В первом случае оно повторяется для всех читателей, получивших книги в этот день, а во втором — для всех читателей, бравших данную книгу в разные дни. Тем не менее сочетание этих двух полей дает уникальное значение (при условии, что ни одна книга не была выдана, возвращена и выдана снова в тот же день). Чтобы назначить в базе данных составной первичный ключ, щелкните на именах полей в списке, и они будут внесены в список Index Fields. Когда оба поля будут выделены, нажмите кнопку OK, чтобы назначить данный индекс первичным ключом базы. При просмотре свойств индекса в окне базы данных выясняется, что свойства UNIQUE, PRIMARY и REQUIRED имеют значение True. Теперь таблица индексируется по номеру книги (поле BOOK CODE), и каждое значение этого поля должно быть уникальным. Поскольку ядро Access автоматически увеличивает значение счетчика, можно быть уверенным в уникальности значения. В случае текстового поля вам пришлось бы проследить за тем, чтобы его значение не повторялось. Если этого не сделать, Access не позволит сохранить запись-дубликат до тех пор, пока значение уникального поля не будет изменено. 9. Теперь проиндексируем базу по другим полям. Введите TITLE в текстовом поле Name, после чего щелкните на строке TITLE в списке Available Fields. Снимите флажки Unique и Primary, это приводит к тому, что в данном поле будут разрешены повторяющиеся значения, — другими словами, вы сможете включить в базу книги с одинаковыми названиями. Сохраните индекс кнопкой ОК.
ПОДСКАЗКА Создание индекса, как и выбор первичного ключа, ускоряет многие операции в базах данных Access. Поле с уникальным индексом позволяет организовать некое подобие проверки вводимых значений — вам не удастся ввести повторяющуюся информацию. Уникальный индекс во многих отношениях похож на первичный ключ, за исключением того, что первичный ключ является главным индексом таблицы и может использоваться для установки связей с другими таблицами.
10. Повторите предыдущий этап и создайте индекс по полю LASTNAME. При этом соблюдайте осторожность и не превратите его в уникальный индекс. 11. Закончив создание индексов, закройте диалоговое окно кнопкой Close. 12. В списке Field List щелкните на строке QUANTITY, чтобы сделать это поле текущим. Введите 1 в ячейке DefaultValue — эта величина определяет количество книг, принимаемое по умолчанию. При вводе новой записи Access автоматически помещает в это поле значение по умолчанию. Это удобно для редких книг, которые обычно покупаются и продаются в единичном экземпляре. Если в магазине имеется несколько современных книг, вам придется вручную переопределить значение этого поля. Значения по умолчанию чрезвычайно полезны и могут использоваться для всех типов полей, кроме счетчиков и объектов OLE. 13. В списке Field List щелкните на строке PRICE, чтобы сделать это поле текущим. На этот раз мы зададим не значение по умолчанию, а правило проверки. Например, значение поля QUANTITY можно проверять, чтобы предотвратить случайный ввод отрицательной величины. С другой стороны, значения числового типа Byte не могут выходить за пределы интервала 0-255, так что проверка на самом деле оказывается излишней. 14. В ячейке ValidatationRule введите> 0 and < 1000. Хотя поле цены имеет денежный тип, оно может принимать и отрицательные значения. Установленное нами правило проверки не позволяет ввести отрицательную цену и одновременно предотвращает ввод цен, превышающих тысячу долларов (или фунтов, или другой денежной единицы, с которой вы работаете). Предполагается, что наш магазин не торгует книгами, цена которых превышает $1000. 15. Щелкните на ячейке ValidationText и введите в ней текст Допустимое значение цены - от 0 до 1000. Если вы попытаетесь ввести цену, выходящую за пределы указанного интервала, откроется диалоговое окно с предупреждением. Чтобы сообщение было более содержательным (и, возможно, подсказывало допустимое значение), следует ввести его текст в ячейке ValidationText. 16. Сохраните макет таблицы кнопкой Close. Работа с таблицей закончена. Попробуем создать проект Visual Basic, в котором используется новая база данных. Выполните в Visual Basic команду Add-Ins > Data Form Designer, чтобы мгновенно создать форму на основе таблицы или запроса. Существует и другой вариант — создайте на форме элемент данных и добавьте текстовые поля или другие элементы, связанные с ним. Среди наиболее важных свойств элемента данных — свойство DatabaseName, ссылающееся на базу данных Access (.MDB), и RecordSource, которое ссылается на таблицу или запрос в MDB-файле. Свойство DataSource определяет элемент данных, а свойство DataField — поля источника данных (таблицы или запроса), указанного в свойстве RecordSource элемента данных. В комбинированных полях или списках для получения информации от элемента данных используется свойство RowSource (в сочетании с ListField). Для пересылки информации обратно в базу через элемент данных применяется свойство DataSource (и DataField).
Технология ADO (ActiveX Data Objects) Объекты данных ActiveX, или ADO, — настоящая земля обетованная для программистов. Новая универсальная технология доступа к данным, разработанная фирмой Microsoft, включает функциональные возможности объектов DAO, RDO, а также практически любого другого метода доступа. ADO можно использовать для подключения к базам данных Access, SQL, Oracle, MS Exchange и другим источникам данных. В ADO используется OLEDB — новый механизм подключения к базам данных, обеспечивающий ускоренный и более гибкий доступ к различным источникам, для которых ADO обеспечивает единый, удобный интерфейс. На практике это означает, что написанное вами приложение может легко переходить от однопользовательских баз данных (например, Access) к комплексным системам «клиент -сервер», в которых используется Microsoft SQL Server, Oracle или любая другая система управления базами данных, имеющая либо драйвер OLEDB, либо ODBC (рис. 8.14). Как видно из рисунка 8.14, ADO подключается к любому источнику данных, у которого имеется драйвер OLEDB. Возможно, вы заметили, что ADO может подключаться к серверам Microsoft Exchange. Это действительно так, но, к сожалению, данная тема выходит за рамки книги. В пользу ADO говорит многое. Универсальный механизм доступа к данным -убедительный аргумент, однако существуют и другие. Например, набор записей можно отключить от базы, поработать с ним в автономном режиме и позднее вернуть в базу — такая возможность чрезвычайно полезна в системах «клиент — сервер». При отключении набора ADO сохраняет необходимые служебные данные: имя базы данных, сервер, на котором она находится, информацию об имени и пароле пользователя и прочие сведения, не рассматриваемые в этой книге. Поскольку отключенный набор записей ADO «помнит», откуда он появился, вы можете обновить данные в автономном режиме и позднее отправить их обратно в базу, заново установив подключение. При этом снижается загрузка сервера, которая считается одной из основных проблем приложений «клиент — сервер». Рис. 8.14. Моделъ ADO
Visual Basic содержит три средства для реализации ADO в ваших приложениях. Первое и самое простое — элемент данных ADO (ADO Data Control). Кроме того, существуют два компонента ActiveX: объект подключения ADO (ADO Connection Object) и объект набора записей ADO (ADO Recordset Object). Bce три элемента будут рассмотрены в следующих разделах.
|