Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 8

Программное создание базы данных

01.06.2015, 18:54. Показов 1552. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуста. Что надо установить и куда надо вставить этот код чтобы создалась база данных?
Visual Basic
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
147
148
149
150
151
152
153
154
155
156
157
158
Private Sub Form_Load()
Dim dbFile As String
' Проверяет наличие файла, имеющего имя, которое будет присвоено новой базе данных. Если есть такая база, то новая база не создается, если нет то вызывается функция и база создается.
If Dir(App.Path & "\kadrs.Mdb") <> "" Then
dbFile = App.Path & "\kadrs.Mdb"
Else:
dbFile = dbgreit()
End If
End Sub
Public Function dbgreit()
Dim dbkadr As Database, NewWs As Workspace 'Описание БД и рабочей области
Dim dbOpts As Long, dbName As String, tbWorker As TableDef
Dim tbFam As TableDef, Rel1 As Relation ' Описание таблицы и отношения
Dim Ind1, Ind2, Ind3, Ind4, Ind5 As Index'Описание индексов
Dim Fin, Fr, Fin2, Fin3, Fr2, Fin4, Fr3, Fin5, Fr4 As Field
Dim Fin6, Fr5, Fin7, Fr6, Fin8, Fr7, Frel As Field
Dim Ind9 As Index, Fs1, Fs2 As Field
ReDim F(1 To 54) As Field ' Описание полей табл. Worker
ReDim P(1 To 10) As Field ' Описание полей табл. Family
' Строковая переменная, указывающая на файл БД находящийся по тому же пути, что и файл программы.
dbName = App.Path & "\kadrs.Mdb"
Set NewWs = DBEngine.Workspaces(0)' Создание рабочей области
dbOpts = dbVersion35 + dnEncrypt ' Параметры БД - версия Jet-машины 3,5 и кодирование.
Set dbkadr = NewWs.CreateDatabase(dbName, dbLangCyrillic, dbOpts) ' Создание рускоязычной БД 
' добавление таблицы с именем Worker в БД
Set tbWorker = dbkadr.CreateTableDef("Worker")
' добавление таблицы с именем Family в БД
Set tbFam = dbkadr.CreateTableDef("Family")
' Создание и описание счетчика с именем Код (табл. Worker)
Set Fin = tbWorker.CreateField("Код", dbLong) ' Создание поля в таблице с именем Код
Set Frel = tbWorker.CreateField("Number", dbLong) ' Создаем в таблице поле связи
Fin.Attributes = dbAutoIncrField ' Атрибуты поля - автоинкремент
tbWorker.Fields.Append Fin ' Добавляем поля в таблицу
tbWorker.Fields.Append Frel
' Первичный ключ таблицы Worker (индекс по полю Number)
Set Ind1 = tbWorker.CreateIndex("Number")
Ind1.Primary = True ' Устанавливаем свойство ключа - первичный ключ
Set Frel = Ind1.CreateField("Number", dbLong) ' Создаем индексное поле аналогичное полю связи из таблицы
Ind1.Fields.Append Frel ' Добавляем его к индексу
tbWorker.Indexes.Append Ind1 ' Добавляем индекс к таблице
 
' Описание остальных полей (табл. Worker)
Set F(1) = tbWorker.CreateField("Фамилия", dbText, 50) ' Создание текстового поля размером 50 символов
Set F(2) = tbWorker.CreateField("Имя", dbText, 50)
Set F(3) = tbWorker.CreateField("Отчество", dbText, 50)
Set F(4) = tbWorker.CreateField("Дата рождения", dbDate) ' Создание поля даты
Set F(5) = tbWorker.CreateField("Национальность", dbText, 50)
Set F(6) = tbWorker.CreateField("Должность", dbText, 150)
Set F(7) = tbWorker.CreateField("СемПоложение", dbText, 20)
Set F(8) = tbWorker.CreateField("Телефон", dbText, 15)
Set F(9) = tbWorker.CreateField("ДатаЗап", dbDate)
Set F(10) = tbWorker.CreateField("Образование", dbText, 90)
Set F(11) = tbWorker.CreateField("Телефон2", dbText, 15)
Set F(12) = tbWorker.CreateField("Профессия", dbText, 200)
Set F(13) = tbWorker.CreateField("Серия", dbText, 10)
Set F(14) = tbWorker.CreateField("Номер", dbText, 10)
Set F(15) = tbWorker.CreateField("Кем выдан", dbText, 200)
Set F(16) = tbWorker.CreateField("ДатаВыдачи", dbDate)
Set F(17) = tbWorker.CreateField("Место рождения", dbText, 250)
Set F(18) = tbWorker.CreateField("Индекс", dbText, 10)
Set F(19) = tbWorker.CreateField("Улица", dbText, 100)
Set F(20) = tbWorker.CreateField("Город", dbText, 100)
Set F(21) = tbWorker.CreateField("Область", dbText, 100)
Set F(22) = tbWorker.CreateField("Район", dbText, 100)
Set F(23) = tbWorker.CreateField("УчЗав", dbText, 200)
Set F(24) = tbWorker.CreateField("ДатаОк1", dbDate)
Set F(25) = tbWorker.CreateField("УчЗав2", dbText, 200)
Set F(26) = tbWorker.CreateField("ДатаОк2", dbDate)
Set F(27) = tbWorker.CreateField("СпецПоД", dbText, 200)
Set F(28) = tbWorker.CreateField("Квалификация", dbText, 200)
Set F(29) = tbWorker.CreateField("НомД", dbText, 50)
Set F(30) = tbWorker.CreateField("УчЗван", dbText, 200)
Set F(31) = tbWorker.CreateField("ОКОДТ", dbText, 10)
Set F(32) = tbWorker.CreateField("ОКСО", dbText, 10)
Set F(33) = tbWorker.CreateField("ГрУч", dbText, 30)
Set F(34) = tbWorker.CreateField("КатУч", dbText, 30)
Set F(35) = tbWorker.CreateField("Состав", dbText, 150)
Set F(36) = tbWorker.CreateField("Звание", dbText, 200)
Set F(37) = tbWorker.CreateField("ВУС", dbText, 50)
Set F(38) = tbWorker.CreateField("Годность", dbText, 100)
Set F(39) = tbWorker.CreateField("Военкомат", dbText, 200)
Set F(40) = tbWorker.CreateField("СпецУч", dbText, 50)
Set F(41) = tbWorker.CreateField("НомСтрах", dbText, 40)
Set F(42) = tbWorker.CreateField("Date1", dbDate)
Set F(43) = tbWorker.CreateField("Date2", dbDate)
Set F(44) = tbWorker.CreateField("Date3", dbDate)
Set F(45) = tbWorker.CreateField("Date4", dbDate)
Set F(46) = tbWorker.CreateField("Date5", dbDate)
Set F(47) = tbWorker.CreateField("Date6", dbDate)
Set F(48) = tbWorker.CreateField("Date7", dbDate)
Set F(49) = tbWorker.CreateField("Date8", dbDate)
Set F(50) = tbWorker.CreateField("Date9", dbDate)
Set F(51) = tbWorker.CreateField("Date10", dbDate)
Set F(52) = tbWorker.CreateField("Причина", dbText, 200)
Set F(53) = tbWorker.CreateField("Date11", dbDate)
Set F(54) = tbWorker.CreateField("Стат", dbText, 200)
 
' Создание индекса для сортировки по фамилиям и именам (по алфавиту)
Set Ind9 = tbWorker.CreateIndex("Name") ' Создание индекса с именем Name
Ind9.Unique = False ' Индекс не уникальный - значения могут повторяться
Set Fs1 = Ind9.CreateField("Фамилия")
Set Fs2 = Ind9.CreateField("Имя")
Ind9.Fields.Append Fs1
Ind9.Fields.Append Fs2
tbWorker.Indexes.Append Ind9
 
' Создание и описание счетчика с именем Код (табл. Family) аналогично таблице Worker
Set Fin2 = tbFam.CreateField("Код", dbLong)
Fin2.Attributes = dbAutoIncrField
tbFam.Fields.Append Fin2
 
' Первичный ключ таблицы Family
Set Ind2 = tbFam.CreateIndex("Код")
Ind2.Primary = True
Set Fin2 = Ind2.CreateField("Код", dbLong)
Ind2.Fields.Append Fin2
tbFam.Indexes.Append Ind2
 
' Описание остальных полей (табл. Family)
Set P(1) = tbFam.CreateField("Номер", dbLong)
Set P(2) = tbFam.CreateField("Кто", dbText, 20)
Set P(3) = tbFam.CreateField("Фамилия", dbText, 50)
Set P(4) = tbFam.CreateField("Имя", dbText, 50)
Set P(5) = tbFam.CreateField("Отчество", dbText, 50)
Set P(6) = tbFam.CreateField("Год рождения", dbText)
 
' Добавление полей в таблиу Worker
For i = 1 To 54
tbWorker.Fields.Append F(i)
Next i
 
' Добавление полей в таблиу Family
For i = 1 To 6
tbFam.Fields.Append P(i)
Next i
 
' Добавление таблицы Worker в БД
dbkadr.TableDefs.Append tbWorker
 
' Добавление таблицы Family в БД
dbkadr.TableDefs.Append tbFam
 
' Создание объекта Relation (связь, отношение) с именем first
Set Rel1 = dbkadr.CreateRelation("first")
' Установка свойств отношения
Rel1.Table = "Worker" ' Первичная (мастер) таблица отношения
Rel1.ForeignTable = "Family" ' Подчиненная таблица
Rel1.Attributes = dbRelationDeleteCascade ' Разрешить каскадное удаление данных из второй таблицы, когда удаляются связанные данные из первой
' Создание поля отношения и установка свойств
Set Fr = Rel1.CreateField("Number") ' Создание поля отношения с именем Number, в первой таблице должно быть поле с таким же именем.
Fr.ForeignName = "Номер" ' Поле отношения во второй таблице Номер. 
' Добавление поля к объекту "отношение" и сам объект "отношение" к БД
Rel1.Fields.Append Fr
dbkadr.Relations.Append Rel1
' Закрытие БД
dbkadr.Close
MsgBox "Поздравляем! Вы впервые запустили программу. На Вашем диске была создана БД. Нажмите кнопку Выход, затем запустите программу снова и приступайте к работе."
End Function
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2015, 18:54
Ответы с готовыми решениями:

Программное создание базы Access с созданием отдельного .MDW
Есть проблемка. Пытаюсь создать базу new.mdb, что бы паралельно создавался new.mdw по указанным мною путям... База создается , авот файл...

Создание и заполнение базы данных MS Access
Здравствуйте, пытаюсь разобраться с заполнением базы данных Access через VB. Есть ли в VB команды, чтобы создать новые коды и поля?...

создание базы данных с программным модулем
вот тут задание я никак нипойму как сделать, может вы знаете? - Для данного программного модуля создать базу данных в СУБД Microsoft...

4
 Аватар для zink0000
258 / 107 / 26
Регистрация: 15.03.2012
Сообщений: 353
Записей в блоге: 35
05.06.2015, 12:14
Где-то у меня валялся рабочий код для создания базы данных с двумя таблицами:
MDB0001.zip
Надеюсь разберётесь по аналогии.
0
 Аватар для zink0000
258 / 107 / 26
Регистрация: 15.03.2012
Сообщений: 353
Записей в блоге: 35
05.06.2015, 12:32
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Ловите:
MDB0002.zip
Исправил одну ошибку, одну неточность,
и ещё... у меня Jet-3.5 не поддерживается...
(пришлось 3.0 в настройках поставить)
так что под свой компилятор - исправите.
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
06.06.2015, 07:54
zink0000, Думаешь ему это надо, ему надо быстро сдать и чтобы это шло ко всем чертям, он не будет учить, думать и разбирать.
0
 Аватар для zink0000
258 / 107 / 26
Регистрация: 15.03.2012
Сообщений: 353
Записей в блоге: 35
10.06.2015, 08:49
UBUNTU, да, возможно, Вы и правы...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2015, 08:49
Помогаю со студенческими работами здесь

Создание базы данных на основе текстового файла.
Привет всем! Короче так. Что мне нужно, это база данных на основе текстового файла. Нашел как это сотворить, сотворил, все вроде пашет....

Создание базы данных без использования объектов и подходов БД
Здравствуйте. Необходимо создать базу данных не используя объекты и подходы бд. В Delphi нужно использовать тип данных запись. А в...

Программное сжатие базы MS Access 97
Народ, подскажите, плиз, кто знает что-нибудь по данное теме... Очень нужно... Или ссылочку киньте, где хоть намёки на это есть... Заранее...

Программное создание элементов
если надо создать картинку Picture1 то мы нажимаем на соответствующий элемент на панели инструментов и растягиваем на форме а можно...

Программное создание архива.
Добрый день! Можноли программно сделать архив, например, ZIP или rar, не важно и добавить в него файлы? Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru