Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Ребята, помогите Добавлено: 21.02.03 21:58  

Автор вопроса:  Вася

Помогите, пожалуйста, освоить программирование СУБД на V-Basic - на Ваших условиях, с оплатой. Я новичок, а самостоятельное обучение ну никак не движется. Возникают непонятные ошибки, при отладке непонятно как их устранять.

Вася.

 

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #1 Добавлено: 21.02.03 22:04

И как ты себе это представляешь? Я имею ввиду оплату? Для начала книгу хорошую купи, инфу почитай. Помочь поможем, но не все ведь сразу. Начнем сначала, как обычно. Какая база? как коннектишься? Первая ошибка? что именно неполучается?

МСДН читать пробовал?

Ответить

Номер ответа: 2
Автор ответа:
 Alex_



ICQ: 202830092 

Вопросов: 16
Ответов: 49
 Профиль | | #2 Добавлено: 21.02.03 22:15

За чем деньги?!!

Если че не получиться обращайся на форум - все как смогут так помогут!

Ответить

Номер ответа: 3
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #3 Добавлено: 21.02.03 22:22

Ну , я то о том как раз и говорил...

Только об одном прошу, для тебя же будет лучше. Не спрашивай сразу готовые решения. Их то тебе дадут, но сможешь ли ты их использовать позже? Сначала попробуй сделать сам, одним путем, другим, если не получится , задавай вопросы с описанием проблемы. Так и научишься, главное пытайся делать что то сам.

Ответить

Номер ответа: 4
Автор ответа:
 Вася



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 21.02.03 23:05

Большое спасибо всем за ответ !

К сожалению, МСДН у меня нет - почему-то
с комплектом VB-6.0 (на СД) он не
поставлялся, хотя версий VB много -
начиная с ДОСовских. Но может быть,
я что-то не догоняю. Подскажите, где его достать.

Ошибка, которая у меня возникает:
когда я объявляю переменные Fields,
на последней выдается ошибка -
несоответствие типа данных:

Dim F_об1, F_об2, F_об3, F_об4 As Field
Т.е. F_об4. Поэтому я вставил "Лишнюю" переменную
F_об5  последней. (см.текст программы ниже).

Подскажи, пожалуйста, что это за Бяка.
Вася.

______________________________________________

 

Private Sub Form_Load()

Dim dbFile As String

'Проверка наличия или создание базы данных

'Проверяет наличие файла, имеющего имя, которое

будет присвоено новой базе данных. Если есть такая

база, то новая база не создается, если нет то

вызывается функция и база создается.


If Dir(App.Path & "\Учет.Mdb") <> "" Then
  dbFile = App.Path & "\Учет.Mdb"
Else:
  dbFile = dbgreit()
End If

End Sub

Public Function dbgreit()
Dim NewWs As Workspace 'Описание БД и рабочей

области
Dim dbУчет As Database
Dim dbOpts As Long, dbName As String, tbОбъекты As

TableDef
Dim tbНасПункты As TableDef
Dim Rel1, Rel2 As Relation ' Описание таблицы и

отношения
Dim Ind1, Ind2, Ind3 As Index 'Описание индексов
Dim F_об1, F_об2, F_об3, F_об4, F_об5 As Field
Dim F_нп1, F_нп2, F_нп3 As Field
Dim F_зак1, F_зак2, F_зак3 As Field
Dim F_rel1, F_rel2, F_rel3 As Field
Dim Ind_об1, Ind_нп1, Ind_зак1 As Index

' Строковая переменная, указывающая на файл БД

находящийся по тому же пути, что и файл программы.
dbName = App.Path & "\Учет.Mdb"
Set NewWs = DBEngine.Workspaces(0) ' Создание

рабочей области
dbOpts = dbVersion35 + dnEncrypt ' Параметры БД -

версия Jet-машины 3,5 и кодирование.
Set dbУчет = NewWs.CreateDatabase(dbName,

dbLangCyrillic, dbOpts) ' Создание рускоязычной БД
' добавление таблицы с именем Объекты в БД
Set tbОбъекты = dbУчет.CreateTableDef("Объекты")
' добавление таблицы с именем НасПункты в БД
Set tbНасПункты =

dbУчет.CreateTableDef("НасПункты")
' добавление таблицы с именем Заказчики в БД
Set tbЗаказчики =

dbУчет.CreateTableDef("Заказчики")

' Создание и описание счетчика с именем

НомерОбъекта (табл. Объекты)
Set F_об1 = tbОбъекты.CreateField("НомерОбъекта",

dbLong) ' Создание поля в таблице с именем

НомерОбъекта
F_об1.Attributes = dbAutoIncrField ' Атрибуты поля

- автоинкремент
tbОбъекты.Fields.Append F_об1 ' Добавляем поле

F_об1 в таблицу
' Первичный ключ таблицы Объекты (индекс по полю

НомерОбъекта)
Set Ind_об1 = tbОбъекты.CreateIndex("НомерОбъекта")
Ind_об1.Primary = True ' Устанавливаем свойство

ключа - первичный ключ
tbОбъекты.Indexes.Append Ind_об1 ' Добавляем индекс

к таблице

' Создание и описание поля с именем

НаименованиеОбъекта (табл. Объекты)
Set F_об2 =

tbОбъекты.CreateField("НаименованиеОбъекта",

dbText, 50) ' Создание поля в таблице с именем

НаименованиеОбъекта
tbОбъекты.Fields.Append F_об2 ' Добавляем поле

F_об2 в таблицу

' Создание и описание поля с именем НомерНасПункта

(табл. Объекты)
Set F_об3 = tbОбъекты.CreateField("НомерНасПункта",

dbLong) ' Создание поля в таблице с именем

НомерНасПункта
tbОбъекты.Fields.Append F_об3 ' Добавляем поле

F_об3 в таблицу

' Создание и описание поля с именем НомерЗаказчика

(табл. Объекты)
Set F_об4 = tbОбъекты.CreateField("НомерЗаказчика",

dbLong) ' Создание поля в таблице с именем

НомерЗаказчика
tbОбъекты.Fields.Append F_об4 ' Добавляем поле

F_об4 в таблицу

' Создание и описание счетчика с именем

НомерНасПункта (табл. НасПункты)
Set F_нп1 =

tbНасПункты.CreateField("НомерНасПункта", dbLong) '

Создание поля в таблице с именем НомерНасПункта
F_нп1.Attributes = dbAutoIncrField ' Атрибуты поля

- автоинкремент
tbНасПункты.Fields.Append F_нп1 ' Добавляем поле

F_нп1 в таблицу
' Первичный ключ таблицы НасПункты (индекс по полю

НомерНасПункта)
Set Ind_нп1 =

tbНасПункты.CreateIndex("НомерНасПункта")
Ind_нп1.Primary = True ' Устанавливаем свойство

ключа - первичный ключ
tbНасПункты.Indexes.Append Ind_нп1 ' Добавляем

индекс к таблице

' Создание и описание поля с именем

НаименованиеНасПункта (табл. НасПункты)
Set F_нп2 =

tbНасПункты.CreateField("НаименованиеНасПункта",

dbText, 50) ' Создание поля в таблице с именем

НаименованиеНасПункта
tbНасПункты.Fields.Append F_нп2 ' Добавляем поле

F_нп2 в таблицу

' Создание и описание счетчика с именем

НомерЗаказчика (табл. Заказчики)
Set F_зак1 =

tbЗаказчики.CreateField("НомерЗаказчика", dbLong) '

Создание поля в таблице с именем НомерЗаказчика
F_зак1.Attributes = dbAutoIncrField ' Атрибуты поля

- автоинкремент
tbЗаказчики.Fields.Append F_зак1 ' Добавляем поле

F_зак1 в таблицу
' Первичный ключ таблицы Заказчики (индекс по полю

НомерЗаказчика)
Set Ind_зак1 =

tbЗаказчики.CreateIndex("НомерЗаказчика")
Ind_зак1.Primary = True ' Устанавливаем свойство

ключа - первичный ключ
tbЗаказчики.Indexes.Append Ind_зак1 ' Добавляем

индекс к таблице

' Создание и описание поля с именем

НаименованиеЗаказчика (табл. Заказчики)
Set F_зак2 =

tbЗаказчики.CreateField("НаимЗаказчика", dbText,

50) ' Создание поля в таблице с именем

НаименованиеЗаказчика
tbЗаказчики.Fields.Append F_зак2 ' Добавляем поле

F_зак2 в таблицу

' Добавление таблицы Объекты в БД
dbУчет.TableDefs.Append tbОбъекты

' Добавление таблицы НасПункты в БД
dbУчет.TableDefs.Append tbНасПункты

' Добавление таблицы Заказчики в БД
dbУчет.TableDefs.Append tbЗаказчики

' Создание объекта Relation (связь, отношение) с

именем ОбъектыНасПункты
Set Rel1 =

dbУчет.CreateRelation("ОбъектыНасПункты")
' Установка свойств отношения
Rel1.Table = "tbОбъекты" ' Первичная (мастер)

таблица отношения
Rel1.ForeignTable = "tbНасПункты" ' Подчиненная

таблица
' Создание поля отношения и установка свойств
Set F_rel1 = Rel1.CreateField("НомерНасПункта") '

Создание поля отношения с именем НомерНасПункта, в

первой таблице должно быть поле с таким же именем.
F_rel1.ForeignName = "НомерНасПункта" ' Поле

отношения во второй таблице Номер.
' Добавление поля к объекту "отношение" и сам

объект "отношение" к БДОтветить

Номер ответа: 5
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #5 Добавлено: 21.02.03 23:22

Ну во первых, чего так все мутно ? Зачем базу создавать из программы? Не можешь поставлять с пустой базой ? Если уж создаешь базу то правильнее было бы использовать скрипт для ее генерации, если уж хочешь то можно прямо из кода.

Далее, переменные у тебя обьявлены неверно.

Dim F_об1, F_об2, F_об3, F_об4, F_об5 As Field

Из них только последняя Field а остальные Variant !!!

Dim F_об1 As Field, F_об2 As Field, F_об3 As Field, F_об4 As Field, F_об5 As Field

Вот это будет правильно, то же самое и в остальных обьявлениях.

Так ошибка возникает на самом обьявлении? В программе я что то не заметил работы с этой переменной.

Ответить

Номер ответа: 6
Автор ответа:
 Alex3



ICQ: 9481061 

Вопросов: 18
Ответов: 132
 Профиль | | #6 Добавлено: 22.02.03 02:06

Вот так выглядит гораздо лучше по моему:-) Все сделано запросами. Правда для Jet не все можно реализовать запросами, например каскадное удаление и обновление (если кто знает, подскажите).

Private Sub Form_Load()

Dim NewWs As Workspace, dbУчет As Database

Dim dbName As String, strSQL As String

If Right(App.Path, 1) = "\" Then dbName = App.Path & "Учет.Mdb" Else dbName = App.Path & "\Учет.Mdb"

If Dir(dbName) = "" Then

Set NewWs = DBEngine.Workspaces(0)

Set dbУчет = NewWs.CreateDatabase(dbName, dbLangCyrillic, dbEncrypt)

'Создание таблицы Объекты

strSQL = "Create Table Объекты (НомерОбъекта COUNTER CONSTRAINT НомерОбъекта PRIMARY KEY," & _

" НаименованиеОбъекта TEXT(50), НомерНасПункта LONG, НомерЗаказчика LONG)"

dbУчет.Execute strSQL

'Создание таблицы НасПункты

strSQL = "Create Table НасПункты (НомерНасПункта COUNTER CONSTRAINT НомерНасПункта PRIMARY KEY," & _

" НаименованиеНасПункта TEXT(50))"

dbУчет.Execute strSQL

'Создание таблицы Заказчики

strSQL = "Create Table Заказчики (НомерЗаказчика COUNTER CONSTRAINT НомерЗаказчика PRIMARY KEY," & _

" НаимЗаказчика TEXT(50))"

dbУчет.Execute strSQL

'Создание связей

dbУчет.Execute "ALTER TABLE Объекты Add CONSTRAINT ОбъектыНасПункты FOREIGN KEY" & _

" (НомерНасПункта) REFERENCES НасПункты (НомерНасПункта)"

dbУчет.Execute "ALTER TABLE Объекты Add CONSTRAINT ОбъектыЗаказчики FOREIGN KEY" & _

" (НомерЗаказчика) REFERENCES Заказчики (НомерЗаказчика)"

End If

End Sub

Что касается справки. Visual Studio поставляется на 5-ти дисках. Два из них MSDN - т.е. справка, документация и т.д. Писать что-то на VB без нее просто невозможно ИМХО. Собственно сам VB, а также С++ с другими приблудами находится на первом диске, другие два тебе думаю не понадобятся.

Ответить

Номер ответа: 7
Автор ответа:
 Вася



Вопросов: 1
Ответов: 2
 Профиль | | #7 Добавлено: 23.02.03 10:53

Спасибо Алексу и Магнусу.

Создание БД и отношений получилось.

Подскажите, как создать экранную форму:

№           Наим.объекта     Наим. заказчика Наим. нас.пункта

Я попытался создать на форме объект ДАТА, но когда задавал

свойства RecordSource, то программа выдала ошибку "Unrecognized database format "Учет.mdb". В Access база и таблицы просматриваются нормально.

Заранее благодарю. Вася.

 

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам