'(0,0)-в нижнем левом углу Circle (5 + Dx * (1-1), 5 + Dy * (1-1)), 5
'окружность
I =• I + 1 'переход к следующей точке End Sub
После запуска приложения на форме последовательно рисуются окружности (рис. 4.6).
По такому же принципу можно строить более сложную анимацию (например, движение предметов на экране). В отличии от приведенной картинки движущейся окружности, при движе-чии предметов в каждый момент должно показываться только текущее положение предмета. В каждом конкретном случае это может достигаться комбинацией использования свойств FillColor, FillStyle и DrawMode. В частности, при значении свойства DrawMode, равном 6 (Invert), проведенная еще раз линия или другая фигура через те же координаты рисуется цветом инверсным к первой линии (если первая черная, то вторая белая т.е. при белом фоне экрана исходная линии исчезнет).
Подробно о значениях свойств и их действии при рисовании можно узнать из справочной системы Visual Basic.
Приведем пример программы, обеспечивающей показ движения парохода по бурному морю. Вид движущегося парохода показан на рис. 4.7.
Рис 4 6
В заключение следует отметить разницу в использовании графических элементов управления (Line, Shape), которые используются для улучшения внешнего вида экранных форм, и графических методов. С помощью графических методов графические объекты рисуются на этапе выполнения приложения, а графические элементы управления размещаются на этапе проектирования. Однако, если графические методы используются с
1елью улучшения внешнего вида форм, то они используют мень-пе системных ресурсов, поскольку приложение не хранит описание графических элементов управления. Вместе с тем, результат использования графических элементов управления виден уже на этапе проектирования. Глава 5. ИСПОЛЬЗОВАНИЕ БАЗ ДАННЫХ
5.1. МЕХАНИЗМЫ РАБОТЫ С БАЗАМИ ДАННЫХ В VISUAL BASIC
Параллельно с развитием ЭВМ и их широким внедрением во все сферы деятельности увеличивались объемы и усложнялась структура обрабатываемой информации. Для решения проблемы структуризации, хранения и обработки больших объемов информации разработаны системы управления базами данных (СУБД) (database management system — DBMS). Примерами таких систем для персональных компьютеров являются Microsoft Access, Microsoft FoxPro, Borland Paradox, Borland dBase. Универсальной и очень развитой системой для различных платформ является СУБД Oracle, для больших компьютеров широко используется СУБД DB2 фирмы IBM и др.
Visual Basic использует механизм баз данных Jet фирмы Microsoft для подключения баз данных и доступа к информации, хранящейся в них. Механизм Jet является тем же самым механизмом базы данных, что используется в системе Microsoft Access. Механизм Jet позволяет работать с данными, хранящимися в собственных базах данных Jet (файлы с расширением .MDB), а также с базами данных из других систем, таких как dBase, FoxPro, Paia-dox, BTtrieve, SQL-server.
Доступ к данным из Visual Basic выполняется посредством использования объекта управления данными и связанных с данными объектов управления или объектов доступа к данным. Механизм Jet, объект управления Data (Данные) и связанные объекты управления позволяют легко обрабатывать ввод и вывод элементов данных. Кроме того, имеется два дополнения: Data Manager (Управление данными) и Form Designer (Разработчик данных), которые упрощают построение баз данных и создание форм для доступа к данным.
Типы данных, поддерживаемые механизмом Jet, во многом совпадают с типам данных Visual Basic и приведены в табл. 5.1.
При работе с большими объемами информации необходимо, по возможности, гарантировать правильность (корректность) информации в базе данных (прикладная информация, организованная на основе используемой СУБД). Эта корректность может обеспечиваться написанным программным приложением, средствами СУБД или и тем и другим. Механизм Jet поддерживает два
типа целостности данных (целостность первичного ключа и ссылочную целостность отношений) и две формы правильности данных (правильность на уровне поля и правильность на уровне записи). Эти функции можно реализовать на этапе создания базы данных и они далее поддерживаются и используются при обращениях к базе данных.
Таблица 5.1
| Тип данного | Информация | Диапазон значении | 
| Text | Строки символов | 255 символов | 
| Memo | Длинные строки символов | До 1,2 Гбайт | 
| Byte | Целые | От 0 до 255 | 
| Integer | Целые | От -32768 до 327670 | 
| Long | Целые | От -2147483648 до 2147483647 | 
| Counter | Длинные целые с приращением | |
| Single | Вещественные | От-3,4*10-38 до 3.4* 10”38 | 
| Double | Вещественные | От -1,8*10”308 до 1.8*10”308 | 
| Yes/No | Логическая | |
| Date | Значение д>пъ1 | |
| Binary | Двоичные | До 1,2 Гбайт | 
| OLE | OLE — объекты | До 1.2 Гбайт | 
Кроме механизма Jet можно также использовать драйверы связи открытых баз данных (ODBC — Open Database Connectivity) для доступа к другим базам данных. Существуют также разнообразные механизмы баз данных других фирм, которые можно использовать с Visual Basic.
Система Visual Basic позволяет хранить и использовать информацию в реляционных системах управления базами данных (английская аббревиатура — RDBMS).
5.2. РЕЛЯЦИОННАЯ СТРУКТУРА ДАННЫХ
В подавляющем большинстве существующие СУБД построены на основе реляционной модели данных, которая, несмотря на свою внешнюю простоту, базируется на прочном фундаменте масштабных теоретических исследовании, основы которых были заложены Э. Коддом в 1969 г. Результаты этих теоретических исследований позволяют сделать данные полными непротиворечивыми и не избыточными, чтобы все факты оказав лись учтены, но при этом каждый из них хранился только один' раз. Специалисты в области создания и сопровождения баз данных должны знать и уметь использовать эту теорию.
Реляционная база данных это такая база данных, которая состоит из таблиц (и ничего иного, кроме таблиц). Ссылка из одной таблицы на другую через какое-нибудь общее поле (common field) называется отношением (relation) ( отсюда и название реляционная).
Рассмотрим пример реляционной базы данных состоящей из трех таблиц или отношений, таблица поставщиков, таблица деталей и таблица поставки деталей.
Таблица поставщиков
| Номер постав щика | Фамилия | Состояние | Город | 
| si | Смит | 20 | Лондон | 
| s2 | Джонс | 10 | Париж | 
| s3 | Блеик | 30 | Париж | 
| s4 | Кларк | 20 | Лондон | 
| s5 | Адаме | 30 | Атенс | 
Каждый поставщик имеет уникальный номер, фамилии могут повторяться. Каждый поставщик находится только в одном городе.
Таблица деталей
| Номер детали | Название | Цвет | Вес | Город | 
| Pi | Гайка | Красный | 12 | Лондон | 
| р2 | Болт | Зеленый | 17 | Париж | 
| РЗ | Винт | Голубой | 17 | Рим | 
| р4 | Винт | Красный | 14 | Лондон | 
| р5 | Кулачок | Голубой | 12 | Париж | 
| Р5 | Заклепка | Красный | 19 | Лондон | 
Каждый вид детали имеет уникальный номер. Город — место хранения детали. Предполагается, что каждый вид детали имеет только один цвет и хранится на складе только одного города.
Таблица поставки деталей
| Номер поставщика | Номер детали | Количесшо | 
| Si | Pi | 300 | 
| Si | Р2 | 200 | 
| si | РЭ | 400 | 
| sl | Р4 | 200 | 
| si | Р5 | 100 | 
| sl | р6 | 100 | 
| s2 | Р' | 300 | 
| s2 | Р2 | 400 | 
| s3 | Р2 | 200 | 
| s4 | Р2 | 200 | 
| s4 | Р4 | 300 | 
| s4 | Р5 | 400 | 
Таблица поставки деталей служит для связи между собой двух первых таблиц. Например, первая строка этой таблицы связывает поставщика “sl” из таблицы поставщиков с деталью “р1” из таблицы деталей (представляет поставку детали вида “р1” поставщиком с номером “sl” в количестве 300 деталей). Предполагается, что в каждый момент существует только одна поставка для заданного поставщика и заданной детали, т.е. комбинация Но-мер_поставщика, Номер_детали является уникальной для заданной поставки относительно множества поставок в данный момент.
Принципиальной особенностью таблиц является следующее:
Строка таблицы также называется записью. Элемент записи называется полем (наименьшая единица информации в базе данных)
Прикладная информация может по-разному задаваться таблицами (т.е количество таблиц и их содержание могут быть различными для одной и той же прикладной информации). Например, можно было бы вместо трех таблиц “Таблица поставщиков” “Таблица деталей” и “Таблица поставки деталей” сделать одну объединенную таблицу. В этом случае происходило бы дублирование информации (для каждой детали повторялась бы информация о поставщике). Если бы изменилась какая-либо информация по поставщику (например, состояние), то эту информацию необходимо бы было изменить во всех записях.