IndexNulls-Eigenschaft (VB-Beispiel)
Gilt für: Access 2013, Office 2013
In diesem Beispiel wird die Verwendung der IndexNulls-Eigenschaft eines Index-Objekts veranschaulicht. Der Code erstellt einen neuen Index und legt den Wert von IndexNulls basierend auf Benutzereingaben (aus einem Listenfeld mit dem Namen List1) fest. Anschließend wird der Index an die Employees-Tabelle im Northwind-Katalog angefügt. Das neue Index-Objekt wird auf ein Recordset-Objekt basierend auf der Employees-Tabelle angewendet, und das Recordset-Objekt wird geöffnet. Der Employees-Tabelle wird ein neuer Datensatz mit einem Null-Wert im indizierten Feld hinzugefügt. Ob dieser neue Datensatz angezeigt wird, hängt von der Einstellung der IndexNulls-Eigenschaft ab.
' IndexNullsVB
Sub Main()
On Error GoTo IndexNullsXError
Dim cnn As New ADODB.Connection
Dim catNorthwind As New ADOX.Catalog
Dim idxNew As New ADOX.Index
Dim rstEmployees As New ADODB.Recordset
Dim varBookmark As Variant
' Connect the catalog.
cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source='c:\Program Files\" & _
"Microsoft Office\Office\Samples\Northwind.mdb';"
Set catNorthwind.ActiveConnection = cnn
' Append Country column to new index
idxNew.Columns.Append "Country"
idxNew.Name = "NewIndex"
Dim Response
Response = MsgBox("Allow 'Null' index? Otherwise ignore 'Null' index.", vbYesNo)
'"Allow 'Null' index? Otherwise ignore 'Null' index."
', vbYesNo + vbCritical + vbDefaultButton2,,,,
If Response = vbYes Then ' User chose Yes.
idxNew.IndexNulls = adIndexNullsAllow
Else ' User chose No.
idxNew.IndexNulls = adIndexNullsIgnore
End If
'Append new index to Employees table
catNorthwind.Tables("Employees").Indexes.Append idxNew
rstEmployees.Index = idxNew.Name
rstEmployees.Open "Employees", cnn, adOpenKeyset, _
adLockOptimistic, adCmdTableDirect
With rstEmployees
' Add a new record to the Employees table.
.AddNew
!FirstName = "Gary"
!LastName = "Haarsager"
.Update
' Bookmark the newly added record
varBookmark = .Bookmark
' Use the new index to set the order of the records.
.MoveFirst
Debug.Print "Index = " & .Index & _
", IndexNulls = " & idxNew.IndexNulls
Debug.Print " Country - Name"
' Enumerate the Recordset. The value of the
' IndexNulls property will determine if the newly
' added record appears in the output.
Do While Not .EOF
Debug.Print " " & _
IIf(IsNull(!Country), "[Null]", !Country) & _
" - " & !FirstName & " " & !LastName
.MoveNext
Loop
' Delete new record because this is a demonstration.
.Bookmark = varBookmark
.Delete
.Close
End With
'Clean up
Set rstEmployees = Nothing
catNorthwind.Tables("Employees").Indexes.Delete idxNew.Name
cnn.Close
Set cnn = Nothing
Set catNorthwind = Nothing
Set idxNew = Nothing
Exit Sub
IndexNullsXError:
If Not rstEmployees Is Nothing Then
If rstEmployees.State = adStateOpen Then rstEmployees.Close
End If
Set rstEmployees = Nothing
' Delete new Index because this is a demonstration.
If Not catNorthwind Is Nothing Then
catNorthwind.Tables("Employees").Indexes.Delete idxNew.Name
End If
If Not cnn Is Nothing Then
If cnn.State = adStateOpen Then cnn.Close
End If
Set cnn = Nothing
Set catNorthwind = Nothing
Set idxNew = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
' EndIndexNullsVB