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

Создание и заполнение базы данных MS Access

11.03.2013, 17:59. Показов 7347. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пытаюсь разобраться с заполнением базы данных Access через VB. Есть ли в VB команды, чтобы создать новые коды и поля? Возможно OleDbCommand или каким-то другим способом? Не смог найти в интернете примера, только добавление данных в ранее созданные базы данных видел. И как сделать эту команду для последующего многократного вызова, как в примере:

Visual Basic
1
2
3
4
cmd = New OleDbCommand("Insert Into Table1([Name], Company) Values (@NameParam, @CompanyParam)", con)
 
cmd.Parameters.AddWithValue("@NameParam", XName)
cmd.Parameters.AddWithValue("@CompanyParam", XAddress)
Сам новичок в VB, надеюсь здесь на помощь ))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2013, 17:59
Ответы с готовыми решениями:

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу данных. Идея есть, при открытие программы...

Заполнение базы данных Access
Подскажите, как заполнить базу данных access рандомными значениями, с# Visual Studio. У меня есть количество элементов(n) и количество...

Создание базы данных на лету, создание и заполнение таблиц в базе DB (Paradox? или..).
Здравствуйте Профи! --- Видел я "простенькую" (exe-шник небольшого размера, запускается сразу, без предварительной установки)...

12
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.03.2013, 23:54
Цитата Сообщение от Otlip Посмотреть сообщение
Есть ли в VB команды, чтобы создать новые коды и поля?
Можно использовать технологию ADOX - http://hiprog.com/index.php?op... &Itemid=35
0
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 15
12.03.2013, 20:08  [ТС]
Спасибо, просит регистрацию на этом сайте для просмотра, а регистрации нигде не нашел, даже гуглом)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
12.03.2013, 20:23
Есть ли в VB команды, чтобы создать новые коды и поля
Есть, конечно! Есть очень много чего.
Но для начала нужно озвучить вопрос-задание!
Я недавно публиковал ответ на точно такой вопрос: как создать поле:
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
Private Sub Command4_Click()
 
'Создание поля и установка его свойств
On Error GoTo Err1
 
Static intFieldNumber As Integer
 
 
If intFieldNumber > 100 Then
                        MsgBox "Для данного примера количество полей" & _
                        vbCrLf & "составляет 100. Вы превысили допустимное значение." _
                        , vbExclamation, "Создание Баз Данных"
                        Exit Sub
End If
 
'Проверка на ввод имени поля
 
    If Text1.Text = Empty Then
            MsgBox "Введите имя поля.", vbExclamation, "Создание Баз Данных"
            Text1.SetFocus
            Exit Sub
            Else
            'Проверка на ввод размера поля
            If varTypeField = dbText Then
                If Combo1.Text = Empty Then
                    MsgBox "Введите размер поля.", vbExclamation, "Создание Баз Данных"
                    Exit Sub
                End If
            End If
    End If
intFieldNumber = intFieldNumber + 1
 
'Создаем поле
Set F(intFieldNumber) = NewTbl.CreateField()
'Устанавливаем свойства поля...
'...имя поля
F(intFieldNumber).Name = Text1.Text
'...тип поля
F(intFieldNumber).Type = varTypeField
'...размер поля
If varTypeField = dbText Then
F(intFieldNumber).Size = intSizeField
End If
'Устанавливаем атрибуты поля
If varAttrib <> Empty Then
    F(intFieldNumber).Attributes = varAttrib
End If
'Устанавливаем свойства полей
If bBack = True Then
    'Устанавливаем свойство AllowZeroLength
    If intOptIndex = 5 Or intOptIndex = 6 Then
       F(intFieldNumber).AllowZeroLength = bAllZ
    End If
    'Устанавливаем свойство Required
    F(intFieldNumber).Required = bReq
    'Устанавливаем свойство DefaultValue
    If strDefVal <> Empty Then
            F(intFieldNumber).DefaultValue = strDefVal
            
    End If
    'Устанавливаем свойство ValidationRule
    If srtValid1 <> Empty Then
            F(intFieldNumber).ValidationRule = "[" & strValid & "]" & srtValid1
    End If
    'Устанавливаем свойство ValidationText
    If strValidTxt <> Empty Then
            
            F(intFieldNumber).ValidationText = strValidTxt
    End If
End If
    
'Добавляем созданное поле к таблице
NewTbl.Fields.Append F(intFieldNumber)
If varTypeField = dbText Then
        MsgBox "Вы создали поле '" & Text1.Text & "' , типа '" _
        & strTypeField & "', размер поля - " & intSizeField & vbCrLf _
        & "Созданное поле добавлено к таблице '" _
        & varTblName & "'.", vbInformation, "Создание Баз Данных"
    Else
    MsgBox "Вы создали поле '" & Text1.Text & "' , типа '" _
    & strTypeField & "'" & vbCrLf _
    & "Созданное поле добавлено к таблице '" _
    & varTblName & "'.", vbInformation, "Создание Баз Данных"
End If
 
If intOptIndex = 5 Then
        Step4
    Else
    Text3.Text = Text1.Text
    EnableStep4
End If
Command5.Enabled = True
Text1.Text = Empty
Text1.SetFocus
Combo1.Text = Empty
Option1(0).Value = True
Command7.Enabled = True
Check1.Value = 0
Check2.Value = 0
Check2.Enabled = True
 
strDefVal = Empty
strValid = Empty
strValidTxt = Empty
srtValid1 = Empty
 
Exit Sub
 
Err1:
 
Select Case Err.Number
        Case 3259
        MsgBox "Неверно описано поле.", vbExclamation, "Создание Баз Данных"
        Exit Sub
End Select
 
End Sub
1
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.03.2013, 21:27
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Otlip Посмотреть сообщение
Спасибо, просит регистрацию на этом сайте для просмотра, а регистрации нигде не нашел, даже гуглом)
Кликните здесь для просмотра всего текста
ADOX в ACCESS
Автор osmor
17.11.2006 г.
Использование ADOX для работы с файлами MS ACCESS (MDB)

C приходом ADO на смену DAO, многие программисты ACCESS пришли в замешательство, а как без DAO создавать таблицы? как получить доступ у запросам?
Эта статья отвечает на эти вопросы.

Вся информация, изложенная в данной статье, найдена в MSDN.

Полное название ADOX — Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security.

Из названия видно, что эта библиотека является расширением ADO для Data Definition Language (DDL - языка определения данных), который позволяет получить доступ к объектам БД и безопасности.

Мы не будем останавливаться на общих вопросах использования ADOX, а сразу перейдем к тому, что нам дает использование ADOX непосредственно в ACCESS.

И так, ADOX позволяет получить информацию о таблицах их полях, индексах и ключах, сохраненных запросах, пользователях и группах, а так же создавать, изменять и удалять эти объекты БД ACCESS.
ADOX НЕ позволяет получить информацию о формах, отчетах, макросах, страницах доступа к данным и модулях БД ACCESS.

Объектная модель ADOX представляет собой следующую иерархию объектов и коллекций:



Подробную информацию о каждом объекте можно найти в MSDN:
(http://msdn.microsoft.com/libr... a54e20.asp)

Мы же сразу перейдем к практике.

Чтобы начать работу с ADOX нужно, прежде всего, получить объект Catalog, в MSA сделать это можно двумя способами:

1. Установить ссылку на библиотеку "Microsoft ADO Ext. 2.8 for DDL and Security" (так называемое раннее связывание), для этого:

при редактировании модуля нужно открыть меню "Tools-References"
найти в списке подключаемых библиотек "Microsoft ADO Ext. 2.8 for DDL and Security"
поставить "галку" напротив этой библиотеки
нажать кнопку "ОК "
Далее для получения объекта Catalog используем следующую конструкцию:
Visual Basic
1
2
Dim adoxCat As ADOX.Catalog
Set adoxCat = New ADOX.Catalog
или просто :
Visual Basic
1
Dim adoxCat As New ADOX.Catalog
(Все приведенные ниже примеры предполагают использование данного способа)

2. Создание объекта Catalog с использованием процедуры CreateObject. В этом случае, никаких предварительных действий, для использования ADOX, совершать не нужно. Просто в том месте процедуры, где нужно получить Catalog пишем:

Visual Basic
1
2
Dim adoxCat As Object
Set adoxCat = CreateObject("ADOX.Catalog")

Начало положено, теперь нужно объяснить созданному объекту, с какой именно базой мы собираемся работать. Для этой цели служит свойство ActiveConnection, ему нужно присвоить объект ADODB.Connection или строку подключения.
Например, для работы с объектами текущей БД можно написать:

Visual Basic
1
Set adoxCat.ActiveConnection = CurrentProject.Connection
(используем объект Connection)

или
Visual Basic
1
adoxCat.ActiveConnection = CurrentProject.Connection
(используем дефолтовое свойство объекта Connection)

или
Visual Basic
1
adoxCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName
(используем текстовую строку подключения)

Ну, вот собственно и все, самое сложное уже позади. Теперь используя свойства и методы полученного ADOX.Catalog, который подключен к нужной нам базе, будем работать с объектами БД ACCESS.
Далее приведен код для решения нескольких конкретных задач
(код проверки наличия запроса или таблицы, а так же обработчики ошибок умышленно не включены для упрощения кода, в реальных приложениях все это необходимо добавить):

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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
Option Compare Database
Option Explicit
 
--------------------------------------------------------------------------------
 
Public Sub ADOXListTables()
'список всех таблиц БД с указанием типа таблицы
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As ADOX.Table
Dim strType As String
Set adoxCat = New ADOX.Catalog
 
'получаем ссылку на текущую БД
adoxCat.ActiveConnection = CurrentProject.Connection
' проверяем свойство TYPE у всех объектов Table
   For Each adoxTbl In adoxCat.Tables
     Select Case adoxTbl.Type
      Case "LINK" ' связанная таблица JET
        strType = " - связанная таблица JET"
      Case "TABLE" ' обычная таблица
        strType = " - простая таблица"
      Case "ACCESS TABLE" 'системная таблица ACCESS
        strType = "- системная таблица MSA"
      Case "SYSTEM TABLE" 'системная таблица JET
        strType = " - системная таблица JET"
      Case "PASS-THROUGH" 'Связанная таблица ODBC
        strType = " - Связанная таблица ODBC"
      Case Else ' какая-то другая
        strType = " - какая-то другая таблица"
    End Select
      Debug.Print adoxTbl.Name; strType
   Next
Set adoxCat = Nothing
Set adoxTbl = Nothing
End Sub
 
--------------------------------------------------------------------------------
 
Public Sub ADOXCreateLinkTable(strFileName As String, _
                                strTblName As String, _
                                Optional strLinkTblName As String = "")
'создание связанной таблицы MS ACCESS
'strFileName - путь к БД ACCESS, в которой находится таблица
'strTblName - имя таблицы в исходной БД
'strLinkTblName - имя, под которым будет создана связанная таблица
'если strLinkTblName опущено, то создается таблица с именем strFileName
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As New ADOX.Table
Dim strType As String
Set adoxCat = New ADOX.Catalog
'получаем ссылку на текущую БД
adoxCat.ActiveConnection = CurrentProject.Connection
If strLinkTblName = "" Then strLinkTblName = strTblName
With adoxTbl
    .ParentCatalog = adoxCat
    .Name = strLinkTblName 'имя создаваемой таблицы
    'путь к файлу
    .Properties("Jet OLEDB:Link Datasource").Value = strFileName
    'имя таблицы в исходном файле
    .Properties("Jet OLEDB:Remote Table Name").Value = strTblName
    .Properties("Jet OLEDB:Create Link").Value = True
End With
adoxCat.Tables.Append adoxTbl 'добавляем таблицу в БД
Set adoxCat = Nothing
Set adoxTbl = Nothing
 
End Sub
 
--------------------------------------------------------------------------------
 
Public Sub ADOXRefreshLinks(strFileName As String)
'Обновление связей всех связанных таблиц MS ACCESS
'strFileName - путь к БД ACCESS, в которой находятся таблицы
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As ADOX.Table
 
Set adoxCat = New ADOX.Catalog
adoxCat.ActiveConnection = CurrentProject.Connection
 
For Each adoxTbl In adoxCat.Tables
' если таблица, связанная таблица JET
    If adoxTbl.Type = "LINK" Then
        adoxTbl.Properties("Jet OLEDB:Link Datasource") = strFileName
    End If
Next
Set adoxCat = Nothing
Set adoxTbl = Nothing
End Sub
 
--------------------------------------------------------------------------------
 
Public Sub ADOXCreateTable()
'создание новой таблицы tblOrders с тремя полями:
'idOrder - последовательный счетчик, ключевое поле таблицы
'NumOrder - текстовое, 12 символов, с условием на значение и сообщением об ошибке
'dtOrder - дата, значение по умолчанию равно Date()
'проверка на существование таблицы и обработчик ошибок умышленно не включены для упрощения кода
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As New ADOX.Table
Dim adoxCol As ADOX.Column
Set adoxCat = New ADOX.Catalog
'получаем ссылку на текущую БД
   adoxCat.ActiveConnection = CurrentProject.Connection
 
 With adoxTbl
    .Name = "tblOrders" 'имя таблицы
    ' создаем новый объект Column (он же поле таблицы)
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat 'ссылка на каталог
     .Name = "id" 'имя поля
     .Type = adInteger 'тип поля
     .Properties("AutoIncrement").Value = True ' будет счетчик
    End With
    .Columns.Append adoxCol, adInteger ' добавляем поле в коллекцию
    'добавляем новый индекс
    .Keys.Append "PrimaryKey", adKeyPrimary, "id"
 
    'аналогично для всех полей таблицы
    ' поле № заказа
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat
     .Name = "NumOrder"
     .Type = adVarWChar  'тип поля
     .DefinedSize = 12
     .Properties("Description").Value = "№ заказа"
     'условие на значение
     .Properties("Jet OLEDB:Column Validation Rule").Value = "<>'' and not is null"
     'сообщение о нарушении условия на значение
     .Properties("Jet OLEDB:Column Validation Text").Value = "Укажите номер заказа"
    End With
    .Columns.Append adoxCol, adVarWChar
 
    ' поле дата заказа
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat
     .Name = "dtOrder"
     .Type = adDate 'тип поля
     .Properties("Description").Value = "Дата заказа"
     .Properties("Default").Value = "date()" ' значение по умолчанию
    End With
    .Columns.Append adoxCol, adDate
 
 
  'добавляем таблицу в БД
   adoxCat.Tables.Append adoxTbl
 
 End With
   Set adoxCat = Nothing
   Set adoxTbl = Nothing
   Set adoxCol = Nothing
 
End Sub
 
--------------------------------------------------------------------------------
Public Sub ADOXListIndexTbl(strTblName As String)
'список индексов таблицы + некоторые свойства индекса +
'список полей индекса
'strTblName - имя таблицы в БД
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As ADOX.Table
Dim adoxInx As ADOX.Index
Dim adoxCol As ADOX.Column
Set adoxCat = New ADOX.Catalog
adoxCat.ActiveConnection = CurrentProject.Connection
 
Set adoxTbl = adoxCat.Tables(strTblName)
For Each adoxInx In adoxTbl.Indexes
    With adoxInx
        Debug.Print "_________________________________"
        Debug.Print "Индекс - "; .Name
        Debug.Print "Первичный - "; .PrimaryKey
        Debug.Print "Уникальный - "; .Unique
        Debug.Print "Поля индекса : ";
        For Each adoxCol In .Columns
           Debug.Print adoxCol.Name; "; ";
        Next
        Debug.Print
    End With
Next
 
End Sub
--------------------------------------------------------------------------------

Прежде чем рассмотреть код для работы с запросами небольшое замечание.
Access не разделяет запросы на View и Procedure, но ADOX разделяет. Теоретически простые Select запросы без параметров должны попадать в коллекцию Views, а все остальные запросы (в том числе и Select c параметрами) в коллекцию Procedures.
На практике, так происходит только с теми запросами, которые Вы создали "руками" в среде MS ACCESS в текущем файле.
ВСЕ запросы, которые Вы импортируете из других баз или создадите программно, попадут в коллекцию Procedures.
http://support.microsoft.com/d... -us;252888
Кроме того, есть проблемы при создании запросов в ACCESS 2000:
http://support.microsoft.com/d... -us;246213



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
Public Sub ADOXListQuerys()
'список запросов в базе
Dim adoxCat As ADOX.Catalog
Dim i As Integer
Set adoxCat = New ADOX.Catalog
'получаем ссылку на текущую БД
adoxCat.ActiveConnection = CurrentProject.Connection
With adoxCat
    Debug.Print "запросы в коллекции Views"
    If .Views.Count = 0 Then
        Debug.Print "Нет запросов в коллекции View"
    Else
       For i = 0 To .Views.Count - 1
          Debug.Print .Views(i).Name
        Next
      End If
    Debug.Print "Запросы в коллекции Procedures"
    If .Procedures.Count = 0 Then
        Debug.Print "Нет запросов в коллекции Procedures"
    Else
       For i = 0 To .Procedures.Count - 1
          Debug.Print .Procedures(i).Name
        Next
    End If
End With
End Sub
 
 
--------------------------------------------------------------------------------
 
Public Sub ADOXcreateQuery()
'создание нового запроса
Dim adoxCat As ADOX.Catalog
Dim qdf As ADODB.Command
Set adoxCat = New ADOX.Catalog
adoxCat.ActiveConnection = CurrentProject.Connection
'новый объект Command
Set qdf = New ADODB.Command
'текст запроса
qdf.CommandText = "select * from tblOrders"
'добавляем новый запрос в базу
adoxCat.Views.Append "Новый запрос", qdf
End Sub
Вот и все, как говорится, пишите письма.

1
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 15
13.03.2013, 10:33  [ТС]
Alex77755, спасибо, но не совсем понятно как объявлять NewTbl, varTypeField и т.д. Вопрос-задание следующее: приложение должно по алгоритму обработать текст из файла *.txt, создать файл базы данных, в ней создать таблицу с полями и по кодам записать в ячейки текст. С базами данных у меня произошла заминка.

mobile, я вставил код ADOXCreateTable(), и у меня пишет на тип AdInteger, adVarWChar, что не объявлен, может быть недоступен из-за своего уровня защиты. Что-то надо подключить дополнительно?

И еще, как я понимаю - код это строка, а поле - столбец. Знаете, как создать код? Или можно обойтись без него, записывая инфу в новые строки?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.03.2013, 12:23
Цитата Сообщение от Otlip Посмотреть сообщение
mobile, я вставил код ADOXCreateTable(), и у меня пишет на тип AdInteger, adVarWChar, что не объявлен, может быть недоступен из-за своего уровня защиты. Что-то надо подключить дополнительно?
А вы подключили библиотеку Microsoft ADO Ext. 2.8 for DDL and Security? Если пользуетесь поздним связыванием, то вместо переменных можно использовать их значение: AdInteger=3, adVarWChar=202

Цитата Сообщение от Otlip Посмотреть сообщение
И еще, как я понимаю - код это строка, а поле - столбец. Знаете, как создать код? Или можно обойтись без него, записывая инфу в новые строки?
Не совсем понял, но представляется, что вы говорите о пополнении БД данными. Если же вы говорите о создании поля типа счетчик (AutoIncrement), то его свойства надо описать до включения поля в коллекцию полей таблицы
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Set tbl = New ADOX.Table
'Создание фактической таблицы
With tbl
    .Name = "tbl_DateTask"
    Set Clmn = New ADOX.Column
    With Clmn
     .ParentCatalog = cat 'ссылка на каталог
     .Name = "IdDateTask" 'имя поля
     .Type = adInteger 'тип поля
     .Properties("AutoIncrement").Value = True ' будет счетчик
    End With
    .Columns.Append Clmn ' добавляем поле в коллекцию
 
    .Columns.Append "TaskDate", adDate
    .Columns.Append "Actuale", 11
    .Columns.Append "TaskDateComment", adWChar, 50 '130
End With
 
'Добавление в каталог таблицы
cat.Tables.Append tbl
' обновляю данные о таблицах
cat.Tables.Refresh
0
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 15
13.03.2013, 13:56  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
А вы подключили библиотеку Microsoft ADO Ext. 2.8 for DDL and Security? Если пользуетесь поздним связыванием, то вместо переменных можно использовать их значение: AdInteger=3, adVarWChar=202
Да, подключил. И 6.0 пробовал, все равно пишет, что не обьявлен.
Какой тип будет для строки? AdString в гугле не дало результатов)

Счетчик с автоинкрементом означает, что при записи в поле, следующий раз будет записываться на следующей строке?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
13.03.2013, 22:25
Вот пример. может что выберешь
0
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 15
14.03.2013, 11:16  [ТС]
Спасибо, в общем пока понятно.
Вот только тип ADO поля не могу объявить, библиотеку подключил, в свойствах проекта она показывается как подключенная наряду с другими. Допустим, на ADOX.Catalog и прочее перестал ругаться, а на типы до сих пор. Кто-нибудь знает в чем может быть проблема?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.03.2013, 16:08
Цитата Сообщение от Otlip Посмотреть сообщение
Вот только тип ADO поля не могу объявить, библиотеку подключил, в свойствах проекта она показывается как подключенная наряду с другими. Допустим, на ADOX.Catalog и прочее перестал ругаться, а на типы до сих пор. Кто-нибудь знает в чем может быть проблема?
MDB и ACCDB не поддерживают типы полей, такие как bigint, VarBinary или TimeStamp, а также некоторые другие.
Имена констант типов вы можете найти в DataTypeEnum в библиотеке DAO или ADO. В Access, присоединив библиотеку адо, открыть ObjectBrouser (по клавише F2) и посмотреть в ней список DataTypeEnum. Переходя по именам, внизу списка высвечиваются числовые значения элементов его элементов.
1
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 15
15.03.2013, 12:13  [ТС]
Спасибо, объявил. Еще жалуется на строчку

Visual Basic
1
adoxCat.ActiveConnection = CurrentProject.Connection
что не объявлен CurrentProject. В статье ничего не сказано об этом, как его объявить или заменить как-нибудь?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.03.2013, 12:34
Цитата Сообщение от Otlip Посмотреть сообщение
Еще жалуется на строчку
Visual Basic
1
adoxCat.ActiveConnection = CurrentProject.Connection
что не объявлен CurrentProject. В статье ничего не сказано об этом, как его объявить или заменить как-нибудь?
Видимо, вы делаете программу не в Access. И тогда, разумеется, ваша программа ничего не знает о CurrentProject. Вам надо создать соединение (Connections). Стринги соединения можно взять отсюда - http://connectionstrings.com/access
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2013, 12:34
Помогаю со студенческими работами здесь

Заполнение ComboBox из таблицы базы данных Access
Есть проект MFC-приложения, связанный с БД Access. Как вывести в ComboBox значения поля(столбца) таблицы БД Access?

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

Создание и заполнение базы данных на Paradox
Объясните пожалуйста как создать и заполнить базу данных на Delphi на Paradox.

Создание в Delphi базы данных. Заполнение сложных таблиц
Доброго времени суток,форумчане. Прошу вашего совета. Создаю базу данных Delphi + MySQL. Саму базу (база для больницы) создавала через...

Динамическое создание Label и заполнение текстом из базы данных
Здравствуйте, форумчане! Программирую на Qt недавно. Пишу приложение в виде теста(опросника). Не могу реализовать вывод на форму...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru