Compartilhar via


Método Field.GetChunk (DAO)

Aplica-se ao: Access 2013, Office 2013

Devolve todo ou uma parte do conteúdo de um objeto Memo ou Campo Binário Longo na coleção Campos de um objeto Conjunto de registos.

Sintaxe

expressão . GetChunk(Offset, Bytes)

expressão Uma variável que representa um objeto de Campo.

Parâmetros

Nome

Necessária/opcional

Tipo de dados

Descrição

Offset

Obrigatório

Long

O número de bytes a serem ignorados antes da cópia começar.

Bytes

Obrigatório

Long

O número de bytes que você deseja retornar.

Valor de retorno

Variant

Comentários

Os bytes retornados por GetChunk são atribuídos à variável. Use GetChunk para retornar uma porção do valor de dados total de cada vez. Você pode usar o método AppendChunk para remontar as peças.

Se o desvio for 0, GetChunk começa a copiar a partir do primeiro byte do campo.

Se numbytes for maior do que o número de bytes no campo, GetChunk devolve o número real de bytes restantes no campo.

Observação

[!OBSERVAçãO] Use um campo Memo para texto e coloque apenas dados binários em campos Long Binary. De outra forma, serão gerados resultados indesejados.

Exemplo

Este exemplo usa os métodos AppendChunk e GetChunk para preencher um campo de um objeto OLE com dados de outro registro, 32K de cada vez. Em um aplicativo real, convém usar um procedimento como este para copiar o registro de um empregado (inclusive a foto do empregado) de uma tabela para outra. Neste exemplo, o registro está simplesmente sendo copiado de volta para a mesma tabela. Observe que toda a manipulação das partes ocorre dentro de uma única sequência 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 Field, _ 
     fldDestination As Field) 
     
     ' 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