Поделиться через


Метод Fields.Refresh (DAO)

Область применения: Access 2013, Office 2013

Обновления объекты в указанной сортировке, чтобы отразить текущую схему базы данных.

Синтаксис

expression . Обновить

выражение: переменная, представляющая объект Fields.

Замечания

Чтобы определить положение, используемое ядром СУБД Microsoft Access для объектов Field в коллекции Fields объекта QueryDef, Recordset или TableDef , используйте свойство OrdinalPosition каждого объекта Field . Изменение свойства OrdinalPosition объекта Field не может изменить порядок объектов Field в коллекции, пока не будет использоваться метод Refresh .

Используйте метод Refresh в многопользовательских средах, в которых другие пользователи могут изменять базу данных. Его также может потребоваться использовать во всех коллекциях, на которые косвенно влияют изменения базы данных. Например, при изменении коллекции Users может потребоваться обновить коллекцию Groups перед использованием коллекции Groups .

Коллекция заполняется объектами при первом обращении к ней и не будет автоматически отражать последующие изменения, внесенные другими пользователями. Если другой пользователь, скорее всего, изменил коллекцию, используйте метод Refresh в коллекции непосредственно перед выполнением какой-либо задачи в приложении, предполагающей наличие или отсутствие определенного объекта в коллекции. Это обеспечит максимально актуальную коллекцию. С другой стороны, использование обновления может неоправданно снизить производительность.

Пример

В этом примере метод Refresh используется для обновления коллекции Fields таблицы Categories на основе изменений данных OrdinalPosition . Порядок полей в коллекции изменяется только после использования метода 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("Northwind.mdb") 
     Set tdfEmployees = dbsNorthwind.TableDefs("Categories") 
     
     With tdfEmployees 
     ' Display original OrdinalPosition data and store it 
     ' in an array. 
     Debug.Print _ 
     "Original OrdinalPosition data in 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 
     
     ' Change OrdinalPosition data. 
     For Each fldLoop In .Fields 
     fldLoop.OrdinalPosition = _ 
     100 - fldLoop.OrdinalPosition 
     Next fldLoop 
     Set fldLoop = Nothing 
     
     ' Print new data. 
     Debug.Print "New OrdinalPosition data before Refresh." 
     For Each fldLoop In .Fields 
     Debug.Print , fldLoop.OrdinalPosition, fldLoop.Name 
     Next fldLoop 
     
     .Fields.Refresh 
     
     ' Print new data, showing how the field order has been 
     ' changed. 
     Debug.Print "New OrdinalPosition data after Refresh." 
     For Each fldLoop In .Fields 
     Debug.Print , fldLoop.OrdinalPosition, fldLoop.Name 
     Next fldLoop 
     
     ' Restore original OrdinalPosition data. 
     For intTemp = 0 To .Fields.Count - 1 
     .Fields(astrFieldName(intTemp)).OrdinalPosition = _ 
     aintPosition(intTemp) 
     Next intTemp 
     End With 
     
     dbsNorthwind.Close 
     
    End Sub