Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как изменить адрес подключения в MSysObjects? / 7 сообщений из 7, страница 1 из 1
06.08.2004, 10:43:25
    #32638119
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить адрес подключения в MSysObjects?
Поле Database, в нём указан адрес подключения для связанных таблиц. Но поле не редактируется!
Возникла необходимость подключить таблицу к базе по адресу: "МаK$:\...", т.е. к скрытому диску, а через стандартный диалог подключения скрытый диск не виден.
Как быть?
...
Рейтинг: 0 / 0
06.08.2004, 10:54:13
    #32638135
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить адрес подключения в MSysObjects?
tabledefs , refreshlink , F1
...
Рейтинг: 0 / 0
06.08.2004, 10:56:08
    #32638138
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить адрес подключения в MSysObjects?
Вот это перелинковывает таблицы:

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




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


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

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

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


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