Método Field2.GetChunk (DAO)
Se aplica a: Access 2013, Office 2013
Devuelve todo o una parte del contenido de un objeto Memo o Long BinaryField2 en la colección Fields de un objeto Recordset .
Sintaxis
expresión . GetChunk(Offset, Bytes)
expression Variable que representa un objeto Field2.
Parameters
Nombre |
Obligatorio/opcional |
Tipo de datos |
Descripción |
---|---|---|---|
Offset |
Necesario |
Long |
Número de bytes que se omiten antes de que se inicie la copia. |
Bytes |
Necesario |
Long |
Número de bytes que desea devolver. |
Valor devuelto
Variant
Comentarios
Los bytes devueltos por GetChunk se asignan a una variable. Utilice GetChunk para devolver una parte del valor de datos total cada vez. Puede usar el método AppendChunk para reorganizar las piezas.
Si offset es 0, GetChunk comienza a copiar desde el primer byte del campo.
Si numbytes es mayor que el número de bytes del campo, GetChunk devuelve el número real de bytes restantes en el campo.
Nota:
Use un campo Memo para texto y coloque datos binarios solo en campos binarios largos . Si lo hace, se producirán resultados no deseados.
Ejemplo
En este ejemplo se utilizan los métodos AppendChunk y GetChunk para rellenar un campo de objeto OLE con datos de otro registro, 32 K cada vez. En una aplicación real, se podría utilizar un procedimiento como éste para copiar un registro de empleado (incluida la foto del mismo) de una tabla a otra. En este ejemplo, el registro simplemente se vuelve a copiar en la misma tabla. Tenga en cuenta que todas las operaciones con fragmentos de campo se producen dentro de una sola secuencia AddNew-Update.
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