Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Програмное создание файла *.mdb в VB

1.5K
28 мая 2003 года
Zuko
55 / / 22.11.2002
Подскажите пожалуйста как програмно создать файл базы данных Access с таблицами и связями, и сохранить его. Спасибо!
258
28 мая 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Zuko
Подскажите пожалуйста как програмно создать файл базы данных Access с таблицами и связями, и сохранить его. Спасибо!



Я с одними связями разбирался целый день.. :) Так что сделать-то можно, тока процесс непростой, смортя какие таблицы, связи и т.д.

Кстати ты вообще где хочешь-то создавать свою базу, из какой программы-то?

1.5K
28 мая 2003 года
Zuko
55 / / 22.11.2002
Цитата:
Originally posted by SergeySV


Я с одними связями разбирался целый день.. :) Так что сделать-то можно, тока процесс непростой, смортя какие таблицы, связи и т.д.

Кстати ты вообще где хочешь-то создавать свою базу, из какой программы-то?



Есть оболочка написанная в VB из нее нужно создать програмно базу данных Access. По шаблону. Хоть приблизительно скажи как это сделать.

258
28 мая 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Zuko


Есть оболочка написанная в VB из нее нужно создать програмно базу данных Access. По шаблону. Хоть приблизительно скажи как это сделать.



В смысле, на VB6 будешь писать что-ли?

Саму базу не создавал, тока в Access таблицы, запросы, формы и связи, но там насколько я помню ничего сильно отличающегося от вышеперечисленного нет, так что ща посмотрим... вспомним...

1.5K
28 мая 2003 года
Zuko
55 / / 22.11.2002
Цитата:
Originally posted by SergeySV


В смысле, на VB6 будешь писать что-ли?

Саму базу не создавал, тока в Access таблицы, запросы, формы и связи, но там насколько я помню ничего сильно отличающегося от вышеперечисленного нет, так что ща посмотрим... вспомним...


Да писать буду в VB6. Посмотри пожалуйста как это делается!

258
29 мая 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Zuko

Да писать буду в VB6. Посмотри пожалуйста как это делается!



Проще всего с базой данных из VB общаться по технологии Microsoft DAO 3.60 Это прикольно, она предоставляет доступ к базе Access через модель объектов как например в VB6, VBA:
Workspace->Databases(Database)->TableDefs(TableDef) и т.д. Очень советую просто взять справку и полазить по этим объектам и внимательно почитать и посмотреть примеры и тебе все станет понятно, если ты хоть немного программировал на VB6. Суть та же, теже объекты, их методы, свойства, иерархия, ну вообщем полный доступ. Конечно в скорости обработки запросов DAO будет помедленее SQL, но это уже другой вопрос.
Для того чтобы работать с DAO из других программ необходимо подключить библиотеку Microsoft DAO 3.60 Object Library через Tools/References.
Вот сам пример создания базы для затравки, хотя все это можно (и даже лучше) уточнить по справке, которая даст более богатую информацию (нечего боятся, там все понятно :) )

Код:
' ==========================
    '  Создание базы данных .mdb
    ' ==========================
    Dim wrkDefault As Workspace
    Dim dbs As Database
    Dim sNameDB As String
   
    ' название файла для новой базы данных
    sNameDB = "NewDB.mdb"
    ' получаем Workspace по умолчанию
    Set wrkDefault = DBEngine.Workspaces(0)

    ' убеждаемся что файл с таким названием не существует, иначе
    ' удаляем его
    If Dir(sNameDB) <> "" Then Kill sNameDB
        ' создаем новую базу данных
        Set dbs = wrkDefault.CreateDatabase("NewDB.mdb", dbLangGeneral, dbVersion30)
    End If
   
   
    ' =================================
    '  Добавление таблицы в базу данных
    ' =================================
    Dim tdf As TableDef, fld, fld1 As Field
    Dim idx As Index, fldIndex As Field
    Dim rst As Recordset
    Dim NameTable As String
   
    ' имя для новой таблицы
    NameTable = "Табл1"
    ' А вот так можно получить доступ к уже открытой(текущей) базе данных: Set dbs = CurrentDb
    ' Создаем новую таблицу
    Set tdf = dbs.CreateTableDef(NameTable)
    ' Создаем поле Код, которое будет у нас ключевым
    Set fld1 = tdf.CreateField("Код", dbLong)
    fld1.Attributes = fld1.Attributes + dbAutoIncrField
    tdf.Fields.Append fld1
    ' Создаем primary key index.
    Set idx = tdf.CreateIndex("PrimaryKey")
    Set fldIndex = idx.CreateField("Код", dbLong)
    ' Добавляем индексированное поле
    idx.Fields.Append fldIndex
    ' Устанавливаем Primary property.
    idx.Primary = True
    ' Добавляем index.
    tdf.Indexes.Append idx
    ' Определяем и добавляем новые поля в таблицу
    With tdf
        .Fields.Append .CreateField("Сумма", dbText, 10)
        .Fields.Append .CreateField("Дата", dbDate, 10)
        .Fields.Append .CreateField("Пользователь", dbText, 3)
    End With
    ' обновляем коллекцию полей
    tdf.Fields.Refresh
    ' добавление таблицы в коллекцию таблиц базы данных
    dbs.TableDefs.Append tdf
    ' обновляем коллекцию таблиц
    dbs.TableDefs.Refresh
   
    '----------------------------------------
    '  Вторую таблицу аналогично можно создать
    '-----------------------------------------
   
    ' =================================
    '  Установка связей между таблицами
    ' =================================
    ' Например у нас две таблицы: Табл1 и Табл2
    ' в них уже должны быть соответствующие поля (Field), которые будут
    ' удовлетворять всем требованиям для создания связи: т.е. быть одного типа и т.д.
    ' Пусть в каждой из этих таблицах будет по одинаковому полю - "ПолеСвязь"
    Dim tdf1 As TableDefs, tdf2 As TableDefs
    ' связь между таблицами - это объект модели DAO под названием Relation
    Dim relNew As Relation
   
    ' открываем таблицы
    tdf1 = dbs.TableDefs!Табл1
    tdf2 = dbs.TableDefs!Табл2
       
    ' создаем объект связь
    Set relNew = dbs.CreateRelation("НашаСвязь", tdf1.name, tdf2.name, dbRelationUpdateCascade)
   
    ' Теперь в этот объект (связь) - relNew надо добавить указание о полях, через которые будут связаны наши таблицы
    ' Делается это так:
    '         1. Сначала создается поле(Field) под название "ПолеСвязь"
    '            и добавляется в коллекцию полей объекта Relation, т.е. relNew
    '         2. У этого добавленного поля в relNew становится доступным свойство - ForeignName,
    '            в котором надо указать поле другой таблицы для связи (в нашем случае поля наз. одинаково, так что можно не мучаться лишний раз)
    '         3. Вот и все.
    relNew.Fields.Append relNew.CreateField("ПолеСвязь")
    relNew.Fields!DeptID.ForeignName = "ПолеСвязь"
    ' обновляем коллекцию
    dbs.Relations.Append relNew
               
       
    ' особождаем память
    Set tdf = Nothing
    Set dbs = Nothing
258
29 мая 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by SergeySV

 
Код:
relNew.Fields!DeptID.ForeignName = "ПолеСвязь"



Исправить на: relNew.Fields!ПолеСвязь.ForeignName = "ПолеСвязь"

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог