Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991

Код VBA для линковки (установлении связи) по двум или более драйверам ODBC

21.04.2017, 12:03. Показов 6063. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, дорого времени суток!
Есть код VBA, который производит линковку Аксесс 2003 с таблицами SQL (в данном случае MySQL). Используется драйвер ODBC для 32 разрядной ОС.

Есть компьютеры и с 64 разрядной ОС, для них ДРУГОЙ драйвер ODBC.
Прошу помочь составить код VBA, который мог бы связывать с таблицами использую драйвер или для 32 или для 64 разрядной ОС в зависимости от разрядности ОС конкретной машины..
Исходный кусочек кода прилагаю
Кликните здесь для просмотра всего текста
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
Public Sub LinkTablesMySQL_ADOX()
'Создание общей строки подключения и подлинковка таблиц MySQL
'--------------------------------------------------------------------------
Dim sDriver As String
Dim sServerAdr As String
Dim sCharset As String
Dim sServPort As String
Dim sDbName As String
Dim sUser As String
Dim sPassWord As String
Dim sConnect As String
Dim l&
'--------------------------------------------------------------------------
On Error GoTo LinkTablesMySQL_ADOX_Err
'Внимание - проверь версию драйвера! - Может уже... 5.5 или даже 6.2!?
    'sDriver = "{MySQL ODBC 5.2 ANSI Driver}"    'ANSI Driver
    sDriver = "{MySQL ODBC 3.51 Driver}"  'UNICODE Driver
    
    'sServerAdr = "localhost"
    sServerAdr = "111.111.1.111"   ' Адрес (Имя) сервера
    sServPort = "3306"         ' Порт соединения = 3306 (Обычно так и есть)
    sDbName = "base" ' Название базы
    sUser = "sistema"             ' Имя пользователя
    sPassWord = "999999"    ' Пароль
 
 
'Создаю строку подключения:
 sConnect = "ODBC;DRIVER=" & sDriver & _
        ";SERVER=" & sServerAdr & _
        ";Port=" & sServPort & _
        ";DATABASE=" & sDbName & _
        ";USER=" & sUser & _
        ";PASSWORD=" & sPassWord & _
        ";OPTION=3" & _
        ";stmt=set names cp1251"
        'Debug.Print sConnect
 
'--------------------------------------------------------------------
'Подключаем несколько таблиц по ADOX
        
l = LinkTable_ADOX("Afigenno", sConnect)
    If l > 0 Then Err.Raise l


Добавлено через 29 минут
Драйвер ODBC для 64 разрядной ОС для простоты назовем "Драйвер_64_ОС"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2017, 12:03
Ответы с готовыми решениями:

Код html или php для формы обратной связи
форма обратной связи!! подскажите плиз код html или php для формы обратной связи в моём случае форма для заявки в интернет...

Как соединиться из VBA с Interbase через ADO или ODBC?
Подскажите плз как соединиться из VBA с Interbase через ADO или ODBC. Может еще варианты есть?

Сложение в столбце по двум или более условиям
Есть три столбца с цифрами, допустим А, C, E, нужно сложить все цифры столбца А, но только при условии, что в аналогичных ячейках столбцов...

60
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
26.06.2017, 13:50  [ТС]
Студворк — интернет-сервис помощи студентам
Eugene-LS,
Цитата Сообщение от Eugene-LS Посмотреть сообщение
зачем вы линкуете MySQL таблички?
глубоко продуманного ответа на Ваш вопрос у меня нет. Я только ищу различные (любую) возможности работы с сервером MySQL. Нашел Ваш код- решил его использовать. Других способов не нашел, да и сам их не знаю.
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
26.06.2017, 13:56
Цитата Сообщение от ankan Посмотреть сообщение
А если в списке таблиц массива arrTables01 произойдут какие -то изменения
Массив можно объявить как публичный - вот и всё решение = изменили в одном месте а работает везде.

Добавлено через 3 минуты
Цитата Сообщение от ankan Посмотреть сообщение
Я только ищу различные (любую) возможности работы с сервером MySQL
Ну тогда пока продолжайте так, как начали - ADO это следующая ступень, жизнь заставит - перейдёте, и придётся многое (очень много) переписать.
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
26.06.2017, 14:25  [ТС]
Eugene-LS, Спасибо,
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Массив можно объявить как публичный
- а как это сделать?
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
26.06.2017, 15:38
Цитата Сообщение от ankan Посмотреть сообщение
- а как это сделать?
Ух! - Какой лихой вопрос, и сразу всё понятно.
То есть, тот код что мы тут вам писали, - для вас полная "белиберда", и прочитать и понять его, вы его пока не умеете.
Так:
Visual Basic
1
Public arrTables01() As Variant
Вы это - не кипишуйте, для достойного написания VBA кода вполне достаточно выучить всего 300 -350 правил и функцый, + SQL - 50-70 понятий для начала хватит, + MySql примерно то же кол-во.
А остальное в процессе.
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
26.06.2017, 18:19  [ТС]
mobile, метод проб и ошибок успехом не увенчался.
Знаний у меня, как справедливо заметил,Eugene-LS, не достаточно.

Посему прошу как можно подробнее сформулировать решение:
1. Какой код записывается в модуль проекта (если вообще записывается)
2. какой код записывается в модуль открываемой формы
3. Какой код записывается на событие открываемой формы "Open" (при этом должна произойти линковка одного из массивов)?

Прошу сформулировать комплексное решение, пусть даже оно будет не самое оптимальное. Я слепил несколько вариантов- все они не сработали.
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
27.06.2017, 07:57
Цитата Сообщение от ankan Посмотреть сообщение
метод проб и ошибок успехом не увенчался
Надо бы посмотреть что там у вас не так.

У вас там пароли ...
На форуме выкладывать, по понятным причинам, не стоит.
Кидайте вашу задачку мне на "мыло" или mobile, по согласию.
Найду для вас пару часиков.
За пароли не беспокойтесь - понятие : "проф. этика" для меня не пустой звук.
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
24.07.2017, 15:12  [ТС]
Eugene-LS, протестировал скорость линковки 120 таблиц, результаты:
Связь интерфейса аксесс с таблицами аксесс 6 секунд
Связь интерфейса аксесс с таблицами MySQL 50 секунд ( использовал Ваш код- Public Sub LinkTablesMySQL_ADOX())
Разница в скорость создания связей очень большая.
Можно ли как-либо ускорить ?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.07.2017, 15:26
Предположу, что в цикле подключается множество таблиц и для каждой вновь создается соединение. А это самая длительная операция. Если так, то надо в начале, до цикла, создать один раз переменную соединения и пользоваться ей для всех таблиц цикла.
2
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
24.07.2017, 15:28
Цитата Сообщение от ankan Посмотреть сообщение
Можно ли как-либо ускорить ?
Уважаемый mobile, совершенно прав.
Для ускорения следует работать через единое соединение для всех таблиц, не создавая новое для каждой.
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
24.07.2017, 15:34  [ТС]
mobile, Eugene-LS, во вложении модуль линковки ( созданный Eugene-LS), прошу помочь его модернизировать.
Вложения
Тип файла: zip Generaciia_Oblactei_Linkovki.zip (26.3 Кб, 12 просмотров)
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
24.07.2017, 15:57
Цитата Сообщение от ankan Посмотреть сообщение
Связь интерфейса аксесс с таблицами MySQL 50 секунд ( использовал Ваш код- Public Sub LinkTablesMySQL_ADOX())
Не думаю что можно добиться большого выигрыша в скорости подключения, т.к. Access таблички у вас под рукой и на огромной скорости, а MySQL таблички далеко, через Драйвер и скорость доступа к ним на порядки меньше.
Надо будет, на досуге, поэкспериментировать конечно, но пока мысли такие.
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
24.07.2017, 16:01  [ТС]
Eugene-LS,
Цитата Сообщение от Eugene-LS Посмотреть сообщение
т.к. Access таблички у вас под рукой
- таблицы аксесс находятся на сервере другой производственной площадке, а таблицы MySQL находятся на сервере этой же площадки.
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
24.07.2017, 17:17
Цитата Сообщение от ankan Посмотреть сообщение
таблицы аксесс находятся на сервере другой производственной площадке, а таблицы MySQL находятся на сервере этой же площадки.
Ясно.
Вот что-то сочинилось на эту тему:

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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
Option Compare Database
Option Explicit
 
'--------------------------------------------------------------------------
' Module    : modLink_MySQL_ADOX
' Author    : es
' Date      : 24.07.2017
' Purpose   : Переподключение таблиц MySQL без DSN
'--------------------------------------------------------------------------
' - Требует установки MySQL ODBC ODBC MySQL драйвера
'--------------------------------------------------------------------------
'Требуются ссылки на:
'    Microsoft ADO Ext. for DDL and Security. (Version 2.1 or higher)
'    Microsoft ActiveX Data Objects Library. (Version 2.1 or higher)
'--------------------------------------------------------------------------
 
 
Public ConnStr$
Private cat As ADOX.Catalog
Private tbl As ADOX.Table
Private AConnectionString_ADOX As String
Private i%, s$
 
Public Sub StartReLink_MySQL_ADOX(Optional bDelOnly As Boolean)
'Собственно процедура подключения (основная)
 
Dim arrTables() As Variant
 
'--------------------------------------------------------------------------
On Error GoTo StartReLink_MySQL_ADOX_Err
    DoCmd.Hourglass True 'Показать часики
 
 
'Массив табличек:
    arrTables = Array("Amper", "Baza", "Baza_Pitatel", "Cat_Empl", "Chet", "Chet_Kompl", "Cklad", _
        "Cklad_Dvig_Izd", "Cod_Empl", "Cotrydnik", "Cpecifikaciy", "Cpecifikaciy_Pza1", _
        "Cpocob_Per_Zak", "Cpr_Dorabotok", "Ctr_Izd_Modyl", "Ctr_Izd_Ocnov", "Ctrana", _
        "Ctryktyra_Izdely", "Cvoictva_Znach", "Cvoictvo_Detali", "Dolznoct", "Dop_Zamena", _
        "Edinicy_Izmereny", "Forma_Cobctv", "Funk_Claim", "Funk_Otvetctv_Za_Vip", _
        "Funk_Pol_Inform", "Funk_Procecc", "Funk_Structure", "Funk_View", "Funk_Ychactv_V_Vip", _
        "Gorod", "Grup_Empl", "Gryp_Clozn_Rem", "Icpolnenie", "Identifikator_Izd", _
        "Invent_Cklad", "Izdelie", "Izdelie_Komplekty", "Izdelie_Modifikaciy", "Izdelie_TO", _
        "Izdely_Gryp", "Izv_Cogl", "Izv_Cogl_Jyrnal_Cob", "Izv_Ctatyc", "Izv_Formylirovki", _
        "Izv_Izdelie", "Izv_Jyrnal_Cob", "Izv_Koment", "Izv_Koment_Jyrnal_Cob", "Izv_Modul", _
        "Izv_Vid_Cogl", "Izveshenie", "Level_Competence", "Mecto_Xraneniy", "Modifikaciy", _
        "Modyl", "Name_Funk", "Name_Group", "NameFunk", "Necootvetctv", "Oboryd_TO", _
        "Oborydovanie", "Ogr_Cpicok", "ooDecim_Nomer", "ooGryppa_Izd", "ooKlacc_Izd", _
        "ooPodgryppa_Izd", "ooPodklacc_Izd", "ooPor_Regictr_Nomer", "ooVid_Izd", "Operaciy_Cklad", _
        "Operaciy_Oboryd", "Operaciy_Texnol", "Operaciy_Vipol", "Opicanie_Cvoictv", "Org_Ctrykt", _
        "Organizat_Role", "Otdel", "Pitatel", "Pitatel_Partia", "Plata_Defekt", "Poctavchik", _
        "Porycheniy", "Prichina_Vozvr_Iz_OTK", "Privyzka_Coctava", "Process", "Process_A", "Progr", _
        "Proizvod", "R_RA", "Rabota_Robotov", "Requ_For_Specialty", "Site", "Sites_1", "Texprocecc", _
        "Tip_Dokym", "Tip_Operaciy", "To_I_R", "To_I_R_Prichina", "To_Izd", "To_Izd_Cpicok_Rab", _
        "To_Obor_Cpicok_Rab", "Verciy_PO", "Verciy_Po_Aktualn", "Vid_Rabot", "Vid_Rabot_To", _
        "Vizm_Neicpr_Napominal", "Volt", "Vozvrat_Iz_Otk", "Vxod_Kontrol", "Zakaz", "Zakazchik", _
        "Zip", "Zip_Cklad", "Zip_Cklad_Racxod", "Zip_Dvigenie", "Zip_Imia", "Zip_Mex_Cbor", _
        "Zip_Partiy", "Zip_Partiy_Brem_Nakleika", "Zip_Poctavshik", "Zip_Vid", "Zip_Ynikaln", "Izdelie_Verciy_PO")
 
'--------------------------------------------------------------------------
'Предварительный промсмотр (если нужно):
    Debug.Print String(74, "-")
    For i = LBound(arrTables) To UBound(arrTables)
        s = arrTables(i)
        Debug.Print Format(i + 1, "000"); ".  " & s
    Next i
    Debug.Print String(74, "-")
    Debug.Print "Всего: " & Format(i, "00") & " таблиц " & Now
    Debug.Print String(74, "-")
'--------------------------------------------------------------------------
    'GoTo StartReLink_MySQL_ADOX_Bye
    
'Запуск
    ReLinkTables_ADOX arrTables, "00_", bDelOnly    ' Полное переподключение
 
StartReLink_MySQL_ADOX_Bye:
    DoCmd.Hourglass False 'Вернуть нормальный курсор
    Exit Sub
 
StartReLink_MySQL_ADOX_Err:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure: StartReLink_MySQL_ADOX in module: modLink_MySQL_ADOX", _
    vbCritical, "Error in Application!": Err.Clear
    Resume StartReLink_MySQL_ADOX_Bye
        
End Sub
 
Private Sub ReLinkTables_ADOX(arrTables() As Variant, Optional sTblLocalPrefix$ = "", Optional bDelOnly As Boolean)
' Вспомогательная -  Переподключение таблиц по массиву
'--------------------------------------------------------------------------
'Аргументы:
'   arrTables()      = Массив табличек
'   sTblLocalPrefix  = Локальный префикс названий
'   bDelONly         = Только удалить и не подключать если = True (-1)
'--------------------------------------------------------------------------
Dim sTblName$
Dim sDriver As String
Dim sServerAdr As String
Dim sCharset As String
Dim sServPort As String
Dim sDbName As String
Dim sUser As String
Dim sPassWord As String
Dim l&
 
On Error GoTo ReLinkTables_ADOX_Err
 
    
    If Dir("C:\Program Files\MySQL\Connector ODBC 3.51", vbDirectory) <> "" Then
        sDriver = "{MySQL ODBC 3.51 Driver}" 'Папка Connector ODBC 3.51 существует. Драйвер для 32 разрядной операционной системы(для устаревших компьютеров- где дополниетльные программы (требующиеся для работы этого драйвера) плохо или не ставятся вовобще)
    ElseIf Dir("C:\Program Files\MySQL\Connector ODBC 5.3", vbDirectory) <> "" Then
        sDriver = "{MySQL ODBC 5.3 Unicode Driver}" 'Драйвер для 32 или драйвер для 64 разрядного MS Office - в зависимости , что установлено. Имя папки одинаковое.
    Else
        MsgBox "Нет драйвера ODBC для работы с  MySQL"
        Exit Sub
    End If
 
    'sServerAdr = "localhost"
    sServerAdr = "111.111.1.111"   ' Адрес (Имя) сервера
    sServPort = "3306"         ' Порт соединения = 3306 (Обычно так и есть)
    sDbName = "111" ' Название базы
    sUser = "mmmmmm"             ' Имя пользователя
    sPassWord = "11111111"    ' Пароль
 
s = ""
'Создаю строку подключения:
 ConnStr = "MSDASQL;DRIVER=" & sDriver & _
        ";SERVER=" & sServerAdr & _
        ";Port=" & sServPort & _
        ";DATABASE=" & sDbName & _
        ";USER=" & sUser & _
        ";PASSWORD=" & sPassWord & _
        ";OPTION=3" & _
        ";stmt=set names cp1251"
        Debug.Print ConnStr
        Debug.Print String(74, "-")
    
    
'Строим строку подключения ... - добавляем "ODBC;" в начало уже готовой (см выше)
    AConnectionString_ADOX = "ODBC;" & ConnStr
 
'Катплог
    Set cat = New ADOX.Catalog
    'Открываем каталог текущей базы
    Set cat.ActiveConnection = CurrentProject.Connection
 
'Удаление всех таблиц по именам
     For i = LBound(arrTables) To UBound(arrTables)
        sTblName = arrTables(i)
        s = sTblLocalPrefix & sTblName
        DelTable_ADOX s
    Next i
    cat.Tables.Refresh
    Debug.Print String(74, "-")
 
    If bDelOnly = True Then GoTo ReLinkTables_ADOX_Bye
'Подключение  всех по именам
    For i = LBound(arrTables) To UBound(arrTables)
        sTblName = arrTables(i)
        'Debug.Print Format(i, "000") & " - " & sTblName
        LinkTable_ADOX sTblName, AConnectionString_ADOX, sTblLocalPrefix & sTblName
    Next i
    
'Отчёт о проделанной работе
    'Debug.Print String(74, "-")
    Debug.Print "Подключено: " & Format(i, "000") & " таблиц " & Now
    Debug.Print String(74, "-")
 
    
ReLinkTables_ADOX_Bye:
    On Error Resume Next
    'Обновляем список таблиц
    cat.Tables.Refresh
    
    cat.ActiveConnection.Close
    Set cat = Nothing
    Set tbl = Nothing
    
    'Keep_ADO_Connection
    Exit Sub 'Ура!!!
 
ReLinkTables_ADOX_Err:
    s = "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "In procedure: ReLinkTables_ADOX in module: modCommon_ADOX"
    Debug.Print s
    MsgBox s, vbCritical, "Error in Application!"
    Err.Clear
    Resume ReLinkTables_ADOX_Bye
End Sub
Private Sub DelTable_ADOX(s$)
'Удаление подлинковки.
    On Error Resume Next
    cat.Tables.Delete s
    If Err = 0 Then Debug.Print s & " ... Deleted!"
    Err.Clear
End Sub
 
Private Sub LinkTable_ADOX(stRemTName As String, strConnect As String, Optional strLocalTableName As String = "")
'es 08.05.2017
'Подлинковка таблички MySQL Server с автоматическим созданием DSN (ADOX)
'Использует общие переменные данного модуля (так короче и возможно быстрее)
'-------------------------------------------------------------------------
'Аргументы:
'   stRemTName  = Имя таблицы на сервере
'   strConnect  = Строка подключения к серверу с "ODBC:DRIVER = ..."
'   strLocalTableName = Локальное Имя Таблицы
'-------------------------------------------------------------------------
 
On Err GoTo LinkTable_ADOX_Err
'Если локальное имя не указанно
    If strLocalTableName = "" Then strLocalTableName = stRemTName
    
     Set tbl = New ADOX.Table
 
'Установка параметров таблицы
    With tbl
        .Name = strLocalTableName
        Set .ParentCatalog = cat
        .Properties("Jet OLEDB:Link Provider String") = strConnect
        .Properties("Jet OLEDB:Remote Table Name") = stRemTName
        .Properties("Jet OLEDB:Create Link") = True
    End With
    
'Создаём новый обьект
    cat.Tables.Append tbl
    cat.Tables.Refresh
    
LinkTable_ADOX_Bye:
    Exit Sub
 
LinkTable_ADOX_Err:
    'LinkTable_ADOX = Err.Number
    Debug.Print "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
            "in Function: esLinkTable_ADOX"
    Resume LinkTable_ADOX_Bye
End Sub
Работаем через StartReLink_MySQL_ADOX
3
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
24.07.2017, 19:19  [ТС]
Eugene-LS, Круто!! Попробую работу кода 26.07.2017г.
Спасибо!
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
24.07.2017, 19:56
Цитата Сообщение от ankan Посмотреть сообщение
Попробую работу кода 26.07.2017г.
Хорошо, отпишитесь по результатам пожалуйста.
В спешке я там мог и накосячить, а самому тестить никак, во первых время, во вторых у меня нет баз с таким кол-ом табличек.
Прошу обратить внимание на изменённую строчку подключения, там добавилось "MSDASQL;" спереди - попробуйте так, если что - удалите.

Добавлено через 21 минуту
Цитата Сообщение от ankan Посмотреть сообщение
Попробую работу кода 26.07.2017г.
Под вечер нашел время ...
- у меня модуль отработал на FIVE! (по 6-ти табличкам в массиве).
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
24.07.2017, 20:29  [ТС]
Eugene-LS,
Цитата Сообщение от Eugene-LS Посмотреть сообщение
- у меня модуль отработал на FIVE! (по 6-ти табличкам в массиве).
, Сколько времени заняла линковка 6 таблиц?
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
24.07.2017, 21:23
Цитата Сообщение от ankan Посмотреть сообщение
Сколько времени заняла линковка 6 таблиц?
Ну уж нет!
- ещё и на время тестить ... уж увольте...
Тем паче с сервера где то в евро зоне + через SSH туннель, а это помедленнее чем у вас будет.

Визуально = МГНОВЕННО.


Добавлено через 8 минут
Цитата Сообщение от ankan Посмотреть сообщение
Сколько времени заняла линковка 6 таблиц?
На скорость подключения и работы с данными влияет масса факторов ...
Экспериментируйте!
(Изучайте заодно)
Успехов!

Вот весьма полезный документик по теме (от производителя драйвера ODBC):
5.2 Connector/ODBC Connection Parameters

Добавлено через 26 минут
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Вот что-то сочинилось на эту тему:
Косяк (небольшой):
В процедуре ReLinkTables_ADOX
Строка №225: cat.Tables.Refresh = Лишние повторы операции! - можно смело закомментировать или просто удалить - будет только быстрее.

Тем кто читает этот пост:
Ещё чего найдёте - пишите пожалуйста, буду признателен - улучшим совместно ...

Добавлено через 9 минут
ankan, Внимание!
В модуле:
Visual Basic
1
2
'Запуск
    ReLinkTables_ADOX arrTables, "00_", bDelOnly    ' Полное переподключение
Забыл убрать (для вас) ...
Второй параметр = Локальный префикс подключаемых таблиц.
Я понимаю так, что оно вам не нужно, тогда:
Visual Basic
1
2
'Запуск
    ReLinkTables_ADOX arrTables, , bDelOnly    ' Полное пере-подключение
Таблички будут подключены с их ориг. названиями.
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
26.07.2017, 16:02  [ТС]
Eugene-LS, С первой попытки не сработало.
У меня интерфейс на Аксесс 2003, может в этом дело?
Миниатюры
Код VBA для линковки (установлении связи) по двум или более драйверам ODBC  
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
26.07.2017, 17:39  [ТС]
Eugene-LS, при пошаговой проверке кода нашел
Visual Basic
1
sTblLocalPrefix
в строках кода 87;149;160 и 92
В моем случае
Цитата Сообщение от Eugene-LS Посмотреть сообщение
ankan, Внимание!
В модуле:
Visual Basic
'Запуск
ReLinkTables_ADOX arrTables, "00_", bDelOnly ' Полное переподключение
Забыл убрать (для вас) ...
Второй параметр = Локальный префикс подключаемых таблиц.
Я понимаю так, что оно вам не нужно, тогда:
Visual Basic
Выделить код
'Запуск
ReLinkTables_ADOX arrTables, , bDelOnly ' Полное пере-подключение
Таблички будут подключены с их ориг. названиями.
эти строки кода нужно откорректировать?
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,650
27.07.2017, 21:24
Цитата Сообщение от ankan Посмотреть сообщение
эти строки кода нужно откорректировать?
Ну, видимо, да.
Цитата Сообщение от ankan Посмотреть сообщение
С первой попытки не сработало.
У меня интерфейс на Аксесс 2003, может в этом дело?
Вряд ли в этом дело.
В посланном вами примере заметил ссылку на DAO - которая не нужна (работаем по ADOX и ADO) - уберите её - возможно поможет.
Мои тесты показали работоспособность кода (MSA 2013).

Добавлено через 26 минут
Цитата Сообщение от ankan Посмотреть сообщение
С первой попытки не сработало.
Ещё я добавил в начало строки подключения "MSDASQL;" - и отписал вам об этом.
Уберите её.
Всё зависит от версии сервера к которому мы обращаться - а они разные бывают и по разному могут быть настроены.
Тут метод "научного тыка" часто подходит.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2017, 21:24

Как происходит авторизация при установлении связи с сайтом?
Мне ранее не доводилось делать авторизацию на сайте - может быть, по этой причине и непонимание. А суть дела такова. Протокол...

Регулярка по двум буквам подряд, но не трем или более
Не могу создать регулярку которая найдет только двойные буквы wworld - 1 worrld - 1 worldd - 1 wwworld - 0 worrrld - 0 ...

Поиск по определенному или двум и более параметрам в List.Find
Есть структура public struct Note { //из списка группы public string firstName; //имя public...

OLE BD или ODBC для MS Access?
Что лучше использоваться для подключения к базе access?

Написать код для решение по двум формулам


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru