使用方法
data_string = orafield.GetChunk(offset, numbytes) data_string = orafield.DbGetChunk(offset, numbytes)
備考
GetChunk
メソッドは、通常、ローカル・キャッシュから指定されたバイト数を取り出します。キャッシュでデータが見つからない場合、GetChunk
メソッドはそれをデータベースに要求します。ダイナセット内のすべてのフィールド(LONGまたはLONG
RAW
型のフィールドを除く)からデータが取り出されて、一貫性検査のためにキャッシュされている値と比較されます。最後のフェッチ後に変更があった場合、GetChunk
メソッドは操作を停止し、エラーが発生してNull
文字列が戻されます。
LONG
またはLONG
RAW
型のフィールドが65280バイト未満の場合は、GetChunk
メソッドを使用せずにValue
プロパティを使用すると、データを速く取り出すことができます。GetChunk
メソッドは、別名を付けたLONG
またはLONG
RAW
型のフィールドには使用できません。
「LONG RAWからLOBまたはBFILEへの移行」を参照してください。
例
この例では、GetChunk
メソッドを使用してデータベース内のLONG
RAW
型の列を取り出し、ファイルとして保存する方法を示します。この例では、longraw
という列を含んだ表を示すOraDynaset
という有効なダイナセットが存在していると想定しています。このコードをコピーして、フォームの定義セクションに貼り付けてください。このプロシージャは、有効なファイル名を使用してコールしてください。
Sub GetChunkExample (FName As String) 'Declare various variables Dim CurSize As Integer, ChunkSize As Long Dim I As Integer, FNum As Integer, CurChunk As String 'Set the size of each chunk ChunkSize = 10240 frmChunk.MousePointer = HOURGLASS 'Get a free file number FNum = FreeFile 'Open the file Open FName For Binary As #FNum I = 0 'Loop through all of the chunks. Oracle does not return the size of columns > ' 64KB. We should loop until the length of our block is less than we asked for. Do CurChunk = OraDynaset.Fields("LONGRAW").GetChunk(I * ChunkSize, ChunkSize) CurSize = Len(CurChunk) 'Get the length of the current chunk. Put #FNum, , CurChunk 'Write chunk to file. I = I + 1 Loop Until CurSize < ChunkSize 'Close the file. Close FNum frmChunk.MousePointer = DEFAULT End Sub