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