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