Рефераты. Програмирование на Visual Basic p> . Dim A(8,3) As Double Dim A(6>To 8, О То 3) As Double Dim A(8, OTo 3}

As Double

Объявляется двухмерный массив (два индекса). Нижняя граница обоих индексов равна 0 (принимается по умолчанию). Верхняя граница первого индекса равна 8, второго — 3. Массив состоит из

36 элементов (9*4=36) одинакового типа (вещественный) и каждый элемент занимает 8 байтов.

Границы значений индексов: от —32768 до 32767.
Примеры:

Dim A(—4 То 10} As Integer

Dim B(—99 То —5, —3 То 0) As String
Элементы массива занимают связанную последовательную область в памяти машины. Массив А в примере занимает в памяти машины последовательность из
15 ячеек памяти, каждая из которых имеет длину 2 байта (тип Integer имеет длину 2 байта, рис. 3.2).
[pic]
Многомерные массивы также занимают линейную последовательную область памяти. При этом важное значение имеет способ упорядочения элементов многомерных массивов, который отличается для различных языков программирования.
В Visual Basic многомерные массивы упорядочиваются в памяти машины так, что быстрее всего меняется левый индекс. Например, двумерный массив (в прикладных математических программах матрицы представляются двумерным массивом) А (2,3), состоящий из 12 элементов, располагается в памяти машины следующим образом: А(0,0), А(1,0), А(2,0), А(0,1), А(1,1), А(2,1), А(0,2),
А(1,2), А(2,2), А(0,3), А(1,3), А(2,3) (если данный массив представляет матрицу, то в памяти машины она упорядочивается по столбцам).
Для рассмотренного пользовательского типа данных (записи) Student можно также объявить массив оператором Dim MasStudent (25) As Student
Объявляется одномерный массив MasStudent, состоящий из 26 элементов, каждый из которых является одной записью:
Type Student
Familia As String * 20 Name As String * 10 Voyast As Integer Birthdate As
Double Length As Integer Wegith As Integer End Type рассмотренной выше. Записи располагаются последовательно в памяти машины и занимают каждая 44 байта. 20 байт занимает Familia (один символ занимает 1 байт), 10 байт - Name, 2 байта -Voyast (целый тип занимает 2 байта), 8 байт
- Birthdate (вещественный двойной точности занимает 8 байт) и по 2 байта
-Length и Wegith (целый тип).
Элемент пользовательского типа данных (записи) может являться массивом.
Например, можно объявить массив записей для хранения результатов экзаменов студентов группы. Туре Rezultat
Familia As String * 20 NameExam (4) As String * /5 RewltExam (4) As Integer
End Type Dim Sesia(25) As Reyiltat
Объявлен пользовательский тип данных Rewltat, элементами которого являются
Familia фиксированной длины 20 символов (фамилия студента не может состоять более чем из 20 символов), массив NameExam (4) из пяти элементов (число экзаменов в сессии не более 5) для хранения названия экзаменов (название каждого экзамена не может состоять более чем из 15 символов), массив
RewltExam (4) из пяти элементов для хранения оценок по каждому экзамену
(целого типа). Длина записи Rewltat 105 байтов.
На базе пользовательского типа данных Requital объявлен массив Se Gridl.ColWidth(I)
Then
Gridl.ColWidth(I) = CellWidth).
Заполненная сетка показана на рисунке 5.12.

5.4. СОЗДАНИЕ БАЗ ДАННЫХ
Создание новой базы данных может быть выполнено программно или с помощью специальной встроенной подсистемы Data Manager, позволяющей в диалоговом режиме создавать и модифицировать базы данных механизма Jet. Подсистема
Data Manager запускается из раскрывающегося меню Add-Ins Главного меню
Visual Basic.
[pic]
Рис 5 12
Рассмотрим использование подсистемы Data Manager на примере создания базы данных по товарам на складе и их поставщикам. Таблицы База данных включает две таблицы (таблица товаров на складе, таблица поставщиков).
Таблица товаров на складе
|Номер|Номер |HilJBBUHe |Стоимость,|Количест|
|товар|поставщи|roB.tpJ |руб /hit |во на |
|а |ка | | |СКЛаДе |
|1 |2 |Магнитола |150000 |20 |
|2 |2 |Приемник |200000 |5 |
|3 |1 |Плеер |350000 |15 |
|4 |3 |Кофеварка |175000 |34 |
|5 |3 |Элсктрочаи|120000 |57 |
| | |ни к | | |
|6 |1 |CD — Плеер|750000 |8 |



Таблица поставщиков
|Номер |Название |Город |Адрес |Телефон|
|постав-|фирмы | | | |
|шика | | | | |
|1 |ЗАО |Тверь |ул. |12345 |
| |“Посредник| |Космонавт| |
| |” | |ов 12 | |
|2 |“Импульс” |Москва |Пр Мира, |2334455|
| | | |5 | |
|3 |“Старт” |Серпухов|ул |345678 |
| | | |Зеленая | |
| | | |11 | |


Таблица товаров на складе связана с таблицей поставщиков через поле “Номер поставщика” (внешний ключ для таблицы товаров).
После щелчка мыши по пункту Data Managei раскрывающегося меню Add-Ins
Главного меню появляется окно Data Manager, в меню “Файл” нужно выбрать пункт “New DataBase” (создание новой базы данных). Появляется окно для создания файла базы данных (рис. 5.13). По умолчанию задано расширение файла .mbd (файл базы данных Access).
[pic]
Рис 5 13
После задания имени файла появляется окно проектирования для задания таблиц, полей таблиц, отношений и индексов (рис. 5.14).
Кнопка “New” используется для создания новой таблицы, “Open” — открытие существующей таблицы для ввода данных, “Delete” — удаление таблицы,
“Design” — задание параметров полей таблицы, “Attach” — для подключения используемой СУБД (по умолчанию — СУБД Access). “Relations” — построение отношений между таблицами.
[pic]
Щелчок мыши по кнопке “New” открывает окно проектирования таблицы для ввода имен полей и задания их свойств (рис. 5.15).
Рис 5 14
[pic]
Рис 515
В поле Field Name вводятся имена полей таблицы и в раскрывающемся киже меню задается их тип (при задании типа полей “Номер товара” и “Номер поставщика” следует выбирать Long Integei, так как эти поля будут использоваться в качестве счетчика для первичного ключа). Стрелки “ > ” и “ < ” обеспечивают соответственно добавление введенных имен полей или их удаление. Кнопки “Up” и “Down” позволяют изменять последовательность полей таблицы. Аналогично может быть введена таблица поставщиков.
Когда таблицы созданы и выбрана одна из них, активизируются кнопки Design
(проекгирование таблиц). Open (открытие таблиц для ввода или редактирования информации). Delete (удаление таблиц) и Relations (отношения между таблицами). Проектирование таблиц должно предшествовать заданию отношений между таблицами и вводу данных
При щелчке по кнопке Design открывается окно редактирования (рис 5 16), содержащее список параметров полей и командные кнопки
[pic]
Рис 5 16
Для выбранного поля таблицы (на рисунке выбрано поле “номер поставщика”) при щелчке по кнопке “Edit” открывается окно редактирования параметров (рис
5 17). На рисунке для поля таблицы “Номер поставщика” задан параметр
“Counter” (Счетчик) Это поле является ключевым и должно иметь уникальные значения При задании параметра “Counter”, СУБД автоматически поддерживает уникальность этого поля, увеличивая значение счетчика при вводе новой записи Другие параметры имеют следующий смысл DefaultValue — значение по умолчанию, DataUpdatable — возможность изменения. Required — обязательность ввода, AllowZeioLenght — возможность задания строки нулевой длины,
ValidationText и ValidationRule — правила корректности, Fixed или Variable
Length — фиксированной или переменной длины.
[pic]
Рис 5 17
[pic]
Кнопка “Indexes..” позволяет перейти к созданию и редактированию индексов таблицы (рис 5 18) Для создания или добавления нового индекса нужно щелкнуть по кнопке “Add ” открывается окно для создания индекса (рис. 5.19).
Рис 5 18
В окне нужно задать имя индекса. Затем выбрать поля таблицы (“Fields in tdble”), которые включаются в индекс. Выбранные поля кнопками Add(ASC) или
Add(DEC) (в зависимости от того, упорядочиваются записи по возрастанию или убыванию) Добавляются в индексный список (“Fields in index”). Кнопка Remove позволяет удалить поле индекса Индикаторы в окне позволяют также определить индекс как первичный (Plimary Index) [pic] или внешний (Foieign Index), уникальный (Unique) или кластерный
(Clustered). Соответствующий требованиям индекс сохраняется кнопкой ОК и отображается в окне Indexes (рис. 5.18) Для удаления индекса используется кнопка Remove
Кнопка “Keys. .” окна Table Editor позволяет перейти к созданию ключей таблицы (рис. 5 20). В раскрывающемся списке полей таблицы выбирается поле
“Номер поставщика”, которое будет использоваться в качестве первичного ключа. Для таблицы “Товары” первичным ключом определим поле “Номер товара”.
[pic]
Кнопка “Relations...” окна Table Editor позволяет перейти к созданию отношений между таблицами. В окне Relations” (рис. 5.21) нужно выбрать из раскрывающегося списка первичную таблицу (Prymary Table) и связанную таблицу (Related Table) и установить связь между ними В рассматриваемом примере первичной таблицей является таблица поставщиков, поле “Номер поставщика” которой используется в качестве внешнего ключа для таблицы
“Товары”. Ключевое поле первичной таблицы (Номер поставщика) оюбражается на поле окна Поле для связи связанной таблицы выбирается в раскрывающемся списке (“Select Matching Fields). Связующие поля отображаются в окне.
[pic]
Вид отношения “один ко многим” (один поставщик может поставлять различные товары) задается переключателем “Many”. Переключатель “One” определяет отношение “один к одному”.
Флажок “Enfoice Refeiential Integrity” позволяет установить, нужно ли обеспечивать целостность отношении (средства СУБД автоматически проверяют целостность базы данных при модификации информации) Кнопка “Add” вводит заданное отношение в базу данных.
Таблицы и связи между ними созданы и отображаются в списке таблиц базы данных (рис. 5 22). При выборе таблицы становятся доступны кнопки “Open”,
“Design”, “Delete”, “Relations” Кнопка “Open” открывает выбранную таблицу для ввода или редактирования данных (рис. 5.23). Данные приведенных выше таблиц примера могут быть введены в базу данных.
[pic]
Рис. 5.22
[pic]
Рис. 5.23
К недостаткам подсистемы Data Manager можно отнести ограниченные возможности по заданию отношений между таблицами. Подсистема позволяет задать отношения только для ключевых полей “Counter” (Счетчик) и не позволяет задать составных ключей. Базы данных сложной структуры целесообразней создавать непосредственно в СУБВ Access, которая имеет развитые и очень удобные средства проектирования баз данных.
Приведенная база данных может быть создана и программно. Приводится текст программы для создания таблиц примера. задания ключей, индексов и отношений между таблицами.
Текст программы:

Global Const DB_LANG_GENERAL =
“;LANGID-Ox0809;CP=1252;COUNTRY=0’ Global Const DB_BOOLEAN = 1 Global Const
DB_BYTE = 2 Global Const DB_INTEGER = 3 Global Const DB_LONG = 4 Global
Const DB_CURRENCY = 5 Global Const DB_SINGLE = 6 Global Const DB_DOUBLE = 7
Global Const DB_DATE = 8 Global Const DB_TEXT = 10 Global Const
.DB_LONGBINARY =11 Global Const DB_MEMO = 12
Private Sub Form_Click()
CreateNewDB End Sub
Sub CreateNewDB ()
Dim Db As Database, Dbname As String Dbname = “C:VBPRIMER.MDB” If
Dir(Dbname) “” Then Kill Dbname Set Db = CreateDatabase(Dbname,
DB_LANG_GENERAL) NewProduktTabie Db NewProviderTable Db Relations Db
MsgBox “Ваша база данных , “ & UCase(Dbname) & “, создана” End Sub
Sub NewProduktTabie(D As Database)
Dim Td As New TableDef, Fld() As New Field Dim Idx() As New Index, I As
Integer ReDim Fld(l To 5), Idx(l To 2) Td.Name = “Товары” ' Имя таблицы.
‘ Создание полей таблицы. Fid(I).Attributes = DB_AUTOINCRFIELD For I = 1 To
5 ‘ Задание свойств полей таблицы.
Fld(I).Name = Choose(I, “Номер_товара”, “Номер_поставщика”,
“Название_товара”, “Стоимость”, “Количество”)
Fid(I).Type = Choose (I, DB_LONG, DB_LONG, DB_TEXT, DB_CURRENCY, DB
INTEGER) Fld(I).Size = Choose(I, 4, 4, 30, 4, 4) Td.Fields.Append
Fid(I) Next I ‘ Создание индексов. Idx(l).Name = “PrimaryKey” Idx (1) .
Fields = “Номера/товара” • Idx(l).Primary = True
Idx(1).Unique = True • Idx(2).Name = “Name” Idx(2).Fields =
“Название_товара” For I = 1 To 2
Td.Indexes.Append Idx(I) Next I
D.TableDefs.Append Td ‘ Создание таблицы. End Sub
Sub NewProviderTable(D As Database)
Dim Td As New TableDef, Fid() As New Field
Dim Idx() As New Index, I As Integer
ReDim Fld(l To 5), Idx(l To 2)
Td.Name = “Поставщики” ' Имя таблицы. ‘ Создание полей таблицы.
For I = 1 То 5 'Задание свойств полей таблицы.
Fld(I).Name = Choosefl, “Номер_поставшика”, “Название_фирмы”, “Город”,
“Адрес”, “Телефон”)
Fld(I).Type = Choose(I, DB_LONG, DB_TEXT, DB_TEXT, DB_TEXT, DB_TEXT)
Fld(I).Size = Choose(I, 4, 30, 15, 30, 10)
Next I
Fid(l).Attributes = DB_AUTOINCRFIELD
For I = 1 To 5
Td.Fields.Append Fld(I)
Next I ‘ Создание инде^ов.
Idx(l).Name == “PrimaryKey”
Idx(1).Fields = “Номер_поставщика”
Idx(1).Primary = True
Idx(1).Unique = True
Idx(2).Name = “Fi rmNarne”
Idx(2).Fields = “Название_фирмы”
For I = 1 To 2
Td.Indexes.Append Idx(I)
Next I
D.TableDefs.Append Td ‘ Создание таблицы. End Sub
Public Sub Relations (D As Database) Dim MyField As Field, MyRelation As
Relation
Set MyRelation = D.CreateRelation(“MyRelation”) MyRelation.Table =
“Поставщики” MyRelation.ForeignTable = “Товары” Set MyField =
MyRelation.CreateField(“Номер_поставщика”) MyField.ForeignName =
“Номер_поставщика” MyRelation.Fields.Append MyField D.Relations.Append
MyRelation End Sub
Константы в программе скопированы из входящего в состав Visual Basic файла
DATACONS.TXT. Обращение к процедуре CreateNewDB создания базы данных помещено в процедуру обработки события Form_Click, из которой производится обращение к процедуре NewProduktTable, создающей таблицу товаров на складе, к процедуре NewProviderTable, создающей таблицу поставщиков товаров и к процедуре Relations, создающей отношения между таблицами. Следует обратить внимание на удобство использования встроенной функции Choose для задания свойств полей таблиц.
5.5. ИСПОЛЬЗОВАНИЕ ЯЗЫКА SQL ДЛЯ
СОЗДАНИЯ И РАБОТЫ С БАЗАМИ ДАННБ1Х
Язык структурированных запросов (SQL) является стандартным средством для работы с базами данных и может использоваться как для интерактивной работы с базами данных, так и включаться в языки программирования. Применительно к
Visual Basic SQL позволяет:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.