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


Свойство Index.DistinctCount (DAO)

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

Возвращает значение, указывающее количество уникальных значений объекта Index , включенных в связанную таблицу (только для рабочих областей Microsoft Access).

Синтаксис

expression . Distinctcount

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

Замечания

Проверьте свойство DistinctCount , чтобы определить количество уникальных значений или ключей в индексе. Любой ключ подсчитывается только один раз, даже если это значение может быть несколько вхождений, если индекс допускает дублирование значений. Эта информация полезна в приложениях, которые пытаются оптимизировать доступ к данным путем оценки сведений об индексах. Число уникальных значений также называется кратностью объекта Index .

Свойство DistinctCount не всегда отражает фактическое количество ключей в определенный момент времени. Например, изменение, вызванное откатом транзакции, не будет сразу отражено в свойстве DistinctCount . Значение свойства DistinctCount также может не отражать удаление записей с уникальными ключами. Число будет точным сразу после использования метода CreateIndex .

Пример

В этом примере свойство DistinctCount используется, чтобы показать, как можно определить количество уникальных значений в объекте Index . Однако это значение является точным только сразу после создания индекса. Он останется точным, если ключи не изменяются или если добавлены новые ключи и старые ключи не удаляются; В противном случае он не будет надежным. (Если эта процедура выполняется несколько раз, можно увидеть влияние на значения свойств DistinctCount существующих объектов Index.)

    Sub DistinctCountX() 
     
     Dim dbsNorthwind As Database 
     Dim tdfEmployees As TableDef 
     Dim idxCountry As Index 
     Dim idxLoop As Index 
     Dim rstEmployees As Recordset 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set tdfEmployees = dbsNorthwind!Employees 
     
     With tdfEmployees 
     ' Create and append new Index object to the Employees 
     ' table. 
     Set idxCountry = .CreateIndex("CountryIndex") 
     idxCountry.Fields.Append _ 
     idxCountry.CreateField("Country") 
     .Indexes.Append idxCountry 
     
     ' The collection must be refreshed for the new 
     ' DistinctCount data to be available. 
     .Indexes.Refresh 
     
     ' Enumerate Indexes collection to show the current 
     ' DistinctCount values. 
     Debug.Print "Indexes before adding new record" 
     For Each idxLoop In .Indexes 
     Debug.Print " DistinctCount = " & _ 
     idxLoop.DistinctCount & ", Name = " & _ 
     idxLoop.Name 
     Next idxLoop 
     
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees") 
     
     ' Add a new record to the Employees table. 
     With rstEmployees 
     .AddNew 
     !FirstName = "April" 
     !LastName = "LaMonte" 
     !Country = "Canada" 
     .Update 
     End With 
     
     ' Enumerate Indexes collection to show the modified 
     ' DistinctCount values. 
     Debug.Print "Indexes after adding new record and " & _ 
     "refreshing Indexes" 
     .Indexes.Refresh 
     For Each idxLoop In .Indexes 
     Debug.Print " DistinctCount = " & _ 
     idxLoop.DistinctCount & ", Name = " & _ 
     idxLoop.Name 
     Next idxLoop 
     
     ' Delete new record because this is a demonstration. 
     With rstEmployees 
     .Bookmark = .LastModified 
     .Delete 
     .Close 
     End With 
     
     ' Delete new Indexes because this is a demonstration. 
     .Indexes.Delete idxCountry.Name 
     End With 
     
     dbsNorthwind.Close 
     
    End Sub