Field.AppendChunk メソッド (DAO)

適用先: Access 2013、Office 2013

文字列式から Recordset のメモ型 (Memo) またはロング バイナリ型 (Long Binary) の Field オブジェクトにデータを追加します。

構文

式 。AppendChunk(Val)

式Field オブジェクトを表す変数です。

パラメーター

名前

必須かどうか

データ型

説明

Val

必須

バリアント型

Field オブジェクトに追加するバリアント型 (Variant) (文字列型 (String) サブタイプ) の式または変数です。

注釈

AppendChunk メソッドと GetChunk メソッドを使用して、Memo フィールドまたは Long Binary フィールドのデータのサブセットにアクセスします。

この 2 つのメソッドを使用すると、Memo フィールドと Long Binary フィールドを操作する際に文字列のスペースを確保できます。 コピーなどの一部の操作では、一時的な文字列が使用されます。 文字列領域が制限されている場合は、フィールド全体ではなく、1 つのフィールドをいくつかのブロックに分けて操作する必要があることがあります。

AppendChunk の使用時にカレント レコードがない場合は、エラーが発生します。

注:

Edit メソッドまたは AddNew メソッドの呼び出し後の AppendChunk の最初の操作では、既存のデータを上書きしてフィールドにデータを配置するだけです。 同じ Edit または AddNew のセッションのその後の AppendChunk の呼び出しでは、既存のデータに追加されます。

例

次の使用例では、 AppendChunk メソッドと GetChunk メソッドを使用して、別のレコードからのデータを一度に 32K ずつ読み込んで OLE オブジェクトのフィールドに設定します。 実際のアプリケーションでは、たとえば、社員レコード (社員の写真を含む) をあるテーブルから別のテーブルにコピーするときに、このようなプロシージャを使用します。 この使用例では、単にレコードを同じテーブルにコピーしています。 すべてのブロック操作は、1 つの 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