Описание
Обновляет объекты в семействе в соответствии с текущими изменениями в схеме базы данных.
семейство.Refresh
Замечания
Не допускается вызов метода Refresh для семейств, не являющихся постоянными, таких как Connections, Databases, Recordsets, Workspaces или семейство QueryDefs объекта Connection.
Для определения положения, которое ядро базы данных Microsoft Jet присваивает объектам Field в семействе Fields объекта QueryDef, Recordset или TableDef, следует использовать свойство OrdinalPosition каждого объекта Field. Изменение значение свойства OrdinalPosition объекта Field может не отразиться на положении объекта Field в семействе, пока не будет вызван метод Refresh.
Метод Refresh используют при работе в сети, в которой другие пользователи могут вносить изменения в базу данных. Кроме того, может потребоваться применить этот метод к семействам, на которые косвенно влияют изменения, вносимые в базу данных. Например, при изменении семейства Users может возникнуть необходимость обновить семейство Groups перед его использованием.
Семейство заполняется объектами при первом обращении к нему. Состав семейства не будет в дальнейшем автоматически отражать изменения, внесенные в него другими пользователями. Если существует возможность того, что семейство изменено другим пользователем, то рекомендуется применить метод Refresh к семейству непосредственно перед выполнением любого действия, предполагающего присутствие или отсутствие конкретного объекта в семействе. Это позволит всегда работать с последней версией семейства. С другой стороны, следует помнить, что лишние вызовы метода Refresh могут замедлить работу приложения.
Пример
Следующая программа использует метод Refresh для обновления семейства Fields таблицы "Типы" на основании изменения значения свойства OrdinalPosition. Порядок полей в семействе Fields изменяется только после вызова метода Refresh.
Sub RefreshX() Dim dbsNorthwind As Database Dim tdfEmployees As TableDef Dim aintPosition() As Integer Dim astrFieldName() As String Dim intTemp As Integer Dim fldLoop As Field Set dbsNorthwind = OpenDatabase("Борей.mdb") Set tdfEmployees = dbsNorthwind.TableDefs("Типы") With tdfEmployees ' Отображает исходные значения свойства OrdinalPosition ' и сохраняет их в массиве. Debug.Print "Исходные значения OrdinalPosition в объекте TableDef." ReDim aintPosition(0 To .Fields.Count - 1) As Integer ReDim astrFieldName(0 To .Fields.Count - 1) As String For intTemp = 0 To .Fields.Count - 1 aintPosition(intTemp) = .Fields(intTemp).OrdinalPosition astrFieldName(intTemp) = .Fields(intTemp).Name Debug.Print , aintPosition(intTemp), astrFieldName(intTemp) Next intTemp ' Изменяет значения свойства OrdinalPosition. For Each fldLoop In .Fields fldLoop.OrdinalPosition = 100 - fldLoop.OrdinalPosition Next fldLoop Set fldLoop = Nothing ' Печатает новые данные. Debug.Print "Новые значения OrdinalPosition до вызова Refresh." For Each fldLoop In .Fields Debug.Print , fldLoop.OrdinalPosition, fldLoop.Name Next fldLoop .Fields.Refresh ' Печатает новые данные, демонстрирующие изменение ' порядка полей. Debug.Print "Новые значения OrdinalPosition после вызова Refresh." For Each fldLoop In .Fields Debug.Print , fldLoop.OrdinalPosition, fldLoop.Name Next fldLoop ' Восстанавливает исходные значения свойства OrdinalPosition. For intTemp = 0 To .Fields.Count - 1 .Fields(astrFieldName(intTemp)).OrdinalPosition = aintPosition(intTemp) Next intTemp End With dbsNorthwind.Close End Sub