Добавление новой таблицы к готовой базе

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
selelo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.12.2010 (Ср) 14:53

Добавление новой таблицы к готовой базе

Сообщение selelo » 22.12.2010 (Ср) 14:57

visual basic.
Имеется уже готовая база данных с другими таблицами. Необходимо
создать и добавить новую путём написания имени таблицы в textbox и последующим нажатием на cmd. Выдаёт ошибку "Operation is not supported for this type of object"
Помогите пожалуйста найти ошибку.

Код: Выделить всё
Dim db As DAO.Database
Dim f1, f2, f3, f4, f5, f6, f7, f8, f9, f10 As Field
Dim tbd As DAO.TableDef

Private Sub cmdAddData_Click()

Set db = DAO.OpenConnection("data.mdb", dbLangCyrillic)

Set tbd = db.CreateTableDef(Text1.Text)

Set f1 = tbd.CreateField("Number", dbInteger, 2)
Set f2 = tbd.CreateField("Question", dbText, 255)
Set f3 = tbd.CreateField("Answer1", dbText, 255)
Set f4 = tbd.CreateField("Answer2", dbText, 255)
Set f5 = tbd.CreateField("Answer3", dbText, 255)
Set f6 = tbd.CreateField("Answer4", dbText, 255)
Set f7 = tbd.CreateField("Ball1", dbInteger, 2)
Set f8 = tbd.CreateField("Ball2", dbInteger, 2)
Set f9 = tbd.CreateField("Ball3", dbInteger, 2)
Set f10 = tbd.CreateField("Ball4", dbInteger, 2)

tbd.Fields.Append f1
tbd.Fields.Append f2
tbd.Fields.Append f3
tbd.Fields.Append f4
tbd.Fields.Append f5
tbd.Fields.Append f6
tbd.Fields.Append f7
tbd.Fields.Append f8
tbd.Fields.Append f9
tbd.Fields.Append f10

db.TableDefs.Append tbd

db.Close
Set tbd = Nothing
Set db = Nothing
Set fld = Nothing

End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Добавление новой таблицы к готовой базе

Сообщение alibek » 22.12.2010 (Ср) 23:35

Какая СУБД?
На какой строке выдается ошибка?
Какие библиотеки подключены и в каком порядке (DAO и ADODB)?
Lasciate ogni speranza, voi ch'entrate.

selelo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.12.2010 (Ср) 14:53

Re: Добавление новой таблицы к готовой базе

Сообщение selelo » 22.12.2010 (Ср) 23:45

Так ... СУБД Access (*.mdb)
Ошибку выдаёт на строке "Set db = DAO.OpenConnection("data.mdb", dbLangCyrillic)"
Стоит галочка на DAО потом на ADO

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Добавление новой таблицы к готовой базе

Сообщение HandKot » 23.12.2010 (Чт) 8:42

похоже что не тот объект присваиваете
сделайте так
Код: Выделить всё
    Dim wrkJet As DAO.Workspace
    Dim dbJet As DAO.Database
    'location of the Northwind.mdb database to be used for Microsoft Jet connection
    strLocation = "D:\Program Files\Microsoft Office\Office\Samples\"
 
    'Open Microsoft Jet workspace
    Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
    'Open Microsoft Jet database
    Set dbJet = wrkJet.OpenDatabase(strLocation & "Northwind.mdb")
I Have Nine Lives You Have One Only
THINK!

selelo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.12.2010 (Ср) 14:53

Re: Добавление новой таблицы к готовой базе

Сообщение selelo » 23.12.2010 (Чт) 15:35

Спасибо!!!Всё получилось.

selelo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.12.2010 (Ср) 14:53

Re: Добавление новой таблицы к готовой базе

Сообщение selelo » 24.12.2010 (Пт) 16:10

А как удалить одну из таблиц?
Если есть в списке listbox находятся имена таблиц. Выбираем одну и нажимаем на кнопку удалить. Выдаёт ошибку 3211: "Таблица <name> не может быть заблокирована ядром базы данных. Она уже используется другим пользователем или процессом"

Код: Выделить всё
Dim db As dao.Database
Dim wrkJet As dao.Workspace

Private Sub cmdDelData_Click()
If Not List1.Text = "" Then
x = MsgBox("Удалить данный тест?", 1 + 32, "")
If x = 1 Then
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set db = wrkJet.OpenDatabase(strLocation & "data.mdb")
db.TableDefs.Delete (List1.Text) ' выдаёт ошибку в этой строке
db.Close
'Set tbd = Nothing
Set db = Nothing
Call MsgBox("Тест был успешно удалён", 0 + 64, "")
Else
Exit Sub
End If
Else
Call MsgBox("Выбирете тест для удаления", 0 + 16, "")
End If
End Sub




Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList