Анимация
JavaScript
|
Главная Библионтека Set oAccountTd = oAutoDB.CreateTableDef("Account") 4. Для создания полей в таблице используйте метод CreateField объекта TableDef: Set oFVar = oTDVar.CreateField([cWame [, Type [, S/ze]]]) • oFVar - имя переменной для ссылки на объект Field. • oTDVar - имя переменной для ссылки на объект TableDef. • cName - имя создаваемого поля. Правила задания имени поля такие же, как для имен таблиц. • Type - тип создаваемого поля. В Visual Basic вы можете использовать следующие константы для указания типа поля: o dbDate - дата и время; o dbText - символьное; o dbMemo - поле примечаний; o dbBoolean - логическое (значения Yes/No); o dbInteger - целое число (2 байта); o dbLong - целое число двойной точности (4 байта); o dbCurrency - денежное выражение; o dbSingle - числовое; o dbDouble - числовое с плавающей точкой двойной точности; o dbByte - целое положительное число; o dbLongBinary - символьная строка для ссылки на OLE-объект. • Size - ширина создаваемого поля. Этот параметр необходимо указывать только для символьных полей (1 - 255). Проиллюстрируем использование этого метода на примере создания нескольких полей для таблицы Customer: Set oCustomerFlds(0) = oCustomerTd.CreateField("KEY CUSTOMER", dbLong) Установим для этого поля автоматическое приращение значения с помощью свойства Attributes объекта Field oCustomerFlds(0).Attributes = dbAutoIncrField Set oCustomerFlds(1) = oCustomerTd.CreateField("NAME CUSTOMER", dbText, 100) 5. Для создания индексов используйте метод CreateIndex объекта TableDef: Set olVar = oTDVar.CreateIndex([cWame]) • olVar - имя переменной для ссылки на объект Index. • oTDVar - имя переменной для ссылки на объект TableDef. • cName - имя индекса. Правила его задания такие же, как для имени таблицы. Необходимые характеристики для создаваемого индекса можно задать с помощью соответствующих свойств объекта Index (см. табл. 6.4). Для таблицы Customer создание первичного индекса может быть выполнено следующим образом: Set oCustomerIdx = oCustomerTd.CreateIndex("CUSTOMER ID") oCustomerIdx.Primary = True oCustomerIdx.Unique = True Теперь следует с помощью метода CreateField создать поле, для того чтобы указать, какое поле будет использовано в качестве ключевого, как это показано в следующем примере: Set oIndexFld(0) = oCustomerIdx.CreateField("KEY CUSTOMER") 6. Установите отношение между таблицами. Для этого используйте метод CreateRelation объекта Database: Set oRelVar = oDBVar.CreateRelation([cName [, cParentTable [,cChildTable [, Attributes]]]]) • oRelVar - имя переменной для ссылки на объект Relation. • oDBVar - имя переменной для ссылки на объект Database. • cName - имя создаваемого объекта. Правила его составления такие же, как для таблицы. • cParentTable - имя родительской таблицы в создаваемом отношении. • cChildTable - имя дочерней таблицы в создаваемом отношении. • Attributes - задает тип создаваемого отношения за счет использования следующих констант: o dbRelationUnique - отношение "один к одному". o dbRelationDontEnforce - в отношении не поддерживается целостная ссылочность. o dbRelationInherited - отношение существует не в текущей БД между двумя присоединенными таблицами. o dbRelationLeft - в родительской таблице могут оставаться записи, не имеющие соответствующих записей в дочерней таблице. o dbRelationRight - в дочерней таблице могут оставаться записи, не имеющие соответствующих записей в родительской таблице. o dbRelationUpdateCascade - в отношении будет поддерживаться каскадное обновление. o dbRelationDeleteCascade - в отношении будет поддерживаться каскадное удаление. После создания отношения необходимо создать поле для отношения в родительской таблице и указать соответствующее ему поле в дочерней таблице, как это показано в следующем примере: Создание связи между таблицами "Один ко многим" Set oAutoRel = oAutoDB.CreateRelation("CustToAcc", "Customer", "Account") Set oRelFld = oAutoRel.CreateField("KEY CUSTOMER") oRelFld.ForeignName = "KEY CUSTOMER" 7. Добавьте созданные поля и индексы в соответствующие таблицы, а таблицы и отношение -в БД с помощью метода Append. Обратите внимание, что после добавления объектов в соответствующие коллекции большинство их свойств не может быть изменено. Для изменения свойств в этом случае вам придется сначала удалить соответствующий объект с помощью метода Delete, а затем создать его заново с требуемыми значениями свойств и после этого добавить в коллекцию. Collection.Append oVar • Collection - имя коллекции, в которую добавляется объект; • oVar - имя переменной для ссылки на добавляемый объект. Для нашего примера фрагмент кода, обеспечивающий добавление объектов в коллекции, будет выглядеть следующим образом: Добавляем поля в таблицы oCustomerTd.Fields.Append oCustomerFlds(0) oCustomerTd.Fields.Append oCustomerFlds(1) Добавляем поля в индексы oCustomerIdx.Fields.Append oIndexFld(0) oAccountIdx(0).Fields.Append oIndexFld(1) oAccountIdx(1).Fields.Append oIndexFld(2) Добавляем поля в отношение oAutoRel.Fields.Append oRelFld Добавляем индексы в таблицы oCustomerTd.Indexes.Append oCustomerIdx oAccountTd.Indexes.Append oAccountIdx(0) oAccountTd.Indexes.Append oAccountIdx(1) Добавляем таблицы в БД oAutoDB.TableDefs.Append oCustomerTd oAutoDB.TableDefs.Append oAccountTd Добавляем отношение в БД oAutoDB.Relations.Append oAutoRel Для ясности в примере мы использовали различные переменные для каждого объекта доступа к данным. На практике обычно для сокращения объема кода используют одну и ту же переменную сначала для создания объекта, а после его добавления в коллекцию - для ссылки на следующий объект. После создания БД вы можете использовать объекты доступа к данным для программного изменения ее структуры. Модификация БД очень похожа на те действия, которые мы выполняли при ее создании. В большинстве случаев для добавления объектов достаточно использовать те же самые методы Create и Append. Вы также можете добавлять в БД новые таблицы, добавляя новые объекты TableDef или новые поля и индексы, добавляя новые объекты Field и Index в существующие таблицы. Если вам больше нравится SQL, используйте для модификации БД операторы этого языка. Давайте посмотрим на следующий простейший пример добавления таблицы в существующую БД с помощью объектов DAO: Dim oDB As Database Переменная для нового объекта TableDef Dim oNewTd As TableDef Dim oNewFld As Field Переменная для нового объекта Field Открываем БД Set oDB = DBEngine.Workspaces(0).OpenDatabase("AUTOSTORE.MDB") Set oNewTd = oDB.CreateTableDef("Новая таблица") Set oNewFld = oNewTd.CreateField("Новое поле", dbInteger) Добавляем новое поле в таблицу oNewTd.Fields.Append oNewFld oDB.TableDefs.Append oNewTd Добавляем таблицу в БД oDB.Close Закрываем БД Естественно, существующие в БД объекты могут быть удалены. Мы можем использовать метод Delete для удаления таблицы, добавленной в БД в предыдущем примере: oDB.TableDefs.Delete "Новая таблица" Следует иметь в виду, что при удалении индексного поля сначала следует удалить сам индекс и связанные с ним объекты Relation. Лишь после этого вы сможете удалить объекты Field или TableDef, являющиеся составными частями отношения. На прилагаемой к книге дискете помещен полный код программы для создания БД Auto Store в Visual Basic. 6.4. MS SQL Server Создать базу данных в MS SQL Server можно несколькими путями: визуально, находясь в Microsoft SQL Enterprise Manager, программно, посредством редактора Microsoft ISQL/w, программно посредством технологии SQL pass-through из клиентского приложения и путем наращивания (upsizing) локальной БД. В этом параграфе мы опишем создание базы данных как программным путем, так и с помощью процесса наращивания. Программный путь создания БД посредством одной из составных частей MS SQL Server -редактора Microsoft ISQL/w - реализуется простым набором команд, которые мы можем тут же запускать на выполнение. Редактор ISQL/w имеет несколько страниц, на первой из которых мы можем набирать необходимые команды, как это показано на рис. 6.18. Набранную команду можно тут же запустить на выполнение, нажав кнопку с треугольником в верхней правой части окна. На вкладке Results вы можете просмотреть результат выполнения команды, если она 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 [ 59 ] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |