Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Руководство программиста по Visual Basic для MS Office 97 >> DAO - Data Access Objects >> Использование DAO с Microsoft Jet >> Объект TableDef и набор TableDefs >> Программное создание таблицы

Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Программное создание таблицы


Для создания таблицы с применением DAO предназначен метод CreateTableDef объекта Database. После создания объекта TableDef, но перед его добавлением в базу данных Вы должны определить одно или несколько полей таблицы. В следующем примере в демонстрационной базе данных Northwind создается таблица, содержащая некоторые коды ошибок и строки, используемые или зарезервированные Visual Basic:

Function CreateErrorsTable() As Boolean
═══
══Dim dbs As Database, tdf As TableDef, fld As Field, idx As Index
═════Dim rst As Recordset, intCode As Integer, strErr As String
══
═══Const conAppObjErr = "Application-defined or object-defined error"

═════? создаем таблицу Errors с полями ErrorCode и ErrorString
═════Set dbs = CurrentDb
══
═══On Error Resume Next
═════? удаляем возможно существующую таблицу Errors
══
═══dbs.TableDefs. Delete "Errors"

═════On Error GoTo Error_CreateErrorsTable
═════? создаем таблицу
══
═══Set tdf = dbs.CreateTableDef("Errors")
═════? создаем поля
══
═══Set fld = tdf.CreateField("ErrorCode", dbinteger)
═════tdf. Fields.Append fld
══
═══Set fld = tdf.CreateField("ErrorString", dbMemo)
═════tdf. Fields.Append fld
══
═══dbs. TableDefs. Append tdf
═════? создаем индекс
══
═══Set idx = tdf.CreateIndex("ErrorCodeIndex")
═════Set fld = idx.CreateField("ErrorCode")
═════With idx
══
═══════.Primary = True
══════════.Unique = True
══════════.Required = True
═════End With
══
═══idx. Fields.Append fld
═════tdf. Indexes.Append idx

═════? создаем набор записей по таблице Errors
═════Set rst = dbs.OpenRecordset("Errors")
══
═══? устанавливаем индекс набора записей
═════rst. Index = "ErrorCodeIndex"

═════? меняем форму курсора на часы
══
═══DoCmd. Hourglass True

═════? перебираем коды ошибок
══
═══For intCode = 1 То 32767
══════════On Error Resume Next
══════════strErr = ""
═════════? пытаемся генерировать соответствующую ошибку
══════════Err, Raise intCode

══════════? Проверяем, относится ли она к ошибкам VBA, DAO или Access
══════════
? Если она не является ошибкой VBA, то свойство Description
═════════
═? объекта Err содержит строку "Application-defined or
═════════
═? object-defined error"
══════════If Err. Description <> conAppObjErr Then
═══════════════strErr = Err. Description

═══════════════? чтобы получить строку описания ошибки DAO или Access,
═══════════════применяем метод AccessError

═══════════════Elself AccessError(intCode) <> conAppObjErr Then
═══════════════strErr = AccessError(intCode)
══════════End If

══════════? если с номером ошибки сопоставлена строка описания,
══════════? добавляем ее в таблицу
══════════If Len(strErr) > 0 Then
═══════════════? добавляем новую запись в набор записей
═══════════════rst.AddMew
═══════════════' добавляем в таблицу номер ошибки
═══════════════rst!ErrorCode = intGode
═══════════════? добавляем в таблицу строку описания
═══════════════rst!ErrorString.AppendChunk strErr
═══════════════? обновляем запись
═══════════════rst. Update
══════════End If
══
═══Next intCode

═════DoCmd. Hourglass False

═════? закрываем набор записей
═════rst. Close
══
═══MsgBox "Errors table created"
═════? показываем новую таблицу в окне Database
══
═══RefreshDatabaseWindow
═════CreateErrorsTable = True

Exit_CreateErrorsTable:
═════Exit Function

Error_CreateErrorsTable:
═════MsgBox "Error " & Err & ": " & Err. Description
═════CreateErrorsTable = False
══
═══Resume Exit_CreateErrorsTable
End Function



[Назад]    [Содержание ]    [Вперед]

  



Текст пособия подготовлен на основе материалов книги
Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл.
c Оригинальное издание на английском языке,
Microsoft Corporation, 1997
c Русский перевод,
Microsoft Corporation, 1997

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017