MyTetra Share
Делитесь знаниями!
Диспетчер связанных таблиц
12.07.2018
08:29
Раздел: VBA - Access - leadersoft.ru

18. Если у Вас интерфейс хранится в одной базе, а данные в другой, то необходимо научится привязывать базу к таблицам на сервере. Иначе пользователю, используя стандартный интерфейс будет очень трудно это сделать. В этом примере показано как это делается автоматически через программный код.
Свойства продукта

 Microsoft Office: 2000,2002,2003,2007,2010  Архив с файлами: Перейти
 Операционная система: Windows XP,Vista  Применение: Базы данных Access
 Продажа: Купить  Файл исходника: ..\Access\15 Формы\la_form1.mdb
 Язык интерфейса: Русский

   

Private Sub Form_Open(Cancel As Integer)
Dim As String, tdf As TableDef, dbs As Database
Dim tdfName As String, dbsName As String, i As Integer
    On Error GoTo 999
    Set dbs = CurrentDb 'Выбор базы данных
    dbs.Execute "DELETE * FROM [Пример 18]" 'Удаляем все записи
    'Инициализация таймера загрузки
    Application.SetOption "Строка состояния"True 'Показываем строку
    i = 1: SysCmd acSysCmdInitMeter, "Загрузка таблиц ...", dbs.TableDefs.Count
    For Each tdf In dbs.TableDefs   'Просматриваем все таблицы
        SysCmd acSysCmdUpdateMeter, i: i = i + 1 'Перерисовываем таймер
        dbsName = funGetSubString(tdf.Connect, ";DATABASE="";"'Находим связанную таблицу
        If (dbsName <> ""Then
            tdfName = tdf.Name 'Имя таблицы
            'Составляем запрос на добавление
            s = "INSERT INTO [Пример 18] ( Вкл, Таблица, Файл ) SELECT " & _
                "False AS Вкл, """ & _
                tdfName & """ AS Таблица,""" & _
                dbsName & """ AS Файл;"
            dbs.Execute s 'Добавляем в таблицу меню
        End If
    Next
    SysCmd acSysCmdRemoveMeter 'Удаляем таймер
    Me.Requery 'Изменяем запрос в форме
    Exit Sub
999:
    SysCmd acSysCmdRemoveMeter 'Удаляем таймер
    MsgBox Err.Description 'Сообщаем об ошибке
    Err.Clear
End Sub

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования