Я унаследовал базу данных доступа 2010 (ADP) и пытаюсь понять строку подключения. Если бы кто-то мог помочь сломать это для меня, это было бы очень полезно. Не понимая, что все это значит. Я хочу в конечном итоге перейти на доступ к базе данных 2013 года со связанными таблицами.
Я исследовал весь интернет безрезультатно. Также будет переход на новый сервер, использующий sql server 2017. Моя самая большая проблема — понять, что такое i+16 и i2-i+16.
Вот что у меня есть:
Sub CheckDBName()
Dim m As String
Dim i As Integer
Dim i2 As Integer
On Error Resume Next
m = CurrentProject.Connection.ConnectionString
i = InStr(m, "Initial Catalog = ")
i2 = InStr(m, ";Data Provider = ")
m = Mid(CurrentProject.Connection.ConnectionString, (i + 16),
(i2 - (i + 16)))
Да, что сказал @SeanLange. Сначала код находит, где в строке подключения встречаются эти два ключевых термина, а затем выполняет простой синтаксический анализ строки для извлечения текста между ними. Обратите внимание, что «Исходный каталог =» имеет длину 16 символов — отсюда и «I + 16». Откровенно говоря, я не сторонник такого подхода, поскольку не гарантируется, что элементы строки подключения будут располагаться в том порядке, в котором требует опубликованный вами код.
Я довольно новичок в этой области, пожалуйста, извините мое непонимание и спасибо за помощь.





Как объяснил Брайан в комментариях, этот код извлекает текст между строками «Initial Catalog=» и «;Data Provider=», другими словами, имя базы данных. Он правильно указал, что это может сломаться, если элементы строки подключения находятся в другом порядке. Чтобы избежать этого, я бы получил доступ к коллекции свойств Connection, например:
m = CurrentProject.Connection.Properties("Initial Catalog")
Какую часть вы не понимаете? Это просто основные манипуляции со строками, чтобы разбить части строки подключения.