18. Если у Вас интерфейс хранится в одной базе, а данные в другой, то необходимо научится привязывать базу к таблицам на сервере. Иначе пользователю, используя стандартный интерфейс будет очень трудно это сделать. В этом примере показано как это делается автоматически через программный код.
Private Sub Form_Open(Cancel As Integer)
Dim s 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
24. Если у вас в форме используется несколько таблиц, то связать их можно с помощью этого программного кода
Public Sub Form_Current()
On Error GoTo 999
With Me.Parent.Пример_24_2.Form
.Filter = "Код=" Me.Код
.FilterOn = True
End With
Exit Sub
999:
Err.Clear
End Sub
21. Используя ссылку на подчиненную форму, можно автоматически вычислять итоги в главной форме.
Private Sub Form_Load()
Me.Сумма.ControlSource = "=[Список].Form![ИтоговаяСумма]"
End Sub