ActiveX Controls Guide (v11)

Buffer (ActiveX プロパティ)

適用対象

VAccess

説明

コントロールの現在のレコード バッファーの内容を取得または設定します。レコード バッファーは Pervasive PSQL によって取得される未加工のデータです。

構文

object.Buffer(short alignment) 

Buffer プロパティの構文は次のような要素で構成されます。

要素
説明
object
必須。VAccess オブジェクトの名前は、[適用対象]のオブジェクトを評価するオブジェクト式を表します。
alignment
必須。データのバイト アライメントを指定します。alignment に対して受け付ける値は 1、2、4、8 および 16 バイトです。

備考

データは現在のレコード バッファーから読み取られ、書き込まれます。読み取りオペレーションでは、このプロパティは現在のレコード バッファーを表すバイト配列を含む OLE Variant を返します。書き込みオペレーションでは、このプロパティは現在のレコード バッファーに書き込まれるバイト配列を含む OLE Variant を取り出します。このプロパティに対する変更は、Update メソッドまたは Insert メソッドが正常に呼び出されるまで Btrieve ファイルには保存されません。

返されるバッファーは単一レコード バッファーだけです。Stat 呼び出しの後のステータス バッファーの内容は含みませんし、Extended オペレーションの呼び出し後の Extended オペレーション レコード バッファーも含みません。この情報は、ほかのプロパティやメソッドからも利用できます(Stat、RowColumnValue、RowPosition を参照してください)。Clear メソッドはこのバッファーを消去します。

特定のプログラミング環境では、構造化された変数用に特定のバイト アライメントを使用できます。あるいは特定のバイト アライメントが必要です。アライメント パラメーターを用いて、レコード内の個別フィールドに使用するバイト アライメントを指定できます。

このプロパティは設計時には使用できません。

Public Type SAFEARRAYBOUNDS 
  cElements As Long 
  lLbound As Long 
End Type 
 
Public Type SAFEARRAY 
  cDims As Integer 
  fFeatures As Integer 
  cbElements As Long 
  cLocks As Long 
  pvData As Long 
  Bounds(0) As SAFEARRAYBOUNDS 
End Type 
 
Public Type Buffer 
  msa_desc As String * 34 
  population As Long 
  prev_population As Long 
End Type 
 
Declare Sub CopyMemory Lib "KERNEL32" Alias _ 
   "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal _ 
   ByteLen As Long) 
Declare Function VarPtrArray Lib "msvbvm50.dll" Alias_ 
   "VarPtr" (Ptr() As Any) As Long 
 
Public Sub ReadData() 
  Dim i as integer 
  Dim dataArray() as Buffer 
  Dim byteArray() as Byte 
 
  VAccess1.Open 
  VAccess1.GetFirst 
   
  Redim dataArray(VAccess1.TotalRecords) 
   
  For i = 0 to VAccess1.TotalRecords-1 
    ByteArray = VAccess1.Buffer(4) 
    DataArray(i) = GetBuffer(byteArray) 
    VAccess1.GetNext 
  Next i 
End Sub 
 
Public Function GetBuffer(bufferArray() As Byte) _
as Buffer 
  Dim status As Integer 
  Dim saPtr As Long 
  Dim saStruct As SAFEARRAY 
  Dim record as Buffer 
   
  'SAFEARRAY の構造体のアドレスを取得する 
  CopyMemory saPtr, ByVal VarPtrArray(bufferArray),_ 4 
  'SAFEARRAY の構造体をコピーする 
  CopyMemory saStruct, ByVal saPtr, Len(saStruct) 
  'データ配列を構造体にコピーする 
  CopyMemory record, ByVal saStruct.pvData, 
BufferSize(saStruct) 
 
  GetBuffer = record 
End Function 

関連項目

影響元:Clear、GetDirect、GetEqual、GetGreaterOrEqual、GetLessOrEqual、GetFirst、GetPrevious、GetNext、GetLast、StepFirst、StepPrevious、StepNext、StepLast、Percentage


AutoOpen (ActiveX プロパティ)

CacheRejectMax (ActiveX プロパティ)