複数行のデータを処理する

コネクションの Fetch、Insert、Update、Remove の各メソッドでは RecordCount パラメータを使用し、一度に複数の行を操作することができます。ただし、この機能を利用するには、複数のレコードを格納できるように LCFieldlist パラメータを作成しておく必要があります。操作するレコード数はフィールドリストを作成したときのレコード数より少なくてもかまいませんが、それより多いレコードを操作することはできません。

次の例に、RecordIndexRecordCount に対する設定をいくつか示します。

Dim Records as New LCFieldlist (3, LCFIELDF_TRUNC_DATA)
Dim count As Long
Dim i As Long
...
Call connection.Fetch (Records, 1, 3)  ' fetch up to  three records
Call connection.Insert (Records, 3, 1) ' insert them
                                        'in reverse order
For i = count To 1 Step -1
  Call connection.Insert (Records, I, 1)
  Print "IName(" & I & ") = " & Records.IName(i-1)
            ' retrieve a value from the array of IName field values.
Next
注: New LCFieldlist では、2 つのパラメータはいずれもオプションで、デフォルト値はそれぞれ 1 と LCFIELDF_TRUNC_PREC です。同様に、Fetch、Insert、Update、Remove に対しても RecordIndex パラメータと RecordCount パラメータはオプションで、どちらもデフォルト値は 1 です。また、RecordIndexRecordCount を足し合わせた値 (マイナス 1) が、作成したフィールドリストのサイズを超えてはなりません。

複数の行を取得すると、フィールド (上の例では IName) に複数の値が格納されます。レコードのインデックスは 1 から始まりますが、フィールド値の配列のインデックスは 0 から始まります。そのため、結果の n 行目からフィールド値を読み取るには、Records.fieldname(n-1) と指定します。

注: 読み取る結果セットのサイズが大きい場合は、LCFieldlist.fieldname という構文は効率的ではありません。より効率的な方法については、この章の「パフォーマンス」を参照してください。ただし、どちらの場合もフィールド値は配列として返されるため、配列インデックスを指定する必要があります。