Программное прилинкование таблиц

Для начала нам понадобится таблица Tables с полями NmTbl, tp, Path. Последнее поле играет чисто информативную роль и необязательно. Эта таблица ЛОКАЛЬНАЯ для клиентского приложения.
Теперь в сделанную таблицу вбиваем все прилинкованные таблицы (их названия). В поле tp вбиваем цифирь, которая будет отличать таблицы прилинкованные из разных баз. Т.е., если храните справочнике в одной базе, а данные в другой, то tp у них должен быть разный.
Теперь каждый, как может, иницирует вбивку пути к данным. Я храню путь двумя путями: 1) в файле INI, 2) в локальной таблице Properties, которую сам создал и храню в ней всякие мелочи, характерные только для данной версии клиента.
Далее, где путь пользователь вбивает, ставим кнопку "Присоединить" и на нее вешаем данную функцию. Не забываем только, что для каждой базы (справочники, данные, ...) своя кнопка и свой параметр tp.

Public Function ConnToDbBase(tp As Long, Path As String)
Dim tb As TableDef
Dim qConnect As String
Dim r As Recordset
Dim sql As String
Dim NmTb As String

sql = "select * from Tables where Tp=" & tp
Set r = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
If r.EOF And r.BOF Then Exit Function
r.MoveFirst
While Not r.EOF
    NmTb = r.Fields("NmTbl")

For Each tb In CurrentDb.TableDefs
    qConnect = Trim(Nz(tb.Connect, ""))
    If qConnect = "" Then
    Else
        If tb.Name = NmTb Then
            tb.Connect = ";DATABASE=" & Path
            tb.RefreshLink
            Exit For
        End If
    End If
Next tb

    r.MoveNext
Wend

r.Close
Set r = Nothing
End Function

Если что-то осталось непонятным, пишите в форум.
Примечание: данная прилинковка работает только для таблиц из mdb-файлов. Для всяких там DBF и т.п. нужен другой Connect.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=9196