Applies To Field object.
Description
Appends data from a string expression to a Memo or Long Binary Field object in a Recordset.
Syntax recordset! field.AppendChunk source The AppendChunk method syntax has these parts.Part | Description |
recordset | An object variable that represents the Recordset object containing the Fields collection. |
field | An object variable that represents the name of a Field object whose Type property is set to dbMemo (Memo), dbLongBinary (Long Binary), or the equivalent. |
source | A Variant (String subtype) expression or variable containing the data you want to append to the Field object specified by field. |
Remarks You can use the AppendChunk and GetChunk methods to access subsets of data in a Memo or Long Binary field.
You can also use these methods to conserve string space when you work with Memo and Long Binary fields. Certain operations (copying, for example) involve temporary strings. If string space is limited, you may need to work with chunks of a field instead of the entire field. If there is no current record when you use AppendChunk, an error occurs. NotesSub 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
Example (Microsoft Access)
The following example appends data to the Notes field for each record in an Employees table. The data type of the Notes field is Memo. The procedure returns the contents of the field by using the GetChunk method, adds to the data, and appends the altered data back to the Notes field by using the AppendChunk method.
Sub AddToMemo()
Dim dbs As Database, rst As Recordset
Dim fldNotes As Field, fldFirstName As Field
Dim fldLastName As Field
Dim lngSize As Long, strChunk As String
' Return reference to current database.
Set dbs = CurrentDb
' Create table-type Recordset object.
Set rst = dbs.OpenRecordset("Employees")
' Return references to Field objects.
Set fldNotes = rst!Notes
Set fldFirstName = rst!FirstName
Set fldLastName = rst!LastName
' Loop through all records in recordset.
Do Until rst.EOF
' Check if data exists in Notes field.
If IsNull(fldNotes.Value) Then
' If no data, use AppendChunk method only.
strChunk = fldFirstName _
& " " & fldLastName & " is an excellent employee."
With rst
.Edit
!Notes = strChunk
.Update
.MoveNext
End With
Else
lngSize = Len(fldNotes)
' Use GetChunk to retrieve existing data.
strChunk = fldNotes.GetChunk(0, lngSize)
' Alter data.
strChunk = strChunk & " " & fldFirstName _
& " " & fldLastName & " is an excellent employee."
With rst
.Edit ' Enable editing.
!Notes = "" ' Initialize field.
!Notes.AppendChunk strChunk ' Append altered data.
.Update ' Save changes.
.MoveNext ' Move to next record.
End With
End If
Loop
rst.Close
Set dbs = Nothing
End Sub