Compartir a través de


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