Field2.GetChunk-Methode (DAO)
Gilt für: Access 2013, Office 2013
Gibt den gesamten Oder einen Teil des Inhalts eines Memo - oder Long BinaryField2-Objekts in der Fields-Auflistung eines Recordset-Objekts zurück.
Syntax
Ausdruck . GetChunk(Offset, Bytes)
Ausdruck Eine Variable, die ein Field2-Objekt darstellt.
Parameter
Name |
Erforderlich/optional |
Datentyp |
Beschreibung |
---|---|---|---|
Offset |
Erforderlich |
Long |
Die Anzahl von zu überspringenden Bytes, bevor das Kopieren gestartet wird. |
Bytes |
Erforderlich |
Long |
Die Anzahl von Bytes, die zurückgegeben werden sollen. |
Rückgabewert
Variant
Hinweise
The bytes returned by GetChunk are assigned to variable. Use GetChunk to return a portion of the total data value at a time. You can use the AppendChunk method to reassemble the pieces.
Wenn offset 0 ist, beginnt GetChunk mit dem Kopieren ab dem ersten Byte des Felds.
Wenn Numbytes größer als die Anzahl der Bytes im Feld ist, gibt GetChunk die tatsächliche Anzahl der verbleibenden Bytes im Feld zurück.
Hinweis
[!HINWEIS] Verwenden Sie ein Memo-Feld für Text, und schreiben Sie binäre Daten nur in Felder des Typs Long Binary. Andernfalls erzielen Sie unerwünschte Ergebnisse.
Beispiel
In diesem Beispiel werden die Methoden AppendChunk und GetChunk verwendet, um ein OLE-Objektfeld mit Daten aus einem anderen Datensatz zu füllen (immer jeweils 32 KB). In einer echten Anwendung kann es sinnvoll sein, mit einer Prozedur wie dieser einen Mitarbeiterdatensatz (inklusive Foto des Mitarbeiters) von einer Tabelle in eine andere zu kopieren. In diesem Beispiel wird der Datensatz einfach wieder in dieselbe Tabelle kopiert. Beachten Sie, dass die gesamte Bearbeitung des Abschnitts innerhalb einer einzelnen AddNew-Aktualisierungssequenz erfolgt.
Sub AppendChunkX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim rstEmployees2 As Recordset
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Open two recordsets from the Employees table.
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees", _
dbOpenDynaset)
Set rstEmployees2 = rstEmployees.Clone
' Add a new record to the first Recordset and copy the
' data from a record in the second Recordset.
With rstEmployees
.AddNew
!FirstName = rstEmployees2!FirstName
!LastName = rstEmployees2!LastName
CopyLargeField rstEmployees2!Photo, !Photo
.Update
' Delete new record because this is a demonstration.
.Bookmark = .LastModified
.Delete
.Close
End With
rstEmployees2.Close
dbsNorthwind.Close
End Sub
Function CopyLargeField(fldSource As Field2, _
fldDestination As Field2)
' Set size of chunk in bytes.
Const conChunkSize = 32768
Dim lngOffset As Long
Dim lngTotalSize As Long
Dim strChunk As String
' Copy the photo from one Recordset to the other in 32K
' chunks until the entire field is copied.
lngTotalSize = fldSource.FieldSize
Do While lngOffset < lngTotalSize
strChunk = fldSource.GetChunk(lngOffset, conChunkSize)
fldDestination.AppendChunk strChunk
lngOffset = lngOffset + conChunkSize
Loop
End Function