'(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 деталей). Предполагается, что в каждый момент существует только одна поставка для заданного поставщика и заданной детали, т.е. комбинация Но-мер_поставщика, Номер_детали является уникальной для заданной поставки относительно множества поставок в данный момент.
Принципиальной особенностью таблиц является следующее:
Строка таблицы также называется записью. Элемент записи называется полем (наименьшая единица информации в базе данных)
Прикладная информация может по-разному задаваться таблицами (т.е количество таблиц и их содержание могут быть различными для одной и той же прикладной информации). Например, можно было бы вместо трех таблиц “Таблица поставщиков” “Таблица деталей” и “Таблица поставки деталей” сделать одну объединенную таблицу. В этом случае происходило бы дублирование информации (для каждой детали повторялась бы информация о поставщике). Если бы изменилась какая-либо информация по поставщику (например, состояние), то эту информацию необходимо бы было изменить во всех записях.