Recordset2.CacheSize-Eigenschaft (DAO)
Gilt für: Access 2013, Office 2013
Mit dieser Eigenschaft wird die Anzahl von Datensätzen, die aus einer ODBC-Datenquelle abgerufen und lokal gespeichert werden, festgelegt oder zurückgegeben. Long mit Lese-/Schreibzugriff.
Syntax
Ausdruck . Cachesize
Ausdruck Eine Variable, die ein Recordset2-Objekt darstellt.
Hinweise
Der Wert der CacheSize-Eigenschaft muss zwischen 5 und 1200 liegen, darf aber nicht größer als der verfügbare Speicherplatz sein. Ein typischer Wert ist 100. Bei der Einstellung 0 wird die Zwischenspeicherung deaktiviert.
Das Zwischenspeichern von Daten verbessert die Leistung, wenn Sie Recordset-Objekte verwenden, um Daten von einem Remoteserver abzurufen. Ein Cache ist ein Speicher im lokalen Speicher, der die zuletzt vom Server abgerufenen Daten enthält. Dies ist nützlich, wenn Benutzer die Daten erneut anfordern, während die Anwendung ausgeführt wird. Wenn Benutzer Daten anfordern, überprüft das Microsoft Access-Datenbankmodul zuerst den Cache auf die angeforderten Daten, anstatt sie vom Server abzurufen, was mehr Zeit in Anspruch nimmt. Der Cache speichert nur Daten, die aus einer ODBC-Datenquelle stammen.
Jede mit dem Microsoft Access-Datenbankmodul verbundene ODBC-Datenquelle (wie z. B. eine verknüpfte Tabelle) kann einen lokalen Cache besitzen. Öffnen Sie zum Erstellen eines Caches ein Recordset-Objekt in der Remotedatenquelle, legen Sie die Eigenschaften CacheSize und CacheStart fest, und verwenden Sie dann die FillCache-Methode, oder wechseln Sie mit den Move-Methoden durch die Datensätze.
Sie können die Einstellung der CacheSize-Eigenschaft auf die Anzahl der Datensätze basieren, die Ihre Anwendung gleichzeitig verarbeiten kann. Wenn Sie zum Beispiel ein Recordset-Objekt als Quelle für die auf dem Bildschirm anzuzeigenden Daten verwenden, können Sie für seine CacheSize-Eigenschaft den Wert 20 festlegen, sodass jeweils 20 Datensätze gleichzeitig angezeigt werden.
Die Microsoft Access-Datenbank-Engine ruft Datensätze, die sich im Bereich des Zwischenspeichers befinden, aus dem Zwischenspeicher ab und Datensätze, die sich nicht im Zwischenspeicherbereich befinden, vom Server.
Aus dem Zwischenspeicher abgerufene Datensätze enthalten keine Änderungen, die andere Benutzer gleichzeitig an den Quelldaten vorgenommen haben.
Sie können die Aktualisierung aller Daten im Zwischenspeicher erzwingen, indem Sie die CacheSize-Eigenschaft des Recordset-Objekts auf 0 und dann zurück auf die ursprünglich angeforderte Zwischenspeichergröße setzen. Anschließend verwenden Sie die FillCache-Methode.
Beispiel
In diesem Beispiel werden die CreateTableDef- und FillCache-Methoden und die CacheSize-, CacheStart- und SourceTableName-Eigenschaften verwendet, um die Datensätze in einer verknüpften Tabelle zweimal aufzuzählen. Daraufhin werden die Datensätze in einem Cache mit 50 Datensätzen zweimal aufgezählt. Anschließend enthält das Beispiel durch die verknüpfte Tabelle die Leistungsstatistik für die zwischengespeicherten und die nicht zwischengespeicherten Datensätze.
Sub ClientServerX3()
Dim dbsCurrent As Database
Dim tdfRoyalties As TableDef
Dim rstRemote As Recordset2
Dim sngStart As Single
Dim sngEnd As Single
Dim sngNoCache As Single
Dim sngCache As Single
Dim intLoop As Integer
Dim strTemp As String
Dim intRecords As Integer
' Open a database to which a linked table can be
' appended.
Set dbsCurrent = OpenDatabase("DB1.mdb")
' Create a linked table that connects to a Microsoft SQL
' Server database.
Set tdfRoyalties = _
dbsCurrent.CreateTableDef("Royalties")
' Note: The DSN referenced below must be set to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
tdfRoyalties.Connect = _
"ODBC;DATABASE=pubs;DSN=Publishers"
tdfRoyalties.SourceTableName = "roysched"
dbsCurrent.TableDefs.Append tdfRoyalties
Set rstRemote = _
dbsCurrent.OpenRecordset("Royalties")
With rstRemote
' Enumerate the Recordset object twice and record
' the elapsed time.
sngStart = Timer
For intLoop = 1 To 2
.MoveFirst
Do While Not .EOF
' Execute a simple operation for the
' performance test.
strTemp = !title_id
.MoveNext
Loop
Next intLoop
sngEnd = Timer
sngNoCache = sngEnd - sngStart
' Cache the first 50 records.
.MoveFirst
.CacheSize = 50
.FillCache
sngStart = Timer
' Enumerate the Recordset object twice and record
' the elapsed time.
For intLoop = 1 To 2
intRecords = 0
.MoveFirst
Do While Not .EOF
' Execute a simple operation for the
' performance test.
strTemp = !title_id
' Count the records. If the end of the
' cache is reached, reset the cache to the
' next 50 records.
intRecords = intRecords + 1
.MoveNext
If intRecords Mod 50 = 0 Then
.CacheStart = .Bookmark
.FillCache
End If
Loop
Next intLoop
sngEnd = Timer
sngCache = sngEnd - sngStart
' Display performance results.
MsgBox "Caching Performance Results:" & vbCr & _
" No cache: " & Format(sngNoCache, _
"##0.000") & " seconds" & vbCr & _
" 50-record cache: " & Format(sngCache, _
"##0.000") & " seconds"
.Close
End With
' Delete linked table because this is a demonstration.
dbsCurrent.TableDefs.Delete tdfRoyalties.Name
dbsCurrent.Close
End Sub