Freigeben über


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