powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как изменить адрес подключения в MSysObjects?
7 сообщений из 7, страница 1 из 1
Как изменить адрес подключения в MSysObjects?
    #32638119
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле Database, в нём указан адрес подключения для связанных таблиц. Но поле не редактируется!
Возникла необходимость подключить таблицу к базе по адресу: "МаK$:\...", т.е. к скрытому диску, а через стандартный диалог подключения скрытый диск не виден.
Как быть?
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638135
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tabledefs , refreshlink , F1
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638138
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это перелинковывает таблицы:

Код: plaintext
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.
Function RelinkTable(sBase, sTableArray) As Boolean
 'false если были ошибка 
 'sBase = "c:\georgiy\tlfNew.mdb" ' путь к новому положению БД на диске 
On Error GoTo RelinkTable_err

Dim j As Integer, oldConnectString
Dim dbs As Database
Dim tdf As TableDef
 ' Dim sBase As String 
Dim lngX As Long

RelinkTable = False

Set dbs = CurrentDb
SysCmd acSysCmdInitMeter, "Открываю таблицы базы " & sBase, UBound(sTableArray) +  1 
lngX =  0 

For j = LBound(sTableArray) To UBound(sTableArray)

Set tdf = dbs.TableDefs(sTableArray(j))

If Len(tdf.Connect) >  0  Then
oldConnectString = tdf.Connect
tdf.Connect = ";DATABASE=" & sBase
tdf.RefreshLink
End If
lngX = lngX +  1 
SysCmd acSysCmdUpdateMeter, lngX
Next

 ' MsgBox "Таблицы подлинкованы." & vbCr & sBase, vbOKOnly + vbInformation, "Минздрав доволен!" 
RelinkTable = True

RelinkTable_exit:

dbs.Close
SysCmd acSysCmdUpdateMeter, UBound(sTableArray)
SysCmd acSysCmdClearStatus

Exit Function

RelinkTable_err:
Select Case Err.Number
Case  3011 
 'не найдена нужная таблица в указанном файле 
MsgBox "В выбранном файле нет таблицы " & tdf.Name & vbCrLf & "Укажите правильный файл данных!" & vbCrLf & vbCrLf & "Смена подключения не произведена, источник данных прежний.", vbExclamation, "Ошибка"

 'принудительное переключение обратно не нужно 
 'tdf.Connect = oldConnectString 
 'tdf.RefreshLink 


Case Else
MsgBox "При переключении источника данных произошла ошибка:" & Err.Description
End Select
Resume RelinkTable_exit:

End Function

попробуй сначала на обычном диске,
а потом скорми ему свой скрытый
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638203
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Значит в MSysObjects прямо с клавиатуры ничего нельзя вносить? Жаль...
2. 2 АлексейК:
если это совет читать справку, то большое спасибо, сам бы никогда не додумался...
3. 2 Alexus12:
а кто заполняет массив с именами таблиц и как быть если к скрытому диску надо подключить только 7 таблиц из 40?
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638302
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 это не просто совет читать справку а по конкретным ключевым словам:
tabledefs , refreshlink
но ввиду того что алексус тебе кинул готовый код то мой пост неактуален




автора кто заполняет массив с именами таблиц и как быть если к скрытому диску надо подключить только 7 таблиц из 40?


массив наверное заполняется в коде выше или берется из специальной таблички , причем в этот массив хорошо бы положить именно те таблицы которые хочешь перелинковать а не все
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638461
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного изменил объявление функции:
Код: plaintext
Function RelinkTable(sBase, ParamArray sTableArray() As Variant) As Boolean
, а вызываю ее так:
Код: plaintext
1.
2.
Sub ww()
Call RelinkTable("новый адрес", <перечисление всех нужных таблиц>)
End Sub
Работает, спасибо!
...
Рейтинг: 0 / 0
Как изменить адрес подключения в MSysObjects?
    #32638795
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ты не хочешь
чтобы падала база
и чтобы каждый раз лазить в системную (!) таблу
то
пользуйся своими процедурами (выше)

а что бы передавать массив,
используется функция Array() 'смотри хэлп

ага
уже все получилось
ок
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как изменить адрес подключения в MSysObjects?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]