Partager via


Field.GetChunk, méthode (DAO)

S’applique à : Access 2013, Office 2013

Retourne tout ou partie du contenu d’un objet Memo ou Long BinaryField dans la collection Fields d’un objet Recordset .

Syntaxe

expression . GetChunk(Offset, Bytes)

expression Variable qui représente un objet Field.

Paramètres

Nom

Obligatoire/facultatif

Type de données

Description

Offset

Obligatoire

Long

Nombre d'octets à ignorer avant que la copie ne commence.

Octets

Obligatoire

Long

Nombre d'octets que vous souhaitez renvoyer.

Valeur renvoyée

Variant

Remarques

Les octets renvoyés par GetChunk sont affectés à une variable. Utilisez GetChunk pour renvoyer une partie de la valeur totale des données à la fois. Vous pouvez avoir recours à AppendChunk pour reconstituer les différentes parties.

Si offset a la valeur 0, GetChunk commence la copie à partir du premier octet du champ.

Si numbytes est supérieur au nombre d’octets dans le champ, GetChunk renvoie le nombre réel d’octets restants dans le champ.

Notes

[!REMARQUE] Utilisez un champ de type Memo pour du texte et placez les données binaires uniquement dans des champs de type Long Binary. Sinon, vous n'obtiendrez pas les résultats escomptés.

Exemple

Cet exemple utilise les méthodes AppendChunk et GetChunk pour remplir un champ d'objet OLE avec des données issues d'un autre enregistrement, 32 Ko à la fois. Dans une vraie application, vous pouvez utiliser une procédure similaire pour copier la fiche d'un salarié (photo comprise) d'une table à une autre. Dans cet exemple, la fiche est simplement copiée dans la même table. Notez que toute la manipulation des segments se passe dans une seule séquence 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