Visual2000 · Архив статей Колесова & Павловой

Создание персональной адресной книги на VB 5.0

Андрей Колесов, Ольга Павлова

Загрузить программные приложения (7 Кб, CONTACTS.zip)

© 1998, Андрей Колесов, Ольга Павлова
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 07/98, c. 187-193.


На рынке имеется огромное число программ...

На рынке имеется огромное число программ, содержащих персональные информационные менеджеры (ПИМ). Однако на самом деле ПИМ - дело все же сугубо индивидуальное, и было бы наивно ожидать, что кто-нибудь создаст такой продукт, который бы удовлетворял запросам каждого пользователя. Именно поэтому в ряде случаев имеет смысл разработать собственный компактный персонифицированный ПИМ.

Сделать это довольно просто; кроме того, такая разработка является отличным предлогом для изучения некоторых концепций и функций для работы с базами данных, содержащимися в Visual Basic 5.0. В данном примере мы покажем, как создать персональную адресную книгу, которая хранит информацию, необходимую, чтобы отправить кому-либо письмо или позвонить по телефону (см. рис 1).

Рис. 1. Так выглядит пользовательский интерфейс менеджера контактов, который мы будем создавать

В начало статьи

Часть 1. Создание базы данных

В начало статьи

Разработка структуры базы данных

Шаг 1. Для начала определимся, какая информация нам необходима для каждого контакта. Традиционный список персональных данных выглядит так:

Фамилия (LastName)
Имя (FirstName)
Место работы (Company)
Адрес (Address)
Электронная почта (Email)
Домашний телефон (HomePhone)
Рабочий телефон (WorkPhone)

Эти данные будут храниться в таблице Contacts. Но на самом деле сегодня у каждого человека может быть гораздо больше личных телефонных номеров, например сотовые телефоны и пейджеры. Сколько же полей резервировать под номера? Четыре? А если появится пятый?

Для решения данной проблемы будем использовать реляционную базу данных, состоящую из двух таблиц. В Contacts будут храниться основные персональные данные, а в PhoneNumbers - отдельный общий список всех номеров телефонов (Number). Чтобы не запутаться в разных телефонах, каждый номер нужно сопроводить каким-то комментарием, например "местонахождение" (Location).

Шаг 2. Используя определенную связь между этими таблицами, номера из второй таблицы будут дополнять персональные данные из первой. Такая взаимосвязь обычно обеспечивается с помощью некоторого уникального идентификатора. Использовать в качестве такого ключа какое-то поле из списка персональных данных в общем случае нельзя - отдельные значения могут совпадать для разных людей. Поэтому добавим в таблицу Contacts специальное поле ContactID, которое будет содержать уникальный номер для каждой записи. Он будет формироваться для новых записей с помощью автоматического увеличения последнего номера (поэтому часто это поле называется AutoNumber или AutoIncrement). В качестве совета можно порекомендовать задавать такой уникальный ключ для каждой создаваемой вами таблицы.

Добавим поле ContactID в таблицу PhoneNumbers. Обратите внимание, что ContactID является внешним ключом для таблицы Contacts, а для PhoneNumbers - идентификатором. Кроме того, во вторую таблицу внесем и ее собственный ключ NumberID (он пригодится нам в дальнейшем). После проведенных модификаций мы получим схему, показанную на рис. 2.

Рис. 2.Окончательная схема менеджера контактов. Линия между двумя таблицами обозначает связь, основанную на содержимом индексированных полей

Созданная нами связь носит название "один с несколькими". Это означает, что одна запись в таблице Contacts связана с несколькими записями в таблице PhoneNumbers, в результате чего мы сможем получать данные о лице со всеми его телефонными номерами.

В начало статьи

Создание таблиц Contacts и PhoneNumbers

Теперь приступим к созданию реальной базы данных и таблиц. В данном примере мы будем использовать базу данных Access. Напомним, что один MDB-файл для Access может содержать несколько таблиц, запросы, формы, данные, а также код VBA. Как VBразработчиков нас сейчас будут интересовать только таблицы и запросы.

В VB имеются средства, предназначенные для работы с базами данных, отвечающими стандарту Open Database Connectivity (ODBC). С помощью средств Visual Data из Developer Studio можно получить доступ к базам данных Access в режиме "только для чтения". А с помощью Visual Data Manager (VisData) к ним можно получить доступ в режиме чтение/запись, включая возможность создания таблиц.

Шаг 3. Для запуска VisData в меню Add-Ins выберите команду Visual Data Manager. VisData представляет собой автономную утилиту, написанную на VB и загружаемую поверх интегрированной среды разработки. Для создания базы данных, в которую мы поместим наши таблицы, выберите в меню File команду New/Microsoft Access/Access 7.0. Назовем базу данных Contacts.mdb и сохраним ее. В среде VisData сразу появятся два окна - Database Window и SQL Statement (рис. 3).

Рис. 3. Среда утилиты Visual Data Manager (VisData), предназначенной для управления базами данных

Шаг 4. Щелкните правой кнопкой мыши Database Window и в появившемся окне выберите New Table, после чего появится окно для описания таблицы. Введите Contacts в качестве названия таблицы. Затем щелкните Add Field, и VisData выведет диалоговое окно для описания полей. В первую очередь мы определим уникальный ключ таблицы. Введем ContactID в качестве имени, установим тип равным Long и установим флажок AutoIncrField (рис.4).

Рис. 4. Определение полей таблицы при ее создании с помощью Visual Data Manager

Щелкнем кнопку OK, которая добавит поле, очистит диалоговое окно и подготовит его к вводу следующего поля. Далее задайте остальные поля таблицы в соответствии с табл. 1, а по завершении щелкните кнопку Close.

Таблица 1. Структура полей таблицы Contacts, в которой хранится основная информация о контактах

Имя поля

Тип

Размер

Назначение

ContactID

Long

4

Внейшний ключ

LastName

Text

50

Фамилия

FirstName

Text

50

Имя

Company

Text

50

Фирма

Address

Text

50

Адрес

Email

Text

30

Адрес электронной почты

Внимание! Задав параметры AllowZeroLength и Required, можно установить необходимость обязательного заполнения некоторых полей (это можно сделать, например, для полей имени лица).

И наконец, последний шаг. Щелкнем кнопку Build Table - VisData создаст таблицу, которую вы сможете увидеть в окне базы данных (Рис. 5).

Рис. 5.Структура таблицы Contacts

Шаг 5. Аналогичным образом создадим таблицу PhoneNumbers и опишем ее поля в соответствии с табл. 2 (флажок AutoIncrField нужно установить только для поля NumberID).

Таблица 2. Структура полей таблицы PhoneNumers, в которой хранятся номера телефонов

Имя поля

Тип

Размер

Назначение

NumberID

Long

4

Ключ

ContactID

Long

4

Идентификатор

Location

Text

20

Местонахождение

Number

Text

30

Номер телефона

Создадим для этой таблицы индекс. Для этого после ввода всех полей нажмите кнопку Add Index, в появившемся диалоговом окне создайте индекс (Index) с названием pkNumberID для поля NumberID и установите флажки Primary и Unique (рис. 6). Щелкнув кнопку Build Table, вы получите две таблицы, необходимые для менеджера контактов.

Рис. 6. Структура таблицы PhoneNumbers. Создание индекса для этой таблицы по полю NumberID

Теперь закройте окно VisData и вернитесь в среду VB.

И перейдите к изучению второй части статьи: "Создание приложения".

В начало статьи